CAN总线知识总结
发布时间:2024-04-17 16:19:40 人气:51
01报文
报文是以帧(Frame)的格式发送,每帧又有七个部分:
起始段(Start Of Frame-SOF):1bit ;
仲裁段(Arbitration Field):12bits或30bits。包含标识符位(Identifier field-ID)和远程发送请求位(Remote Transfer Request-RTR)。
控制段(Control Field):6 bits。扩展标识符位(Identifier Extension bit-IDE,1 bit);保留位0(Reseved bit0-r0,1 bit);数据长度编码位(Data Length Code-DLC,4 bits)。
数据段(Data Field):发送数据的内容,最多8个字节。
循环校验段(CRC Field):包括循环校验序列(CRC Sequence)15bits (用于校验传输是否正确)和界定符(Delimiter,DEL)1bit(表示循环校验序列的结束)。
确认段(ACK Field):包括确认位(ACK SLOT)1 bit(节点收到正确的CRC序列时,发送端的ACK位被置位) 和界定符(Delimiter,DEL)1 bit(隐性信号)。
结束段(End of Frame-EOF):7 bits,隐性信号,表示帧的结束。
Frame
DLC的编码规则:表示该帧实际发送的数据的长度(以字节为单位)
CAN总线的标准帧和扩展帧主要决定帧ID的长度,标准帧的帧ID长度是11位,帧ID的范围是000-7FF。扩展帧的帧ID长度是29位,帧ID的范围是0000 0000-1FFF FFFF。
CANopen帧ID最多是11位的,因此是标准帧;而SAE 1939协议通常是18XX XXXX的帧ID,是29位的,因此是扩展帧。
区别是仲裁段与控制段有所不同:
仲裁段包括五个部分:
基本标识符位(Base identifier-Base ID),11 bits,与标准格式的标识符相同;
替代远程请求位(Substitute Remote Request Bit,SRR),1 bit,隐性信号;
扩展位(Identifier Extension bit,IDE),1 bit,标识扩展帧还是标准帧;
扩展标识ID位(Extended Identifier, Extended ID),18 bits,存放扩展标识ID;
远程发送请求位(Remote Transmission Request,RTR),1 bit,数据帧中为显性信号,远程帧中为隐性信号;
控制段:6 bits,与标准帧不同的是:用保留1(r1)取代了标准帧的IDE,r0和DLC是一样的;也就是说,扩展帧有两个保留位r1 和r0,这两个保留位均需要发送显性信号。
02 CAN ID
CAN ID 和 CAN 报文的关系:CAN ID是CAN报文的组成部分,穿插在CAN报文中,具体如下图,解析报文时用到的主要是帧ID和数据两部分。
下蓝色框中29位 CAN ID,红色框为8字节的数据
ID是赋给帧的,不是直接给节点的。在CAN协议里,报文的标识符不代表节点的地址,而是跟报文的内容相关的。因此,发送者以广播的形式把报文发送给所有的接收者。节点在接收报文时,根据标识符(CAN ID)的值决定软件是否需要该报文;如果需要,就拷贝到SRAM里;如果不需要,报文就被丢弃且无需软件的干预。
CAN总线ID作用
1、主要用作CAN总线的仲裁使用,所以一般来说网络上的每个节点(向总线上发送)的ID应该有所不同。ID值越低,报文优先级越高,在两组不同ID报文同时上线时候,仲裁机制使得ID值低的占用总线,ID值高的退出。
2、ID域可以是11位和29位,其值和含义可以由用户自定义,可以用作高层协议的管理,比如CANopen等协议中把ID的部分做为“源地址”,部分作为“目的地址”,这样CAN报文从哪来到哪去都清晰了。
3、ID的另一个作用是配合接收方滤波使用,就是说一般接收的滤波器可以设定接收ID的范围等,用于过滤掉不需要接收的信息,减轻CPU的处理负担。
远程帧与数据帧的区别
远程帧和数据帧区别是远程帧的RTR位为1,且没有数据段。远程帧的作用是发送特定的CAN ID(注意不是向特定的CAN ID发送),然后对应的ID的CAN节点收到远程帧之后,自动返回一个数据帧。
03 CAN总线负载计算
例:假设CAN总线波特率为1M Baud,总线发送时间间隔为10ms,报文为数据帧(8个字节数据),那么10ms内总线能够支持的最大报文数量是多少?
第一步:根据通讯波特率计算10ms总共可以发送多少bit
(1000000/1000)*10=10000bit
第二步:计算最长的一帧报文有多少bit
1sof + 29id + 1lde + 1rtr + 1ssr + 2r + 4dlc + 8*8data + 16crc + 2ack + 7eof = 128bit
第三步:计算10ms内可以支持的报文数目
10000/128 = 78
当10ms间隔的报文数超过78条时就会出现丢帧,总线饱和。
CAN总线负载率一般要求在30%左右。
我们的宗旨
我们专注于此,
并全身心的投入其中,
愿意汇“智”,更愿意“慧(惠)”众!
我们提供新能源汽车系统化理实结合的技术培训方案。
——感谢选择我们的汽修精英!
我们提供从教师执教到学生就业等的全过程教育方案。
——感谢选择我们的职业院校!
我们提供工艺标准、保障完整、客户满意的解决方案。
——感谢选择我们的相关企业!
我们倡导品学兼优,创新发展,诚意汇智,真心慧众。
——感谢选择我们的合作伙伴!
我们与您携手营造中国新能源汽车技术第一品牌的愿景。
——感谢选择我们的各界朋友!
咨询电话:
18518951802(微信同号)
E-mail:
train@bjhzhz.com
bjhzhz@vip.163.com
关注“汇智易学”公众号 免费获取更多新能源汽车课程资源 文章来源于网络,如有侵权请联系删除