CAN 总线入门教程(2)——CAN Message
CAN协议使用的是短消息,最大的实用字节为94bits,消息中没有特定的地址信息,但是,CAN总线的信息是contented-addressed,也就是说,CAN信息中已经暗示了地址的信息。
信息帧格式:
1)数据帧(Data Frame)
2)远程帧(Remote Frame)
3)错误帧(Error Frame)
4)过载帧(Overload Frame)
一)数据帧(Data Frame)
数据帧是最常用的信息帧,它由以下几个主要部分构成(因为是简单介绍所以省略了一部分内容)
1)Arbitration Field, 当2个或以上的节点在总线上时,它决定了信息的优先级,Arbitration Field包括了:
i) CAN 2.0A, 11-bit Identifier 和 1 bit 的RTR bit,RTR bit 在数据帧中起了主导作用
ii)CAN 2.0B, 29-bit Identifier (包含SRR位和IDE位),1 bit的RTR bit
2)Data Field,包含0到8 bytes 的数据
3)CRC Field,包含15 bits 的校验(checksum),这个校验也用来检测error
4)ACK slot, 成功接收CAN信息的控制器会在信息的最后添加一位ACK bit发送出去,发射器会检测ACK bit是否存在,如果没有,则重新发送一遍信息。
注1)ACK bit的存在并不意味着所有需要的节点都接收到了信息,可以确定的只是1个或2个以上的节点接收到了信息;
注2)Identifier并不是按照字面意思,确认信息内容(只是一个名称)
Control field is not mentioned in this part for the sake of brevity
\
二)远程帧(Remote Frame)
远程帧和数据帧几乎相同,除了以下两点:
1)它明确的被标记为 Remote Frame(Arbitration Field 的 RTR 位 是隐性receissive);
2)它没有数据区(Data Field)
远程帧的目的是为了响应相应数据帧的传输。例如,A节点发送字节仲裁字段为234的远程帧,那么如果B节点初始化正确的话,可能也会用仲裁字段为234的数据帧回应。