STM32
登录
直播中
张玲
7年用户
1230经验值
私信
关注
[问答]
如何去测试CAN接口通讯功能的正确性呢
开启该帖子的消息推送
CAN
接口
控制板
如何去测试CAN接口通讯功能的正确性呢?
怎样去设计驱动控制板的CAN通讯接口部分呢?
回帖
(1)
张磊
2021-11-9 09:27:20
最近在做运动控制卡的项目,调试样机的过程中,需要验证CAN总线通讯功能的正确性。以前只限于理论上认识CAN总线,使用的CANbus的通讯卡也是有上位机例程,基本上简单地配置上位机软件就可以正常工作了。这次调试需要深入测试CAN接口的通讯过程,正好把之前的对CAN的认识再复习深化一下。
之所以采用CAN总线,是因为它只需要两根双绞线就可以连接多个通讯节点,并且可以传输相对远的距离,在工业现场抗干扰能力也很强。下图是我按照CAN总线的要求做的一条双绞线,黄色和绿色分别是CAN_High线和CAN_Low线。要求绞距20mm,不绞合的距离不超过50mm。
规定的双绞线传输距离与CAN总线的传输速率的关系如下表。我们的传输距离很短,所以可以采用很高的传输速率。即便是采用最高的传输速率,以OSC802示波器的25M带宽,也是足够调试用的。
下图是我设计驱动控制板的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抓取到的数据为:
这个数据帧发出的数据为:
1010101111001101
0xAB, 0xCD
解析结果与上位机收发的结果互相验证正确,所以此次运动控制板的CAN接口功能调试成功完成
最近在做运动控制卡的项目,调试样机的过程中,需要验证CAN总线通讯功能的正确性。以前只限于理论上认识CAN总线,使用的CANbus的通讯卡也是有上位机例程,基本上简单地配置上位机软件就可以正常工作了。这次调试需要深入测试CAN接口的通讯过程,正好把之前的对CAN的认识再复习深化一下。
之所以采用CAN总线,是因为它只需要两根双绞线就可以连接多个通讯节点,并且可以传输相对远的距离,在工业现场抗干扰能力也很强。下图是我按照CAN总线的要求做的一条双绞线,黄色和绿色分别是CAN_High线和CAN_Low线。要求绞距20mm,不绞合的距离不超过50mm。
规定的双绞线传输距离与CAN总线的传输速率的关系如下表。我们的传输距离很短,所以可以采用很高的传输速率。即便是采用最高的传输速率,以OSC802示波器的25M带宽,也是足够调试用的。
下图是我设计驱动控制板的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抓取到的数据为:
这个数据帧发出的数据为:
1010101111001101
0xAB, 0xCD
解析结果与上位机收发的结果互相验证正确,所以此次运动控制板的CAN接口功能调试成功完成
举报
更多回帖
rotate(-90deg);
回复
相关问答
CAN
接口
控制板
汽车
CAN
总线系统
测试
——汽车车身网络系统
2015-08-11
4883
仿真缺少fpga元器件咋办
呢
?
2014-04-12
2693
请问两块不同的pcb板如何通过坐标来实现接插件的
正确性
?
2019-04-09
1442
C6678 EDC
功能
的必要
性
2018-06-21
1779
如何
去
实现一种基于MATLAB和STM32CubeMX的
CAN
通讯
呢
2021-11-18
447
CAN
总线系统
测试
技术总结的太棒了
2021-05-27
1845
怎样使用Cube和HAL库
去
实现
CAN
通讯
呢
2021-10-09
1225
请问怎样
去
设计一种
CAN
节点
测试
仪?
2021-05-12
1031
请问基于CPLD的
CAN
接口
如何
去
设计?
2021-04-28
593
怎样用CUBEMX
去
实现stm32f407zgt6的双
can
通讯
呢
2021-10-19
1053
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分