了解CAN矩阵的通信格式(Motorola为主),并将信号通过USBCAN发送出去

做测试的小伙伴估计都是“土豪”了,我为什么这么说呢,基本上做汽车测试都有较为方便的测试工具,比如CANoe,SPY3,PCAN等工具,这类工具可直接解析DBC并发送解析后信号,对测试以及其他人员来说太方便了。

但是,我万万没想到USB-CAN运用也这么广泛,USB-CAN基本上用过的都知道,弊端太大了,对于测试工程师来说就是拿着“大刀”去打仗,但这个工具唯一的好处就是便宜,几百块就可以买个,对于近十万的CANoe来说便宜太多了,就算对于两千多的PCAN 也有非常大的价格优势。而且usb-can基本上满足信号的监控,收发等操作,难点就是发送时采用的是原始的16进制数据,好多小伙伴估计不是很清楚如何发送。

问题来了:如何去了解厂商的CAN通讯格式,以及如何将信号转化为16进制的信号发送出去呢? 请看下文


一:了解厂商CAN矩阵运用的通信格式

目前市面上运用的通讯格式为Intel格式摩托罗拉格式(Motorola),今天就大概讲下Motorola格式的运用(我见到的基本上都是Motorola格式)。

Motorola格式有两种表达方式,一种是Motorola_LSB,另一种是Motorola_MSB。至于自己厂商用的哪种表达方式请看CAN矩阵或dbc即可。

Motorola格式就是,低地址代表高字节,高地址代表低字节

CAN报文每个报文可包含8Byte的字节数据域,在报文内数据的字节序和位序如下:
字节序:Byte0、Byte1、Byte2、Byte3、Byte4、Byte5、Byte6、Byte7
位序:bit7、bit6、bit5、bit4、bit3、bit2、bit1、bit0

CAN报文数据域传输顺序
字节顺序:先传Byte0,最后传Byte7;
字节内位序:先传bit7,最后传bit0;

重点来了,讲个例子

1.Motorola_LSB排列格式
46这个数字,换为二进制为:101110,长度为6个bit
如果起始位为20的话,那么格式如下图:
在这里插入图片描述
对应的USB-CAN外发的数据为:00 02 E0 00 00 00 00

2.Motorola_MSB排列格式
46这个数字,换为二进制为:101110,长度为6个bit
如果起始位为20的话,那么格式如下图:
在这里插入图片描述
对应的USB-CAN外发的数据为:00 00 17 00 00 00 00

二:简单讲下对CAN矩阵实践发送信号的流程

1.查看厂商的通信格式,如下如的排列格式为Motorola_LSB格式,信号长度,起始位都写的很清楚,具体的信号在后面,我就不贴了。
在这里插入图片描述

2.根据上图中的起始位以及信号长度,还有要发送的数据信号,按照Motorola_LSB格式进行换算,通过下图的数据格式发送出去即可。
在这里插入图片描述

以上就是我对通讯格式的一些理解,如有不正之处欢迎小伙伴们指出
该篇文章主要为买了USB-CAN的小伙伴们提供下发送思路,小伙伴们如果买的是USB-CAN,运用换算格式基本上满足数据的发送。

  • 25
    点赞
  • 154
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值