CAN是控制器局域网络(Controller Area Network, CAN)的简称。CAN总线网络主要挂在CAN_H和CAN_L,各个节点通过这两条线实现信号的串行差分传输。CAN收发器负责转换CAN信号和I2C信号。CAN连接示意图如下:
CAN总线连接器类型可能有不同的形式:
CAN信号由接收控制器的TXD与RXD串口信号,再转换为CANH,CANL电平的差分信号。收发器引脚定义如下:
CAN收发器是实现CAN控制器逻辑电平与CAN总线上差分电平的互换。实现CAN收发器的方案有两种,一是使用CAN收发IC(需要加电源隔离和电气隔离),另一种是使用CAN隔离收发模块。推荐使用第二种。
CAN控制器是CAN的核心元件,它实现了CAN协议中数据链路层的全部功能,能够自动完成CAN协议的解析。CAN控制器一般有两种,一种是控制器IC(SJA1000),另一种是集成CAN控制器的MCU(LPC11C00)。
MCU负责实现对功能电路和CAN控制器的控制:在节点启动时,初始化CAN控制器参数;通过CAN控制器读取和发送CAN帧;在CAN控制器发生中断时,处理CAN控制器的中断异常;根据接收到的数据输出控制信号;
功能电路驱动向下直接控制功能电路,向上为应用层提供控制功能电路函数接口。特定功能包括信号采集、人机显示等。
CAN控制器内部结构:
接口管理逻辑负责解释MCU指令,寻址CAN控制器中的各功能模块的寄存器单元,向主控制器提供中断信息和状态信息。
发送缓冲区和接收缓冲区能够存储CAN总线网络上的完整信息。
验收滤波是将存储的验证码与CAN报文识别码进行比较,跟验证码匹配的CAN帧才会存储到接收缓冲区。
传输速率:通信距离最远可达10KM(速率低于5Kbps)速率可达到1Mbps(通信距离小于40M).
下面的SAE J2411为美国汽车标准。
CAN总线上任意两个节点的最大传输距离与其位速率有关,如下表:
这里的最大通信距离指的是同一条总线上两个节点之间的距离。可以看到速率越低通讯距离就越远,也就是说CAN总线的通讯距离和波特率成反比。在位速率为5千比特位每秒的时候达到最大的传输距离10公里。其中一般的工程中比较常用的为500K每秒的通讯速率。
双工类型:半双工。
电平类型及范围:差分信号,根据CANH与CANL间的差值分为显性和隐形。
当总线为显性时,对于高速CAN(5kps~1Mps),1.5V<CANH-CANL<3V,典型值为2V;对于低速CAN(低于125kps),0.3V<CANH-CANL,典型值为3V;对于单线CAN,电平为4V左右。
当总线为隐性时,对于高速CAN(5kps~ 1Mps),-0.5V<CANH-CANL<0.05V,典型值为0V;对于低速CAN(5kbs~125kps), -0.3V<CANH-CANL,典型值为-1.5V;对于单线CAN,电平为0V附近。
电平变化与逻辑关系:显性为逻辑0,隐性为逻辑1。
如果总线上只要有一个节点将总线拉到低电平(逻辑0)即显性状态,总线就为低电平(逻辑0)即显性状态而不管总线上有多少节点处于传输隐性状态(高电平或是逻辑1),只有所有节点都为高(隐性),总线才为高,即隐性。
如下是不同CAN类型电平变化与逻辑的关系:
数据格式:CAN总线传输的是CAN帧,CAN的通信帧分成五种,分别为数据帧、远程帧、错误帧、过载帧和帧间隔。
数据帧用来节点之间收发数据,是使用最多的帧类型;
远程帧用来接收节点向发送节点接收数据;
错误帧是某节点发现帧错误时用来向其他节点通知的帧;
过载帧是接收节点用来向发送节点告知自身接收能力的帧;
帧间隔用于将数据帧、远程帧与前面帧隔离的帧。
数据帧根据仲裁段长度不同分为标准帧(2.0A)和扩展帧(2.0B)
帧起始由一个显性位(低电平)组成,发送节点发送帧起始,其他节点同步于帧起始;
帧结束由7个隐形位(高电平)组成。
仲裁段: CAN总线控制器在发送数据的同时监控总线电平,如果电平不同,则停止发送并做其他处理。如果该位位于仲裁段,则退出总线竞争;如果位于其他段,则产生错误事件。帧ID越小,优先级越高。由于数据帧的RTR位为显性电平,远程帧为隐性电平,所以帧格式和帧ID相同的情况下,数据帧优先于远程帧;由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐形电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。
控制段:共6位,标准帧的控制段由扩展帧标志位IDE、保留位r0和数据长度代码DLC组成;扩展帧控制段则由IDE、r1、r0和DLC组成。
数据段:为0-8字节,短帧结构,实时性好,适合汽车和工控领域;
CRC段:CRC校验段由15位CRC值和CRC界定符组成。
ACK段:当接收节点接收到的帧起始到CRC段都没错误时,它将在ACK段发送一个显性电平,发送节点发送隐性电平,线与结果为显性电平。
远程帧:远程帧分为6个段,也分为标准帧和扩展帧,且RTR位为1(隐性电平)。
过载帧:当某节点没有做好接收的”准备”时,将发送过载帧,以通知发送节点。
帧间隔:用来隔离数据帧、远程帧与他们前面的帧,错误帧和过载帧前面不加帧间隔。
传输线阻抗:120欧(采用双绞线),需要端接120欧电阻阻抗匹配。
允许并联电容:CANH,CANL对比最小40pf,最大150pf;CANH对CANL最大90pf,最小0.
支持设备数量:使用CAN双绞线时是看总线长度、CAN收发器驱动能力、线缆阻抗、匹配电阻大小等。大多数的驱动器理论上是挂110个内比较可靠(不考虑其他因素的影响,如线缆阻抗较大等),如果节点过多,可以考虑用硬件的CAN中继器,可以增加差不多一倍的节点。
应用场合:汽车,工业
一个典型的CAN应用场景:
设计要点:终端电阻匹配,节点设计,收发器匹配(同一网络中要使用同类CAN收发器(高速或容错)),滤波器和抗干扰电路设计。
具有对抗ESD和浪涌的CAN接口设计如下: