CAN 总线的报文传输是通过 4 种不同类型的帧(Frame)来表示和控制的:
• 数据帧(Data Frame) 用来在数据传输过程中携带数据。
• 远程帧(Remoter Frame) 接收器发送远程帧来请求发送器发送数据,具有和数据帧同样的标识符。
• 出错帧(Error Frame) 用来检测 CAN 总线数据传输过程中的错误。
• 超载帧(Overload Frame) 用于提供当前和后续数据帧或远程帧之间的附加延迟。
1.数据帧
数据帧的具体组成如图 9-3 所示。
数据帧由帧起始(Start of Frame,SOF)、仲裁字段、控制字段、数据字段、CRC 字段、ACK 字段(应答字段)和帧尾组成。
帧起始标志数据帧的开始(远程帧同样具有帧起始),它仅由一个显性值组成。只有在总线处于空闲时,才允许节点开始发送。所有节点必须与首先开始发送的那个节点的帧起始位前沿同步。
仲裁字段由标识符和远程发送请求位(RTR 位)组成,如图 9-4 所示。标识符的长度为 11位。远程发送请求位在数据帧中必须是显性值,在远程帧中必须是隐性值。
数据字段由数据帧中被发送的数据组成,它可以包括 0~8 个字节,每个字节 8 位。首先发送的是最高有效位。
CRC 字段包括 CRC 序列和 CRC 界定符。CRC 序列用来实现 CRC 计算,CRC 界定符只包括一个隐性值。
应答字段为两位,包括应答间隙和应答界定符。
帧尾由 7 个连续的隐性值组成,作为数据帧和远程帧的结束标志。
2.远程帧
作为接收器的节点可以通过向相应的数据源节点发送一个远程帧来激活该节点,让它把数据发送给接收器。远程帧由帧起始、仲裁字段、控制字段、CRC 字段、应答字段和帧尾 6 个不同的字段组成。远程帧的组成如图 9-6 所示。
3.出错帧
出错帧由出错叠加标志和错误界定符组成。出错叠加标志包括了多个出错信息的标志。
4.超载帧
超载帧包括超载标志和超载界定符。超载发生在两种情况下:一个是接收器因内部条件要求推迟下一个数据帧或者远程帧的发送;另一个是在间歇字段检测到显性值时。
5.帧间空间
数据帧或远程帧通过帧间空间与前一帧隔开,而不管前一帧是何种类型的帧。而在超载帧与出错帧前面不需要帧间空间,多个超载帧之间也不需要帧间空间来作分隔。
|