CAN总线以帧的形式传输数据,帧类型主要有四种,数据帧、远程帧、错误帧、过载帧,数据帧是从发射端携带数据到接收端,下面我们主要介绍一下数据帧的结构和功能。
一个完整的数据帧是由7个部分组成的,分别是帧起始(SOF)、仲裁场、控制场、数据场、CRC场、应答场和帧结尾(EOF)。
帧起始也就是SOF是数据帧开始发送的标志,通常是显性位,帧起始发送的条件必须是CAN总线处于空闲的时候。帧起始后面是仲裁场,由11位的标识符和1位远程发送请求组成,共12位,数据帧中,远程发送请求位为显性,便于在相同的数据帧和远程帧一起发送时,进行仲裁。
仲裁场后面是控制场,控制场有6位,前两位通常是预留位,为隐性,后面4位,是数据长度代码,也就是DLC,数据长度代码代表了数据场中字节的个数。仲裁场后面就是数据场,数据场长度取决于仲裁场DLC的字节个数。
数据场之后是CRC场,也就是CRC效验场,是前面所有场加在一起组成的CRC校验值,CRC最后一位是一个为隐性的结束符。
CRC场之后是应答场,主要用于在通讯过程中确定数据是不是有效时使用,发射单元会发送隐性的应答位和应答结束符到总线,接收方一旦发现接收到的数据有效之后会立即发送一个显性位到总线,所以一个有用的数据帧,应答位在总线上应为显性。最后一位是帧结尾,表示这个帧到此结束,由7个连续的隐性位组成。