1、当同一个CAN网络中出现相同的CANID时
CAN总线的非破坏性仲裁机制不允许两个(多个)相同ID的CAN帧存在同一网络,当这种情况出现时,就存在一种可能:两个CAN帧同时参与总线竞争,要不同时竞争失败,要不同时竞争成功均获得总线使用权,一旦这两个具有相同ID的CAN帧同时享用总线,仲裁场发送完毕接着发送控制场、数据场……当然这两个位流序列不可能完全相同于是位错误(Bit Check Error)必将同时被两节点检测到,两节点同时发出错误帧接着CAN-bus重启两个CAN帧重新参与竞争…………有一种可能,网络上将出现死循环,所以必须小心!!
2、以标准帧(数据帧)为例,拆解CAN帧位序流
SOF(Start Of Frame):显性位(0),必须在Bus Idle状态发出,网络上所有节点在“下降沿”执行一次同步;
Identifier Field:11bits,CANID;
RTR(Remote Transmission Request Bit):显性位(0),隐性(1)时标识该帧为远程帧;
IDE(Identifier Extension Bit):显性位(0),标识该帧为标准帧;
r0(reserved bit):保留位,发送器必须发送显性位,但接收器检测到该位表现为不敏感,不会激发bit error错误;
DLC(Data Length Code):4bits,标识数据场的数据字节数,DLC=0时,数据场无数据,DLC>=0x1000时,数据场为8字节数据;
Data Field:将要发送的过程数据,0-8字节,具体有DLC确定,Data0先发送,Data0的Msb先发送;
CRC Sequence:循环冗余检测序列,校验和,15bits,由CAN控制器硬件完成CRC算法并位场填充;
CRC Delimiter:CRC界定符,1bit,必须为隐性;
Ack Slot:应答间隙,1bit,发送器端送出隐性电平,接收端送出显性位标识握手信号,发送器检测该位为隐性将激发应答错误;
Ack Delimiter:应答界定符,1bit,必须为隐性;
End Of Frame:发送端送出7个隐性电平,标识数据帧结束。