CAN总线总结

CAN总线总结
CAN总线总结

CAN总线技术学习(一)

CAN总线是控制器局域网络(Controller Area Network,CAN)的简称,是德国BOSC公司开发,是国际上应用最广泛的现场总线之一,CAN总线已成为汽车计

算机和嵌入式工控局域网标准总线。

为了全面了解CAN总线,需要先对其有个整体的概念,这中间还有一个小故事,一个应届毕业生到公司去应聘,负责招聘的经理问他:术?”,

你会哪方面的技

毕业生说:“我会CAN总线”,经理疑惑的问:“你会看什么总

线?”。那么什么是CAN总线呢?

1首先CAN总线是一种串行总线,不是并行的,是用来传输电子数据的, 就像串口总线、USB总线、以太网一样;

2、CAN总线是半双工传输模式,发的时候不能收,收的时候不能发;

3、CAN总线使用双线传输,一根定义为CAN_Hr根定义为CAN_L?用差分信号传

输(差分信号就是通过计算两线压差) ;

4、CAN总线的波特率最高可达1Mbps传输距离最远10公里,传输波特率

和传输距离成反比,波特率越高有效传输距离越短;

5、组网时总线两端CAN兩CAN L之间要分别连接一个120欧的终端电阻

起吸收反射波、高频抗干扰的作用)

那么CAN总线有什么优势呢?

1、CAN总线作为现场总线只有两根传输线,比以太网组网简单,成本也低很

多,在不需要大数据量传输的设备通讯上有相当的优势;

2、CAN总线使用差分信号和屏蔽线传输,抗干扰能力强,数据传输稳定,因为在

某点有干扰时两根信号会被同步干扰,不会影响信号传输的信息;

3、CAN总线波特率最高可达1Mbps传输速率相对串口快很多,同时总线协

议中加入CRC校验,相对于串口的奇偶校验,数据安全性强;

4、CAN总线使用差分双线传输,易于组网,布线简单;

5、CAN总线通讯不分主从,网络上每个设备都可以主动发送数据;

6、CAN总线协议应用非破坏性逐位仲裁机制,即通过发送帧的帧ID的大小

作为优先级判断网络上数据发送冲突,优先级高的信息发送,优先级低

的数据停止发送,极大提供总线的利用率;

7、CAN总线协议设置对发送的自动重发机制,当发送监测到发送冲突时,停止

发送,等总线空闲后自动重发;

8通过设置总线控制器中验收寄存器和屏蔽寄存器,可以使节点在硬件层允许接收某些帧或屏蔽接收某些无用帧,节约单片机ECU接收和判断处

理的时间。

综上所述,CAN总线在设计成本、传输速率、传输稳定性、传输安全性、易

于组网以及总线协议完善设计方面的优势,使其在现代汽车、工控局域网络领域

得到广泛的应用。

CAN总线既然作为一种现场总线,用途就是在不同设备间传输数据,基本的

CAN总线通讯主要包括:主控制器(一般为单片机)、CAN总线控制器(图例

为SJA100Q方框中为一个芯片器件)和收发器,主控制器初始化设置CAN总线

控制器工作,CAN总线控制器为主要CAN总线逻辑器件,负责将数据转换为总线协议串行信号和将收发器接收到的信号转换为有效数据,并屏蔽无效数据,监测故障错误并报告,收发器将CAN总线收发信号转换成半双工CAN总线差分信号。

有的单片机将CAN控制器芯片功能集成在单片机中,如富士通MB90340系列、

STM32f10x 系列等。

CAN总线组网的逻辑框图如图2所示:

如图所示,多个CAN总线节点通过差分信号连接到CAN总线网络上,网络两端(CANJ和CANJ之间)分别连接一个120欧姆的终端电阻(吸收反射波,抗干扰)。各节点不分主从,都可以主动向总线上发送CAN信息,也可以设置CAN

控制器的验收屏蔽寄存器有选择的接收总线上的信息。

图2 CAN 总线网络框图

CAN 总线技术学习(二)

CAN 总线信息以帧的形式传输,每个帧包括多个段:起始位

控制段、数据段、CRC 校验、确认位、结束位等,各个段依次串行被传输到总线 上。起始位、CRC 校验、确认位和结束位由控制器硬件自动生成,软件可以配置 仲裁段、控制段和数据段的内容。每个CAN 帧最多发送数据段长度为8个字节即

64位。

CAN 总线协议有两种:和协议,支持帧ID 为11位的标准帧,协议支持帧ID

为11位的标准帧和帧ID 为29位的扩展帧,如图1和图2所示。

*

*

4

■—斤:制幘 一?

十敕曲殳4 +CRC 分隔苻一

n t —

m

T F L D E r 0 DLC

CRC

I

”灯 Rt E

0 F

1

11

1 L 1

1

0-64

1& ' 1

r L.

7

*+* 驚 *

图1 CAN 标准帧

苹点

卜节点裁

120£2

节点

SOF 仲裁段、

B

图2 CAN 扩展帧

