CAN通信
文章目录
11898协议
ISO 11898-1:2015 协议详细定义了CAN网络报文的格式,包含了传统CAN与CANFD帧格式。
边界条件
- 速率最大1Mbit/s
- 通信长度40米
- 终端电阻120欧,防止反射。
- 32个节点
物理构成
图
控制器
如果需要接受大量数据,则需要带有缓存,否则不需要。
收发器
- 作用为了防止高电压破坏MCU芯片。
- 低速率0~125k,不需要终端电阻。隐性位:CANL比CANH高5V,显性位:CANH比CANL高2V。
- 高速率0~1M,需要终端电阻。隐形位:CANH和CANL电位相同,显性位:CANH比CANL高2V。
- 抗干扰能力:8kv esd保护。推荐增加共模扼流圈。
总线逻辑
隐性电平为1,显性电平为2,多节点同时发送时,遵行线与逻辑。
通讯
- 去中心化,分布式原则
- 事件驱动(时间触发机制)
- 通信矩阵
帧格式
传统帧格式
1位sof:网络节点同步。
11位id:数字越低优先级越高。
1位rtr:远程帧, 远程传输请求,该标志用于区分数据帧0还是远程帧1报文。数据帧优先级高于远程帧。
1位ide:扩展帧标识符,扩展帧的id可以有29位,同一个网络,标准帧和扩展帧只有一个。
1位r:传统扩展帧里面的保留位。
4位dlc:规定数据场长度,数据最大8个字节。
16位crc:校验场计算sof到dlc数据,15位校验位+1位界定符。
2位ack:应答位,用于指示CAN报文已经被目标节点接收,收到显性位验证。
7位eof:结束标志,7位隐性位。
3位itm:帧间隔,等待帧间隔后才能发消息。
扩展帧格式
扩展帧标识符扩展了18位,可以容纳更多的设备。
CAN FD帧和CAN帧:两种帧的相同与区别
总线同步
首次同步sof发起
NRZ编码,没有时钟线
重同步:位填充机制,不予许发送5个相同的电平,会在中间插入1个相反的电平。利用隐性位到显性位的边沿进行重同步。
总线竞争
多个节点在同一个时间点发消息的问题
通过id进行竞争,每个节点在进行发送时会对总线电平进行监控,如果自己id号是1隐性,而总线是0显性,说明自己优先级不够,如果检测到总线信号和自己id号相同则获得发送权,这是能够实现通过id来进行竞争的原因
数据保护
物理上emc
NRZ编码减少干扰发射
双绞线canh canl差分信号消除共模干扰
终端电阻消除电缆高频传输时传输末端的反射
总线逻辑错误检测机制
位填充stuffcheck
帧格式formcheck(crc,ack,eof)
显性隐形bit monitoring
错误处理机制
错误帧,发6个显性电平,总线最多会产生12个显性电平,监测到总线恢复到隐性电平后,发送8个位隐性电平代表错误结束。
错误跟踪机制
鉴别是否是永久性的错误,如果错误太多会进入总线丢失状态。只有重启或接收128*11位的隐性位之后,才回到总线工作。发送错误计算器,接收错误计算器。
成功发送一条消息,计数器减一
发送错误计算器,检测到错误,如果是发送方,+8