数据帧是传输用户数据的载体,CAN通信中的主要角色。数据帧由多种不同部分构成,每个部分都会在传输过程中执行一项重要任务。例如:启动并维护ECU节点之间的同步,建立通信矩阵中定义的通信关系,以及传输和保护用户数据。
SOF是数据帧传输的起始位。发送方(sender)会发送一个显性电平作为SOF,由于总线空闲时总线会保持隐性电平,因此SOF发出后会产生一个跳变沿用于整个CAN网络的时间同步。为了在帧传输期间保持与发送方的同步,接收方会在所有隐性电平到显性电平的跳变沿进行是否与发送方保持同步的判断。如果出现偏差,接收方将按照相关相位误差量重新进行同步(重同步)。
SOF之后是标识符(ID),用于区分数据帧的优先级,并根据通信矩阵中定义的收发关系为节点中的接收过滤器提供过滤依据。ID之后是RTR位。发送方将其用于通知接收方帧的类型(数据帧或远程帧)。RTR位为显性表示数据帧,隐性则表示远程帧。
IDE位用于区分标准格式和扩展格式。标准ID有11位,扩展ID有29位,“Physical Transfer of a Data Frame in Standard Format”图展示了这两种格式。
DLC表示数据场中的有效负载的字节数。一个数据帧最多可以传输八个字节。
校验场使用以界定符(delimiter)为结尾的CRC来保护有效负载。接收方在ACK位做出肯定或否定的应答,ACK位后同样有一位界定符。
EOF由7个连续隐性位组成,在此之后,报文传输结束。
为加深对CAN数据帧的理解,可以查看“Physical Transfer of a Data Frame in Standard Format”图并通过习题进行练习。该图显示了高速CAN网络中标准格式数据帧的物理传输。您可以尝试在布局练习中以正确顺序排列标准格式数据帧的所有部分。