更多的资料在个人博客(www.zyx330.xyz)
CANFD基础
CAN 介绍
CAN: 一种控制器局域网,主要目的为减少汽车线束数量、实现多网络大量数据的高速传输需求。
一般细分为动力 CAN、车身 CAN、组合仪表 CAN、诊断 CAN 等。
CAN网络上可挂载多个节点
CAN物理层
CAN总线特点:
- 节点广播式通信
- 短帧结构,有效字节8byte
- 报文ID越小优先级越高
- 非破坏性总线仲裁机制
- CRC校验,满足数据传输可靠性需求
- 报文仲裁失败或传输错误会启动自动重发机制
- 节点出现错误时会自动脱离总线,不影响总线工作
- 通信速率1Mbps(距离最长40m)
- 通信距离最远10KM(速率5Kbps以下)
- 协议对节点数量无限制
- CAN节点成本较低,通信介质采用双绞线
CAN物理层通信原理:
CAN收发器的本质是将控制器传来的逻辑电平转为差分电平
Tx:将逻辑数字信号转换为物理信号
Rx:将物理信号转换为逻辑数字信号
关于差分电平,CAN有两种标准,ISO11898(高速)和ISO11519(低速容错)
CAN编码一般采用NRZ编码,相同带宽下NRZ编码方式比曼彻斯特编码信息量更大。
为了确保不受共模信号干扰,CAN采用双绞线以保证电压差值,使得信号解码正常。
CAN通信流程:
CAN收发器 -> 异步串行通信 -> CAN控制器 -> SPI(同步串行通信)-> MCU
通信正常的必要条件:波特率一致(每秒传输一位的速率一致)
为减少波特率带来的误差,通过信号跳变沿时刻进行同步,将误差累计限制在两个跳变沿。
当总线连续5个相同位时,CAN控制器采用一个填充位插入一个相反位,产生跳变沿,促使波特率同步。
采样点与位时间:
一个位时间=1/波特率。
同步段:用于同步总线上各节点的,硬同步作用域,产生跳变沿
传播段:用于补偿信号的物理延时
相对缓冲段:采样点设置,重同步作用域
硬同步与重同步:
同步规则:
- 一个位时间只允许一种同步方式
- 硬同步:发生在同步段(帧起始)
- 重同步发生在一个帧的其他位场内,跳变沿在同步段外启用重同步、
- SOF到仲裁场有多个节点同时发送情况下,不进行重同步,仲裁结束后再重同步。
终端电阻:
若电路与传输线的特性阻抗不一致会导致线束终端出现阻抗突变,形成反射现象,造成波形振荡。
为减少通信线路反射,避免电平变化导致数据传输错误,一般在采用120Ω的终端电阻。
CAN数据链路层
数据帧结构
CAN分为标准帧和扩展帧,扩展帧最大的优势是扩展报文ID。
SOF:帧起始,只有在总线空闲的时候,发送节点才会发送SOF且其他接收节点进行同步
仲裁段:标准帧和扩展帧的不同(扩展ID)在此体现
控制段:
数据段:一般占用8个byte,byte0-byte7。 传输方式分为大端模式和小端模式。
CRC:校验段
CRC校验逻辑
CRC校验算法:
ACK:应答段
帧结束:释放总线空闲状态
常见的总线错误类型
CRC错误:CRC计算值比对有误
位填充错误:传输时违反位填充规则
应答错误:ACK未接收到信号
位发送错误:发送节点发送时检测到总线电平与发送电平不一致
格式错误:传输数据帧格式不合法
非破坏性仲裁机制
本质:在仲裁段,通过线与机制(报文ID越小优先级越高)对报文进行优先级排序,仲裁失败的进入只听模式。
线与机制
线与:线路的电平状态为0或者1,且0为显性1为隐形,也就是0电平和1电平进行“线与”操作的话会出现0电平(0 & 1 = 0)
本质:报文ID越小优先级越高。将报文ID转为二进制,由高位到低位,依次线与,线与后的总线电平与发送电平不一致则优先级低,即仲裁失败。