CAN特性
双线差分信号,显0隐1,CAN_H 3.5V/CAN_L 1.5V ——抗电磁干扰
Node工作方式:ID小优先,仲裁实现:回读+线与
回读:总线空时ECU发信号,CAN构件通过RX线检测总线电平(1为空闲),发出信号。发送时,接收器(RX线)检查接受是否正确,(发出的位和回读的位是否一致<一位一位比较>,不一致停发并转为接受状态)。
线与:从SOF开始11位,从左往右0出现的位置越早,总线报文ID越小,优先级越高。
非破坏性仲裁:退出仲裁后“只听”;空闲时随机退避后发送(空闲之后还是会发出)。
采用NRZ(不归零制)+位填充编码方式
NRZ与曼彻斯特编码相比,在相同位情况下可以携带更多信息。但可能出现位丢失不能同步的情况,此时引入位填充。
位填充:炒年糕时间不跳变保持相同电平会有误差。5011:五位相同,填反。
数据一致性--检错纠错:接口抗电磁干扰能力、CRC(循环冗余校验)校验、错误报文重发、临时错误恢复、永久错误关闭等
CRC: Y-1011001(A——1011001+FCS, B——1011001+FCS’)生成多项式x
FCS--free check sequence(真检验序列),模2取余
帧结构
数据帧:标准帧11位id 拓展帧29位id(11+18)
SOF(start of fram):帧起始,一位显性0,用于同步。仅总线上连续11位1才可发送SOF。
1、仲裁场
2、控制场&数据场
控制场:r1/IDE、r0和DLC
数据场:0~8字节,CAN数据部分;
3、CRC场&ACK场&EOF
CRC场:FCS+DEL
发送节点从SOF开始到数据场位,计算一个FCS冗余码放到CRC前15位中,接受节点收到后同样进行计算,结果CRC场和FCS比较,检查帧是否有效;
DEL :CRC界定符,隐形固定格式 #规定CRC界定符之前的数据进行位填充(5011)
ACK场:ACK+DEL
接受节点接受自起始帧到CRC段之间内容无错,将在ACK字段发送一个显性0。发送节点据此判断发送成功
EOF:帧结束
7个连续因行为表示数据帧结束;
节点在检测11个连续隐形位后认为总线空闲;CRC之后的位场都是固定格式,不需要位填充。
远程帧:接收接地那请求发送节点发送报文,无数据场部分,其余部分和数据帧一致。数据帧又称遥控帧。现在基本不用。
错误检测
错误帧:
位错(比特错):例如:1-0、0-1。例外:仲裁场及ACK场除外;
填充错误:出现6个相同的比特位;
CRC错误:计算的值和FCS不同;
格式检测
ACK检测:发送节点在ACK场中未检测到显性位——NoACK
错误状态:
主动错误:节点可收发,发出主动错误标志(6个连续的0,覆盖其他位,其他节点检测到放弃当前帧),正常参与总线通信。但CAN协议中最多位5个,检测到一个填充错误(留个显性0)后,标记位填充错误,发送(0-6bit)主动错误填充。随后发送错误界定符(8bit),8bit错误界定符+3bit帧间间隔=11位连续隐性位——表示总线空闲,重发。
被动错误:节点可收发,发送被动错误标志(6个连续的1,被其他位覆盖,不妨碍其他节点通信),使总线忽视其通信。
BusOFF:节点不参与任何总线活动。
先快恢复后慢恢复。
位定时
暂时没看懂。