Loto实践干货(3) 测量CAN总线通讯数据

最近在做运动控制卡的项目,调试样机的过程中,需要验证can总线通讯功能的正确性。以前只限于理论上认识can总线,使用的canbus的通讯卡也是有上位机例程,基本上简单地配置上位机软件就可以正常工作了。这次调试需要深入测试can接口的通讯过程,正好把之前的对can的认识再复习深化一下。
之所以采用can总线,是因为它只需要两根双绞线就可以连接多个通讯节点,并且可以传输相对远的距离,在工业现场抗干扰能力也很强。下图是我按照can总线的要求做的一条双绞线,黄色和绿色分别是can_high线和can_low线。要求绞距20mm,不绞合的距离不超过50mm。
规定的双绞线传输距离与can总线的传输速率的关系如下表。我们的传输距离很短,所以可以采用很高的传输速率。即便是采用最高的传输速率,以osc802示波器的25m带宽,也是足够调试用的。
位速率  bit/s 总线长度  m
1 1m 30
2 800k 50
3 500k 100
4 250k 250
5 125k 500
6 62.5k 1000
7 20k 2500
8 10k 5000
下图是我设计驱动控制板的can通讯接口部分的原理图,使用sn65hvd230收发器:
打样后的运动控制板是这样的:
使用loto的usb示波器osc802对can通讯的信号进行捕捉,抓取数据进行解析判断。
使用usb示波器osc802的单次触发功能,很轻松对can总线上的电平信号进行了捕捉。不过我们现在还看不懂它,需要对can的电平逻辑和传输协议有所了解。
没有收发信号时,两条导线上的电平相同(大约2.5v)。这种电平状态为隐形状态,也称之为隐性电平,即为逻辑1。有信号时,can_h导线的电平升高至少1v;而对应的can_l导线电平降低同样值,这种电平状态为显形状态,也称之为显性电平,即为逻辑0。5v和3.3v的can收发器的逻辑电平会稍有不同。
我们通过程序发出一串can数据后,用osc802捕捉到的波形如下:
根据波形进行数据解码需要注意的有两点:
1:在can协议中将can_h和can_l的差值为高电平时定义为显性,逻辑上表示为0,为低电平时定义为隐性,逻辑上表示为1。
2:在can的协议中当连续出现5个显性时就需要插入一个隐性。
can的标准帧和扩展帧协议格式:
所以,波形数据解读为:
图中被红色斜线划掉的为can协议有意在5个连续显性后面加的单个隐性位,所以去掉。所以,通过usb 示波器 osc802抓取到的数据为:
00000000000011000001001100010100000001010101011110011010001111100000111101111
id srr   id   dlc crc
0 00000000000 1 1 000001001100010100 000 0010 000111110000011
这个数据帧发出的数据为:
1010101111001101 
0xab, 0xcd
解析结果与上位机收发的结果互相验证正确,所以此次运动控制板的can接口功能调试成功完成。

火星车的腹部首次携带了火星直升机
工业圆形连接器如何确定何种连接方式
GRB系列模块电源概述及特点
TE Connectivity(TE) 推出M3200压力变送器
经纬恒润AUTOSAR成功适配国芯科技国产车规级芯片
Loto实践干货(3) 测量CAN总线通讯数据
雷士照明:警企合作,加强打击假冒产品力度
AMD在笔记本电脑市场面临英特尔巨大压力
不同的电源环路布局
今年5G用户数预计会超过1000万,基站数量达100万个
LabVIEW的编程之道—时间和格式化字符串
FPGA器件在物联网应用程序中发展
朵唯L5Pro高清图赏
OPPOReno上手 已然成为全面屏这个难题的高分答案
WiMAX 标准下如何采用RF 芯片组?
区块链是如何脱虚向实
海尔智家、格力、美的实力对比,把家电科技产出摆出来
澳大利亚国立大学研究人员开发了一种新型夜视技术
2019年是5G大规模建设前的空档期
为什么魅族手机能在华为和小米的双层夹击中生存下来?