怎样测CAN的波特率

2020-02-09 11:42发布

请问各位高手
现在遇到一个问题,手头有块板子要和别的设备进行CAN通讯
不过对方CAN通讯的波特率不固定,需要在通讯中板子直接检测对方设备波特率,然后让PIC单片机的选择相应波特率。
如有遇到的请指点下 谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
16条回答
yyccaa
2020-02-10 23:44
“对方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)

一周热门 更多>