读取CAN数据库 转换成16进制 标准数据

您所在的位置:网站首页 进制转换数字怎么设置 读取CAN数据库 转换成16进制 标准数据

读取CAN数据库 转换成16进制 标准数据

2024-07-13 04:12| 来源: 网络整理| 查看: 265

读取CAN数据库 转换成16进制 标准数据 背景数据编码格式CAN 数据矩阵如何转换

背景

当你在工作中,你只获得了CAN DB 文件,或者通信文档 当你在工作中,又缺少像CANoe 这种高大上的工具的时候 当你需要简发送信号的时候, 当你手头只有收发器时候, 此时你需要知道如何将信号转换成标准 CAN 数据信号 发送给机器 那么今天我们要做的就是这个任务

数据编码格式

CAN 数据的编码格式有两种 ,一种是 英特尔的格式 ,另外一种是摩托罗拉的格式 英特尔格式在编码时,如果遇到跨字节的情况就会显得比较不顺序 在这里插入图片描述 官方解释如下: 该信号的高位(S_msb)将被放在高字节(MSB)的高位,信号的低位(S_lsb)将被放在低字节(LSB)的低位。这样,信号的起始位就是低字节的低位。对于一个信号的数据长度不超过一个字节,但是采用跨字节方式实现的这种情况,因其对信号解析和编码以及信号完整性都存在不利因素,所以主机厂在定义某一车型(系)的整车通信矩阵时,不太可能设计出这种编码结构。

此时我们来看摩托罗拉格式的 在这里插入图片描述 嗯,是按顺序来的 ,所以本文只讨论摩托罗拉格式,直接有效,车厂都用的这种格式

CAN 数据矩阵

下面来了解CAN 数据矩阵,如下图所示 在这里插入图片描述 我们再来看下机器可识别的标准CAN 数据 分为帧ID 和数据, 一个字节 有 8 位

在这里插入图片描述

帧ID 是定义的,我们单纯对比矩阵与数据来看下 ,下图蓝色区域为数据场编号 在这里插入图片描述

一个字节 对应两个 xx ,所以 每个字节前四位对应 一个 x ,不要考虑编号 理解此处,转换无忧

如何转换

首先要根据相关文档,知道某个信号的起始位是多少,长度是多少 我们此处假设起始位 为 45 长度为 3 然后同样需要阅读相关文档,知道定义的值是多少 , 假设文档定义 0X02 为 OFF 0x03 为ON 假设我们要发送ON 的信号 在这里插入图片描述 图中绿色是我们要发送的数据, 0X03 是16进制,我们要转换成二进制填入字节6 ,3 十六进制转 二进制位 11 我们有三个长度位 ,11 是两个,所以前面数据补0 所以字节6 最后的数据是 0 1 1 0 0 0 0 0 最后我们要把字节6 转换成两个 xx , 二进制0110 转换成 16 进制 是 6 0000 二进制转16 还是0 ,所以我们知道此字节的数据是 60 所以我们最后用CAN 收发器发送数据 00 00 00 00 00 60 00 00 以此类推 需要什么你就转什么 妈妈再也不担心你没有CANoe 了



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3