Configuring a wrong bit-rate for a CANopen device is a critical issue. Depending on the data stream stuff-bit, CRC,
form or acknowledgement error occurs and the CANopen device will signal this by transmitting an error frame.
The process of error detection and signaling stops, when the device with the incorrect bit-rate goes into bus-off state.
给楼主一篇CiA的文章,Automatic Baudrate Detection in CANopen Networks
点击此处下载 ourdev_536170.pdf(文件大小:165K) (原文件名:Automatic Baudrate Detection in CANopen Networks.pdf)
------------------------------------------------------------------------------------
不能用发送进行测试的,那样会干扰总线的正常发送,即使你使用了正确的波特率发送,也额外增加了总线的通信负载,所以应该用接收/监听来确认波特率(监听模式更好,连错误帧都不会发送),因为总线波特率一般是唯一的。
CiA上有段说明的(http://www.can-cia.org/index.php?id=409):
Configuring a wrong bit-rate for a CANopen device is a critical issue. Depending on the data stream stuff-bit, CRC,
form or acknowledgement error occurs and the CANopen device will signal this by transmitting an error frame.
The process of error detection and signaling stops, when the device with the incorrect bit-rate goes into bus-off state.
给楼主一篇CiA的文章,Automatic Baudrate Detection in CANopen Networks
点击此处下载 ourdev_536170.pdf(文件大小:165K) (原文件名:Automatic Baudrate Detection in CANopen Networks.pdf)
是可以的。
最小脉宽也不一定就是一次高电平的持续时间吧?
对7楼的方法,相对容易实现,但是8楼又说不可取,8楼所说的接受/监听,可怎么实现呢,如果对方设备的CAN一直不发数据,怎么接受呢?
不知我这样理解对不对,刚加入工作就遇到难题,请各位帮帮忙 谢谢
如果对方是按照常见波特率设置的话,数量是有限的,一般总是参照广泛使用的can协议(CANOpen,DeviceNet,J1939)所用的那几种波特率。
我上面发的文档里,也就8种,其它协议和CANOpen规定的波特率应该大部分是重复的。
当然如果对方设计者比较bt,喜欢用自定义冷门的波特率,那就只能靠位时间检测了(先询问对方一下,看他的设备可配置几种波特率,can的物理层部分还是比较复杂的,尽量避免位时间检测这种比较费力的做法,工作中和合作方经常沟通是必要的)。
关于“对方设备的CAN一直不发数据”,那你首先得获得对方的通信协议(否则你怎么和对方通信?),看协议或询问对方运行时是否会发数据。如果对方是只接收,那你只能通过发送的成功失败来判断了。
上面我发的那文章中也提到用定时器检测IO的位时间方法,相关的那篇Infineon的应用手册:点击此处下载 ourdev_536294.pdf(文件大小:93K) (原文件名:ap2902510_CAN Baudrate Detection with Infineon CAN devices.pdf)
一周热门 更多>