CAN总线使用总结
2015-05-08
can总线基本概念
CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制 系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的 数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,在欧洲已是汽车网络的标准协议。
CAN总线使用总结
一,can总线是由德国BOSCH公司提出,目的是为了解决汽车内部硬件信号线的复杂走线
二,CAN:controller area area:控制器局域网络
三,can总线的特点:
与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。
1,CAN为多主方式工作,网络上任一节均可在任意时刻主动向网络上其他节点发送信息,不分主从
2,CAN节节点只需通过对报文的标志符进行滤波就可以方便的实现点对点,点对多点及全局广播等
几种传送接收方式;
3,CAN总线采用非破坏总线仲裁技术。当发生冲突时,优先级低的节点自动退出发送,而优先级高
的节点可不受影响地继续传输数据,从而大大节省了总线冲突仲裁时间。尤其是在负载很重的情况下,也不
会出现瘫痪情况(以太网则可能)。
4,在报文标识符上,CAN上的节点分成不同的优先级,可满足不同的实时要求,优先级高的数据
最多可在134us内得到传输;
5,CAN的直接通信距离最远可达10KM(速率在5kbps以下),通信速率最高可达1Mbps,
(此时通信距离最长为40m);
6,CAN上的节点数主要取决于总线驱动电路,目前可达110个;
7,报文采用短帧结构,传输时间短,受干扰概率低,保证了数据出错率极低;
8,CAN的每帧信息都在CRC校验及其他检错措施,具有极好的检错效果;
9,CAN的通信介质为双绞线、同轴电缆或光纤,选择灵活;
10,CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响;
11,CAN总线具有较高的性价比。
四,can总线的系统构成及数据传输原理
(一),系统构成
1,CAN控制器:接收来自微控制器的数据,并处理发送给收发器,同时,也接收来自收发器的数据,处理传给微控制器。
2,CAN收发器:总线驱动
四,can总线的的通信协议
(一),网络层次结构
可分为三个层:目标层,传送层,物理层,如下图所示
物理层:规定了信号的传输过程中的电气特性(如传输方式及传输介质)及信号特性;
传送层:帧组织,总线仲裁,错误检测等;
目标层:信息识别,为应用层提供接口;
其上述分层按iso/osi也可以分为两层:物理层,数据链路层(即目标层和传送层)。
(二),位表达
CAN协议中有两种逻辑位表达方式
1. 当总线线上发送的都是弱位时,总线的状态就是弱位(逻辑1);
2.当总线上有强位出现时,弱位信号让位于强位信号,即总线上显示强位信号(逻辑0);
(三),帧类型
1. 数据帧:传送数据,携带数据从一个节点到另一个节点或多个节点,结构如下图(标准格式)所示。
数据帧由7种不同的位域组成:起始域,仲裁域,控制域,数据据域,CRC域,应答域,帧结束域。
起始域:表示数据帧或远程帧的开始,它由一个强位组成,主要用于接收状态下的CAN控制器的硬同
步。
仲裁域:由信息标志符及RTR位组成,当多个CAN控制器同时发送数据时,在仲裁域要进行面向位的
冲突仲裁。对于标准格式里,标志符由11位组成,用于提供信息地址和优先级,其发送的顺序为ID28~ID18
(注:高7位不允许均为弱的现象);对于扩展格式,仲裁域由11位的基本ID(ID28~ID18)和18位
的扩展ID(ID17~ID0)组成,格式与标准格式略有不同,详见书P25。RTR为:远地请求发
送位,数据帧里为显性,远程帧里为隐性。当can总线上接收节点想请求某节点发送数据时,就向网络上发
送一远程帧,用标志符指出节点地址,同时置RTR位为高。如果寻址节点立即发送数据,则使用相同的标
志符,总线不会产生冲突,因为此时数据帧的RTR位为低(数据强位)。在扩展帧里SRR位取代了RTR
位。
控制域:由6个位组成,包括2个保留位(IDE,ro)用于CAN协议扩展,4位数据长度码,允许数据的
长度值为0~8。
数据域:发送缓冲区按照长度码指示的数据长度进行发送,接收的数据同样如此,第一个字节的最高有
效位第一个被发送/接收。
循环冗余校验域(CRC):由CRC序列位(15位)和一个CRC边界符(1个弱位)组成。CRC的范围
包括起始域、仲裁域、控制域、数据域、CRC序列。之所以选用这种帧校验方式,因为:这种CRC码对于
少于127位的帧最佳。
应答域:应答域由发送方发送的两位弱位组成(应答空隙和应答分界位),当接收器正确地接收到有
效的报文时,接收器就会在应答间隙期间(发送ACK信号)向发送器发送一显性位以示应答。因此发送节
点一直监测总线信号以确认网络中至少有一个节点正确接收到发信息。应答分界位是应答域中的第二个弱
位,有此可见,应答空隙两边有两个弱位:CRC分界位和应答分界位。
帧结束域:每一个数据帧或远程帧一串7位的弱位帧结束域结束。
2. 远程帧:请求数据
远程帧由6个域组成:起始域、仲裁域、控制域、CRC域、应答域、帧结束域。
远程帧与数据帧不同之处在于:RTR位为高,无数据域。
3. 错误指示帧:用于指示传送过程中的错误信息
错误指示帧由两个不同的域组成:第一个域反映来自控制器的错误标志,第二个域为错误分界符。
错误标志:有两种,一个由6个强位组成的主动错误标志;另一个由6个弱位组成的被动错误标志,
它是被其他CAN控制器强位改写。 处于主动错误状态的CAN节点检测到错误发出主动错误标志,该错误标
志不满足位填充规则,或者是破坏应答域或结束域固定格式,所有其他节点都检测到错误状态,并发出该错
误标志。因此,这些从总线上监测到的强位串是不同节点发出错误标志的结果,这一标志最短为6个,最长
为12个。被动错误标志(不太理解。。。后续)
错误分界:它由8个弱位组成,与过载分界有相同的格式,当错误标志发生后,每一个CAN节点监测
总线,直到检测到一个强位出现,这表明所有CAN节点已经完成错误标志的发送,并开始发送8个弱位的分
界符,之后网络上的主动错误节点便可同时开始其他的发送。如果数据帧或远程帧在发送过程中发现错误
后,当前的信息作废,并启动重新发送。如果CAN节点发现错误指示帧错误,则重发,当连续多次出现此错
误时,则相应的节点变为被动错误节点。为正确结束错误标志,被动态节点需要至少3个位周期。
4. 过载帧:用于后续帧的延时
过载帧由两个域组成:过载标志和过载分界。
以下情况可以导致过载帧发送:
(1). 接收未准备好即接收方需要过多的时间处理当前的数据;
(2).在帧间空隙的第一位或第二位发现显性位信号;
过载帧发送条件:
(1).在帧间空隙域的第一个位周期;
(2).在帧间空隙域中检测到强位信号一个位周期后,方可启动过载帧发送。
过载标志:由6个显性位组成,与错误标志格式相同,当超载标志发生后,每个节点监测总线状态,当发
现线上有弱位后,此时所有节点已完成超载标志的发送,并开始发8个弱位串;
过载分界符:由8个隐性位组成,与错误分界符格式相同;
英飞凌(infineon)单片机XC800之CAN总线
CAN内部硬件结构,如下图所示
一,CAN处理机制
发送:根据报文缓存中的报文对象,由位流处理器产生的通过can总线发送的数据帧和过程帧,即从报
文缓存中取出的报文对象,位流处理器给它加上起始域,结束域和CRC校验数据,组成一个完整的数据帧
和远程帧,此时位流控制器还在对总线进行监测,当发现总线空闲时,就启动数据的传送,传送过程中监测
总线的信息,当发现与传送的信息不相符时,就会产生一个“最近错误”中断请求。
接收:数据帧或远程帧通过总结接口,到CAN节点,位流控制器对其进行CRC域进行检测,验证数据的
一致性,当检测到错误时,产生一个“最近错误”中断请求,并产生一个错误帧,发送到总线上。对一个无
错误的帧,位流处理器将它分解成数据部分和标识符部分,列表控制器将其以链表的形式存储于报文缓存
中,执行远程帧或数据帧处理。
在上述数据传送和处理过程中,会出现一些状态字,指示操作完成或出现错误,这些状态字或引发中
断,进行中断处理。
二,从上述结构框图可以看出,主要包括:CAN节点,报文控制器,中断处理单元
(一),CAN节点
(1),位流控制器(Bitstream Prosessor)
主要任务:处理数据帧,远程帧,错误帧和过载帧,同时还进行串行数据流与输入/输出寄存器之间
转换工作(Perdiv data frame ,remote frame ,error frame and overload,conversion thd seiral data
stream and the input/output register)。
详述:位流控制器:对于发送:根据报文缓存中的报文对象,由位流处理器产生通过CAN总线的数据
帧和远程帧。该的控制器控制CRC产生器,且给新的远程帧和数据帧加上校验和信息。在加入‘帧起始
位’和‘帧
结束域’之后,位流处理器开始CAN总线仲裁过程,且当发现总线空闲时连续进行帧发送。进行数据发送
的同时,位流控制器连续地监测I/O线的的电平和发送移位寄存器当前送出位的逻辑状态之间检测到失配,
产生一个‘最近错误’中断请求,错误码由位域NSRX.LEC给出。
对于接收:通过验证CRC相关域,确定接收到的帧是否有问题,或有问题,产生一个‘最近错
误’中断请求,同时产生一个错误帧,并发送到总线上。若接收的帧无错误,将接收到的帧分解成标志符和
数据部分,并将接收到的信息传给报文缓存,执行远程帧或数据帧处理,中断产生和状态处理。
(2),位时序单元(Bit timing unit)
考虑到传播延迟和相移,根据用户设置确定采样点和位时间长度,同时也处理再同步操作(define a
length of a bit time and the location of the sample point according to the user settings,takeing into
accout propration delays and phase shift errors and re-sychronization).
(3),错误处理单元(error handling unit)
对发送和接收过程中错误进行计数,当计数值达到一定时,进入不同的错误指示状态:错误激活,错
误认可,关闭总线。
(4),节点控制单元(Node control unit)
A, 使能/禁止节点的传送
B, 使能/禁止可引发中断的特定节点事件
C 帧计数管理
(5),中断控制单元(interrupt control unit)
控制CAN产生的不同类型的事件的中断
(二),报文控制器
(三),列表控制器
(四),中断处理单元