CAN[Control(Controller) Area Network]是控制(器)局域网的简称
它是德国Bosch公司在1986年为解决现代汽车中众多测量控制部件之间的数据交换而开发的一种串行数据通信总线。
现已被列入ISO 国际标准,称为ISO11898
CAN最初是为汽车的监测、控制系统而设计的,现已在航天、电力、石化、冶金、纺织、造纸、仓储等行业广泛采用。在火车、轮船、机器人、楼宇自控、医疗器械、数控机床、智能传感器、过程自动化仪表等自控设备中,都广泛采用CAN技术
CAN的主要技术特点
CAN网络上的节点不分主从,任一节点均可在任意时刻主动地向网络上其他节点发送信息,通信方式灵活,利用这一特点可方便地构成多机备份系统
CAN网络上的节点信息具有不同的优先级,可满足对实时性的不同要求,高优先级的数据最多可在134微秒内得到传输
CAN采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动地退出发送,而最高优先级的节点可不受影响地继续传输数据,从而节省了总线冲突的仲裁时间。
CAN只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据,无需专门的"调度"
CAN的直接通信距离最远可达10km(速率5kbps以下);通信速率最高可达1Mbps(此时通信距离最长为40m)。
CAN上的节点数主要决定于总线驱动电路,目前可达110个;报文标识符可达2032种(CAN2.0A),而扩展标准(CAN2.0B)的报文标识符几乎不受限制
采用短帧结构,传输时间短,受干扰概率低,具有良好的检错效果。 。
CAN节点中均有错误检测、标定和自检能力。检错的措施包括:发送自检、循环冗余校验、位填充和报文格式检查等。保证了低出错率。
CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响。
CAN的通信介质可为双绞线、同轴电缆或光纤,选择灵活。
CAN器件可被置于无任何内部活动的睡眠方式,相当于未连接到总线驱动器。这样可降低系统功耗。其睡眠状态可借助总线激活或者系统的内部条件被唤醒。
CAN在汽车电子系统中得到广泛应用
现代汽车越来越多地采用电子装置控制,如发动机控制、注油控制,加速、刹车控制(ASC)及复杂的防死锁刹车系统(ABS)等。
汽车内部所具有的控制器、执行器、监测仪器、传感器的数量很多,按模拟系统的接线方式,一个传统车辆的典型连线束展开后,其长度约为1600多米,有将近300个接头
这些控制需检测及交换大量数据,因而引入CAN通信技术,组成汽车内部网络,以适应控制与数据通信的需要。
世界上一些著名汽车制造厂商如BENZ(奔驰)、BMW(宝马)、PORSCHE(保时捷)ROLLS-ROYCE(罗斯莱斯)JAGUAR(美洲豹)等都已开始采用CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。
基于CAN总线的数据通信与网络技术在汽车行业有良好的应用前景
汽车内部网络的构成
汽车内部网络由一系列称之为ECU(电控单元)的不同功能部件作为网络节点而构成的。
可分为动力、照明、操作、显示、安全、娱乐等多个子系统。
Motorola公司提出的基于CAN的汽车内部网络的解决方案。
动力系统采用传输速率大于250kbps的CAN网段,车身电子系统采用传输速率不小于125kbps的低速CAN网段,两个子网之间通过中央模块实现互连。
汽车内部网络的解决方案 ( Motorola )
CAN通信技术
CAN的通信参考模型
CAN的通信模型的分层结构
数据链路层
包括逻辑链路控制子层LLC
LLC的主要功能是:为数据传送和远程数据请求提供服务,确认由LLC子层接收的报文实际已被接收,并为恢复管理和通知超载提供信息
媒体访问控制子层MAC)
MAC子层主要规定传输规则,即控制帧结构、执行仲裁、错误检测、出错标定和故障界定
物理层
物理层规定了节点的全部电气特性
CAN节点网络的连接
CAN总线的显位与隐位
显位(0)
VCANH: 3.5v
VCANL 1 1.5v
隐位(1)
VCANH 2.5v
VCANL 2.5v
CAN的帧类型
4种不同类型的帧:数据帧、远程帧、出错帧或超载帧
数据帧携带数据由发送器至接收器
远程帧用以请求总线上的相关单元发送具有相同标识符的数据帧
出错帧由检测出总线错误的单元发送
超载帧用于提供当前的和后续的数据帧的附加延迟
CAN的帧结构
数据帧由7个不同的位场(域)组成:
帧起始(1个显位),标志帧的起始
仲裁场、控制场、数据场、CRC场、应答场和帧结束(7个隐位)。
数据场长度可为零 。
CAN数据帧的组成
CAN2.0A 与CAN2.0B
CAN2.0A:
标识符的长度为11位,这些位从高位到低位的顺序发送,最低位为ID.0,其中最高7位(ID.10-ID.4)不能全为隐位。
远程发送请求位(RTR)在数据帧中必须是显位,而在远程帧中必须为隐位
仲裁场由11位标识符和远程发送请求位RTR组成。
CAN 2.0B:
存在两种不同的帧格式,具有11位标识符的标准帧,29位标识符的扩展帧
标准帧与CAN2.0A相同
扩展帧的仲裁场由29位标识符和替代远程请求SRR位、标识位和远程发送请求位组成,标识符位为ID.28至ID.0。
CAN数据帧的组成
远程帧
远程帧由6个场组成:帧起始、仲裁场、控制场、CRC场、应答场和帧结束。远程帧不存在数据场。
远程帧的RTR位必须是隐位。
DLC的数据值是独立的,它可以是0~8中的任何数值,为对应数据帧的数据长度。
出错帧
出错帧由两个不同场组成,第一个场由来自各站的错误标志叠加得到,第二个场是出错界定符
错误标志具有两种形式:
活动错误标志(Active error flag),由6个连续的显位组成
认可错误标志(Passive error flag),由6个连续的隐位组成
出错界定符包括8个隐位
超载帧
超载帧包括两个位场:超载标志和超载界定符
发送超载帧的超载条件:
要求延迟下一个数据帧或远程帧
在间歇场检测到显位
超载标志由6个显位组成
超载界定符由8个隐位组成
CAN通信控制器
CAN通信控制器82C200
CAN控制器主要由实现CAN总线协议部分和与微控制器接口部分电路组成。对于不同型号的CAN总线通信控制器,实现CAN协议的电路,其结构和功能大体相同;与微控制器接口,其结构及方式存在一些差异
CAN控制器芯片完成CAN总线协议的物理层和数据链路层的所有功能,应用层功能由微控制器完成
芯片工作的温度范围为:
-40℃~+125℃,汽车及某些军用领域,
-40℃~+80℃,一般工业领域
CAN通信控制器82C200的功能框图
接口管理逻辑:接收来自微控制器的命令,控制信息缓存器,为微控制器提供中断和状态信息。
发送缓存器:它有10个字节存储单元组成,存储由微控制器写入,将被发送到CAN的报文。
接收缓存器0和1:接收缓存器0和1均由10个字节组成,交替存储由总线接收到的报文,当一个缓存器被分配给CPU时,位流处理器可以对另一个进行写操作。
位流处理器:控制发送缓存器和接收缓存器(并行数据)与CAN总线(串行数据)之间数据流的序列
位定时逻辑:它将82C200同步于CAN总线上的位流。
收发逻辑:用来控制输出驱动器。
错误管理逻辑:按照CAN协议完成错误界定。
控制器接口逻辑:与外部微控制器的接口,82C200可直接与多种微控制器接口
82C200的寄存器地址分配1
控制段的10个寄存器
控制寄存器(CR)
控制寄存器的内容用于改变82C200的状态,使82C200 进入测试或正常工作模式,中断开放或禁止等,
控制寄存器的控制位可被微控制器置位或复位,微控制器将控制寄存器作为读写存储器。
命令寄存器(CMR):用于初始化一种作用。使82C200进入睡眠、唤醒状态;清除超载;释放接收缓存器;请求发送报文
状态寄存器(SR〕
状态寄存器的内容受总线控制器状态的影响。
它表明了82C200的总线状态、错误状态、发送状态、接收状态、接收状态、发送完成状态、接收缓存器状态、数据超载状态等
状态寄存器对于微控制器作为只读存贮器出现
中断寄存器(IR)
可用于识别中断源,如唤醒中断、超载中断、发送中断、接收中断等
当一个或多个位被置位时,INT引脚被激活
在该寄存器被微控制器读出后,所有位被82C200复位。该寄存器对于微控制器作为只读存储器出现
接收码寄存器(ACR)
它是82C200的接收滤波器的一部分,该寄存器可被访问。
接收码位(AC.7~AC.0);报文标识符的最高8位(ID.10~ID.3);接收屏蔽位(AM.7 ~AM.0)
若满足下列等式,则予以接收: [(ID.10 ~ ID.3 ) = ( AC.7 ~ AC.0 )] OR ( AM.7 ~ AM.0 ) = 11111111B
接收屏蔽寄存器(AMR)
接收屏蔽寄存器是82C200的接收滤波器的一部分。该寄存器可被访问,
根据接收屏蔽寄存器认定接收哪些码
总线定时寄存器0(BTR0)
总线定时器0的决定波特率预分频器(BRP)和同步跳转宽度(SJW)的数值,
若复位请求位被置为高,该寄存器可被访问 。
总线定时寄存器1
总线定时寄存器1的内容为周期宽度、采样点位置和在每个采样点获取采样的数目。
若复位请求位被置为高,该寄存器可被访问。
输出控制寄存器(OCR)
在软件的控制下,输出控制寄存器可建立输出驱动器的不同配置,如正常输出、测试输出、时钟输出、双向输出;输出引脚为悬浮、上拉、下拉、推挽输出等。
若复位请求位被置为高,该寄存器可被访问。
测试寄存器
测试寄存器仅用于生产测试
发送缓存段
用于存储由微控制器送至82C200的被发送报文。
分为描述符和数据场。
描述符为两个字节,包括标识符、远程发送请求位和数据长度码
标识符(ID):标识符由11位(ID.10~ID.0)构成,ID.10为最高位。在仲裁过程、接收滤波中都要用到。标识符的二进制数值越低,其优先权越高
远程发送请求位(RTR)为高电平时,发送远程帧,否则发送数据帧,
数据场:字节的数目由数据长度码决定。地址单元12中的数据字节1的最高位将首先被发送
发送缓存器可由微控制器写入或读出
描述符:标识符、远程发送请求位和数据长度码
接收缓存段
接收缓存器各字节定义与发送缓存器同,只是起始地址不同
接收缓存器:两个物理存储区对应同一地址,由内部接口管理决定访问哪一物理区域
CAN通信控制器SJA1000
SJA1000功能框图
SJA1000CAN控制器由以下几部分构成:
接口管理逻辑IML:它接收微处理器的命令,控制CAN寄存器的地址,并为微处理器提供中断和状态信息。
发送缓冲器TXB: 它是CPU和位流处理器(BSP)之间的接口, 有13字节长。能存储一条将在CAN总线上发送的完整报文。报文由CPU写入, 由位流处理器BSP读出。
接收缓冲器(RXB,RXFIFO): 是CPU和接收滤波器之间的接口, 用来存储从CAN总线收到并接收的报文。接收缓冲器FIFO共64字节长。其中有13字节的窗口可供CPU访问。在CPU处理一个报文的同时,由这个FIFO继续接收其它正在到来的报文
CAN通信控制器SJA1000(续)
接收滤波器ACF: 接收滤波器把收到的报文标识符和接收滤波寄存器中的内容进行比较,以判断该报文是否被接收。如果判断结果是肯定的, 则报文被存入RXFIFO。
位流处理器BSP: 位流处理器控制发送缓冲器FIFO和CAN总线之间数据序列,同时它也执行错误检测、仲裁、位填充和CAN总线错误处理功能。
位定时逻辑BTL: BTL监视总线上的串行序列,处理与CAN总线相关的位时间,按收到的报文头与CAN总线上的位流同步。BTL还为补偿传输迟延时间和相位跳变提供可编程的时间段。
错误管理逻辑EML:它按照CAN协议完成错误界定。它接受来自BSP的出错通知,并向BSP和IML提供出错统计
出错处理功能的增强
仲裁丢失捕捉寄存器(ALC):以找到丢失仲裁位的位置
出错代码捕捉寄存器(ECC):分析总线错误类型和位置
出错警告限寄存器(EWLR):定义出错警告极限值
接收出错计数寄存器(RXERR)
发送TX出错计数寄存器(TXERR)
记录发送和接收时出现的错误个数等。可根据从这两个寄存器读取的错误个数来判断目前CAN控制器的出错状态。
出错中断:
出错中断源:总线出错中断、错误警告限中断(可编程设置)和被动出错中断。由中断允许寄存器(IER)区分出以上各中断, 也可直接从中断寄存器(IR)中直接读取中断寄存器的状态来判断出错类型。
出错代码捕捉寄存器(ECC):
当CAN总线发生错误时, 产生相应的出错中断,同时,把对应的错误类型和产生位置写入出错代码捕捉寄存器(CAN相对地址为12)。这个代码一直保存到被主控制器读取出来后,ECC才重新被激活工作,捕捉下一个错误代码。
可以从ECC读取的数据来分析属于何种错误以及错误产生的位置,从而为调试工作提供了方便。
SJA1000的应用电路
加CPU、晶振、电源、复位电路、总线收发器等,与其它测量控制电路,可构成CAN应用节点
SJA1000
的应用电路
其它与CAN通信控制器相关的器件