F 面解释几个CAN 总线问题:

位填充:上述图中都提到位填充的问题,即当发送的一帧 CAN B 息中出现连 续5个相同位时,控制器会自动填充一个相反的位进去,控制器接收一帧

CAN

信息时发现5个相同的位,也会自动把其后的一个翻转位去掉。 那么可能我们会 问为

什么要做这种看似无用的操作呢?因为 CAN 总线通讯属于异步通讯,虽然通 讯双方约定设定相同的波特率通讯,但是每一位(bit )的宽度也不可能绝对相 同,多个相同的位累积起来可能出现较大的误差,

造成接收信息出错,那么如何

解决这个问题呢? CAN 协议中规定在位跳转时要做同步补偿, 多个位累积造成的错误,但是如果 CAN 帧信息连续出现多个 法监测到翻转位,不能做出正确的补偿,可能导致发送方发了 监测出11个0出来的情况出现,所以当发送方连续发送

5个0时,要位填充一

个1进去,然后再发送下面的位,而接收方接收到5个0后接收到下面的1可以 做出相应的同步补偿,同时要丢弃这个填充位。按照

CAN 协议规定如果在CAN

信息中接收到连续6个以上的相同位被认为是错误信息,CAN 控制器错误计数加

1。

CAN 协议:如上图所示,标准帧标识符(帧ID )有11位,扩展帧标识符(帧 ID )有29位,协议也兼容协议,可以同时识别标准帧和扩展帧。标准帧和扩展 帧的区别在于IDE 位,IDE 为0时表示标准帧,IDE 为1时表示扩展帧。

CAN 信号:CAN 总线使用一对差分信号通讯,即 CANJ 和CAN_L 通过识别它

们的压差获取0或1的信息,上电后两个信号对地都会有一定的电压, 即V_CANH 和

V_CANL 通过判断V_CANH-V_CAN fi 别信息,总线信号分为显性(压差为 1V

那么这样可以消除

0或1,接收方没办

10位0,接收方

以上,也即数字0)和隐性(压差小于,也即数字 1)。一般在没有数据通讯时

V_CAN 和V_CAN 都为,所以CAN 总线默认为没有压差(隐性,数字1),当有起

始位SOF (数字0,显性)时每个网络上的节点都能监测到,准备接收信息,如 图3所示。

图3 CAN 总线电压示意图

逐位仲裁机制:CAN 节点发送的信息都会被自己接收并判断。当 CAN 总线上 两个节点同时发送CAN 信息时,CAN 节点也会比较自己发送的数据和接收的数据 是否一致,由于CANB 号有显性(数字0,压差大于IV )和隐性(数据1,压差 小于)两种,当一个节点发送0而另一个节点发送1时,总线表现为显性0,那 么发送1的节点监测到后知道发送总线冲突,自动退出发送,所以可以看出,CAN

总线信息小的优先级高。通过这种方式可以实现非破坏性逐位仲裁, 节点正常发送,不受任何影响。

CAN 总线技术学习(三)

CAN 控制器比较通用的是 SJA1000T 收发器使用比较多的是 82C25Q

学习CAN 总线首先需要准备一块开发板, 现在CAN 总线开发板很多, 般

都是单片机带CAN 控制器和收发器的方式。各种接口的 CAN 设备也很多,USB

接口、PCI 接口,智能非智能的很多种,相对而言,广州周立功的产品种类多, 软件兼容性高,可以参考使用。

学习CAN 软件开发,首先就是要熟悉 CAN 控制器的寄存器配置,不同的 CAN

优先级高的 TAJ1050 或

化 005

二 5V

4才叮《 5V

介亀1#态h ■吒对舉議挥.呻占出 弋m 5 V 静平)

控制器寄存器不同,如何设置也不同,市面上通用的就是SJA1000T的控制器,

芯片中文资料可在网上下载,网上也有很多软件例程,学习起来相对容易。对于一些集成CAN空制器的单片机来说,CAN寄存器控制一般都不同,总体来说主要

包括三部分:初始化、接收(中断)、发送,流程图分别如图1、2、3所示。

T

i■戈国■汎tUIhl力发遠*

消息忖虹:!为技收(cAWNj

好i 优

*

N

Y

I 己斌数揭帧林训符口愎识

别救抠来源

I

惓毀据爪入按貿駅列

M 便g 址理]

图3中断接收流程

对于CAN 总线控制器初始化,主要设置:通讯波特率、验收寄存器、屏蔽寄 存器及滤波方式、设置中断使能等,对于SJA1000首先要设置模式寄存器,还要 设置输出控制寄存器等。SJA1000支持两种模式:Basic CAN 模式(只支持标准 帧)和Peli CAN 模式(支持标准帧和扩展帧),在使用两种模式前需要先在模式 寄存器中设置,默认是Basic CAN 因为两种模式下寄存器的地址和含义有区别。

丨卄始

I

Y

I 关"\中斷|

St 据

N

N

J 工■

相关主题
相关文档
最新文档