Skip to main content

CAN协议详解

CAN通讯协议物理层

CAN与IIC,SPI等具有sclk信号的同步通讯方式不同,只用CAN_L,CAN_H两条线,是一种异步通讯方式,以差分信号的形式进行通讯。

CAN物理层的形式主要分位闭环总线和开环总线网络两种,一种适合高速通讯(汽车一般使用这个)( 最高速度可达1Mbps,最长距离40m.),一种适合远距离通讯(最高速度125Kbps,最远距离1km.)。

3D1

CAN通信协议协议层

CAN的波特率及位同步

由于CAN属于异步通讯,没有时钟信号线,连接在同一个总线网络中的各个节点会像串口异步通讯那样,节点间使用约定好的波特率进行通讯,特别地,CAN还会使用“位同步”的方式来抗干扰、吸收误差,实现对总线电平信号进行正确的采样,确保通讯正常

CAN的差分信号

3D1

0V---------逻辑1------隐形电平 2.0V-------逻辑0-----显性电平

3D1

CAN的位同步

3D1

SS段: 又叫做同步段,它的作用就是判断节点与总线的时序是否一致,如何判断我们稍后再讲。先留一个疑点。它的长度为1tq,tq就相当于一个时间单位,我们可以规定它的大小,一般tq=1us. PTS段: 传播时间段,用于补偿网络的延时时间 PBS1,PBS2: 都是用来补偿阶段的误差。

CAN的数据帧

1.标准数据帧

3D1

RTR决定是数据帧还是远程帧

IDE决定是标准帧还是扩展帧

数据位最长可以发送8个字节,这也是缺点只能一次发送8个字节

2.扩展数据帧 3D1

3.标准远程帧 3D1

4.扩展远程帧 3D1

CAN的屏蔽滤波功能

1.屏蔽位模式

在屏蔽位模式下,标识符寄存器和屏蔽寄存器一起,指定报文标识符的任何一位,应该按照“必须匹配”或“不用关心”处理。

2.标识符列表模式 在标识符列表模式下,屏蔽寄存器也被当作标识符寄存器用。因此,不是采用一个标识符加一个屏蔽位的方式,而是使用2个标识符寄存器。接收报文标识符的每一位都必须跟过滤器标识符相同。

为了过滤出一组标识符,应该设置过滤器组工作在屏蔽位模式。 为了过滤出一个标识符,应该设置过滤器组工作在标识符列表模式。