CAN:控制器局域网,一个节点 = 控制器 + 收发器,收发器把TTL逻辑电平转为差分信号
1.显性电平:逻辑0,差分电压大于0
2.隐形电平:逻辑1,差分电压等于0
3.半双工异步通信,各个节点只能约定好波特率进行通信,同一时刻只能收或发
4.协议层:
(1)同步机制:位同步。每一个位可以分为:SS段、PTS段、PBS1段、PBS2段
硬同步:不改变位的宽度,将SS段平移至帧起始信号的下降沿处
重新同步:以总线的时序为参考,下降沿在SS段左边即为相位滞后,下降沿在SS段右边即为相位超前
通过改变PBS1 PBS2段的时间宽度来实现后面数据位相位的同步,从而实现所有数据的同步
硬同步 + 重新同步:硬件实现
(2)报文种类:数据帧 遥控帧 错误帧 过载帧 帧间隔 每一帧都由特定的格式打包,数据帧最复杂,每个帧都有SOF
数据帧:SOF(帧起始信号)+仲裁段(11位ID)+控制段+数据段(实际数据0-8Bytes)+CRC+ACK+EOF(帧结束)
(3)关于仲裁段标识符:CAN ID的构成中,扩展ID位于低18位,而基本ID位于高11位(前面是高位,后面是低位)
5.工作模式:
(1)正常模式: 正常接收发送数据
(2)静默模式: 只可以向总线发送数据1,可以接收数据
(3)回环模式: 发送的数据直接到输入和总线,不可接收数据
(4)回环静默模式:发送的数据只能到输入,不可接收数据
6.波特率 = CAN时钟/分频系数/(TBS1 + TBS2 + SS)
7.过滤器:
(1)模式:
列表模式:把要接收报文的 ID 列成一个表,要求报文 ID 与列表中的某一个标识符完全相同才可以接收
掩码模式:把可接收报文 ID 的某几位作为列表,这几位被称为掩码,可以把它理解成关键字搜索,只要掩码 (关键字) 相同,
就符合要求,报文就会被保存到接收FIFO
掩码原理:指定要判断的几个位为1(屏蔽码),比较出来的结果(验证码),其他节点发来的ID(身份证)
if(身份证 & 屏蔽码(掩码) == 验证码) 为真就可以
(2)组合:根据ID的实际长度来选择,先用掩码模式。再就是配置时不要被过滤器的结构体成员字面意思误导,应该根据具体的组合来赋值
下面几种组合存放的ID数据需要根据具体的MCU来配置
32位宽列表模式:
32位宽掩码模式:
16位宽列表模式:
16位宽掩码模式:
8.采样点:
关于采样点的计算,公式:(1+TSEG1)/(1+TSEG1+TSEG2) ≈ 0.875
晶振时钟频率11M, SJW为1个Tq, TSEG1 为18, TSEG2为3,则采样点计算带入上面的公式,
使用CiA推荐的采样点
小于等于500Kbps 87.5%
大于500kbps 80%
大于800kbps 75%