打印

CAN通信标准帧和扩展帧

[复制链接]
3038|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tomyoct|  楼主 | 2019-3-31 11:09 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
CAN接口兼容规范2.0A和2.0B(主动),位速率高达1兆位/秒。它可以接收和发送11位标识符的标准帧,也可以接收和发送29位标识符的扩展帧。
扩展帧的仲裁域有29位,可以出现2^29中报文,且在数据链路上是有间隙的(对操作者透明)。
标准帧的仲裁域是连续的11位,可以出现2^11种报文;
控制帧中的DLC(数据长度)完全相同,但保留位不同,标准帧IDE、R0,扩展帧R1、R0,必须以显性电平发送(由数据链路层操作),对程序员透明;
其它的都一模一样,所以,其实CAN标准帧和扩展帧只是在ID的长度上不一样,以能扩展更多的CAN节点,更好地支持上层协议而已。
注意:这里的帧ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级(帧ID值越小,优先级越高,最小是0x00000000)。


使用特权

评论回复
沙发
tomyoct|  楼主 | 2019-3-31 11:10 | 只看该作者
标准帧:

使用特权

评论回复
板凳
tomyoct|  楼主 | 2019-3-31 11:10 | 只看该作者
扩展帧:

使用特权

评论回复
地板
LM莫| | 2019-3-31 11:15 | 只看该作者
支持下,谢谢分享!

使用特权

评论回复
5
acq| | 2019-10-28 15:08 | 只看该作者
你好,楼主急切的需要你的扩展帧源码,是用套接字写的吗

使用特权

评论回复
6
lvben5d| | 2019-10-29 08:03 | 只看该作者
帧ID 从原理上来说,还是理解为接收器的地址是最合理的,只不过由于CAN总线的硬件电气设计导致了,这个ID顺带可以变成仲裁包优先级的能力,这样的好处是硬件上就可以避免多个设备在总线上发数据包导致总线混乱的情况,从而不会导致因为冲突时刻而丢包,比如RS485这种半双工的,2个ID一起发,如果硬件不设计回环模式,基本就不知道发的对错了。
帧ID 最终的作用 还是CAN总线上标记各个不同CAN设备。所以他应该还是个地址。当然,你可以利用CAN2.0A可怜的最多8字节的某几个字节作为地址区分,就会导致设备都要接收所有总线数据包(而浪费了CAN的滤波ID功能)程序就会不断进CAN接收中断哦。这样跟原来设计的初衷不太符了。CAN2.0B貌似可以一次64个字节了吧? 没用过

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

232

帖子

0

粉丝