1、第二章 控制器局域网(CAN)第一节 CAN的基本知识一、一、控制器局域网控制器局域网CAN(Controller Area Network)控制器局域网(CAN)是一个支持分布式实时控制的串行通信网络,主要用于嵌入式控制器的通信系统及智能装置的开放通信系统。2第一节 CAN的基本知识二十世纪八十年代,由于电子系统在汽车上的应用不断普及,车上控制单元(ECU)不断增加,BOSCH公司提出了最初用于汽车电子装置互连的控制器局域网CAN串行通信总线系统。之后,CAN被汽车行业和控制领域广泛应用,它已经成为ISO和SAE标准。3第一节 CAN的基本知识SAE按CAN不同的通信速率把它分为三个级别:高
2、速CAN,主要用于车上动力传动系控制系统和底盘的控制系统;中速CAN,主要用于车身系统;低速CAN,主要用于车上媒体系统控制(并非用于媒体信息传送)及仪表板。现在很多汽车产品供货商都提供支持CAN的相关产品,包括ECU(Electronic Control Units)、微控制器(Micro-controller)、接口元器件都有支持CAN协议的产品,为CAN的广泛应用提供了坚实的基础。但随着车上网络系统应用范围不断扩大和应用层次的深入,也发现了CAN的一些局限性。4第一节 CAN的基本知识二、二、CAN的基本的基本特点特点;(1)高速串行数据接口功能(2)使用廉价物理介质(3)数据帧短(4)
3、反应速度快(5)多站同时发送(6)错误检测和校正能力强(7)具有远程数据请求功能(8)具有全系统数据兼容性(9)具有丢失仲裁或出错的帧自动重发功能(10)具有故障节点自动脱离功能(11)基于事件触发的发送方式5第一节 CAN的基本知识三、CAN的一些基本概念的一些基本概念CAN定义了ISO/OSI 网络开放系统模型的最低两层,即数据链路层和物理层,主要是数据链路层。在不同的CAN版本中对分层的定义有一些区别。CAN1.2的分层结构如图2-1(a),数据链路层又分为传输层和目标层。6第一节 CAN的基本知识7第一节 CAN的基本知识CAN2.0的分层结构如图2-1(b),是按ISO/OSI模型对
4、CAN结构的描述。数据链路层又分为逻辑链路控制和媒体访问控制两个子层。89第一节 CAN的基本知识CAN2.0 的MAC层(与CAN1.2 TL层对应)是CAN的核心,主要定义了传输协议,包括信息帧格式、仲裁方式、应答信号、错误检测、错误信令和故障限制等。MAC层的约定是固定的。LLC层(对应CAN1.2 OL 层)的设计有很大的自由度。10第二节 CAN 总线物理层一、CAN物理层特点物理层特点物理层定义了物理数据在总线上各节点间的传输过程,主要是连接介质、线路电气特性、数据传输的编码/解码、定时以及同步的实施标准。11第二节 CAN 总线物理层从物理结构上看,一个CAN节点的构成如图2-2
5、12第二节 CAN 总线物理层在CAN网络中物理层从功能上又可以分为三层,如图2-3所示。13第二节 CAN 总线物理层CAN物理层中,PLS(Physical Signaling)子层的功能主要由CAN控制器芯片完成,PMA(Physical Medium Attachment)子层的功能主要由CAN发送器/接收器电路完成,MDI(Medium Dependent Interface)子层主要定义了电缆和连接器的特性。14第二节 CAN 总线物理层二、PLS层层 1.编码编码/解码解码CAN总线使用非归零制编码方式,它在传送连续同极性位时,接收端没有可用于再同步的信号沿,所以CAN协议中规定
6、发送数据时采用位填充,即,在发送时,最多可以有5个连续的同极性位。如果要发送的位流中有5个或以上同极性位时,每发送5个同极性位则填充一个补位,15第二节 CAN 总线物理层2.位定时与节点间的同步位定时与节点间的同步如图2-6,一个位的传输时间分为4个时间段。CAN中所有时间都是以所谓的时间基准单元(TQ,Time Quantum)为单位,它由CAN节点的时钟频率通过一个可编程的分频器后得到,这部分功能在CAN控制器中完成。16信号从发送到接收端的路径和延时如图2-7,一个位的时间关系是在发送时确定的,当信号通过物理电路到达接收端时,由于接收节点在网络上的位置不同、延时不同以及各自使用独立时钟
7、等原因,要保持数据的一致性,需要一个再同步(Resynchronization)处理。17第二节 CAN 总线物理层信号传输总的时间延迟Tp包括CAN控制器延时TC(约40140ns)、发送/接收器延时Tt(大约120250ns)和电缆延时Tl(大约5ns),如果使用耦合器(隔离器)还要包括这部分的延时,光电耦合器延时To(Opto-coupler)大约为40-140ns。由于存在应答过程,实际延时应当是这些延时总和的两倍:Tp=2(TC+Tt+Tl+To)设计时应当保证这些延时小于位传输时的PROG-SEG段的时间长度。18第二节 CAN 总线物理层由于上述原因,不同节点上的信号会产生相位移
8、(信号沿时刻不同),CAN控制器再同步就是用于补偿这个相位差。如图2-819第二节 CAN 总线物理层在高速发送器情况,如图2-9,这个沿在PHASE-SEG2之前就检测到了,这时接收端会把PHSAE-SEG2减小一个最大RJW。20第二节 CAN 总线物理层三、发送发送/接收器接收器Bosch CAN 没有发送/接收器以及以下各层的标准,ISO标准中对发送/接收器制定了相应标准。发送/接受器在两条线的CAN网络上发送信号时,一条线称为CAN-HIGH,另一条称为CAN-LOW,两条线上是差动信号,具体电平和特性取决于适用的标准或设计规范。21第二节 CAN 总线物理层ISO11898-2一个
9、适用于ISO11898-2的网络结构如图2-10,发送/接收器与总线通过两条线(CAN-HIGH,CAN-LOW)连接,总线两端有120欧姆的吸收电阻。22第二节 CAN 总线物理层一个ISO11898-2兼容的总线节点结构如图2-11,CAN控制器可以嵌入到微控制器中,它通过串行口与CAN发送/接收器电路连接。23第二节 CAN 总线物理层总线上的接收节点,在CAN-HIGH与CAN-LOW的差值小于0.5伏时,认为总线是隐性状态;如果CAN-HIGH与CAN-LOW的差值大于0.9伏,认为是显性状态,图2-12是总线状态的一个例子。24第二节 CAN 总线物理层如图2-13,由CAN控制器
10、到发送/接收器的信息是通过有向信号传输的(通过TX和RX连接),而发送/接收器通过总线传输的是无向信号(通过CAN-H和CAN-L连接)。发送/接收器在发送时同时监测总线状态并返回给CAN控制器,但有延时。25第二节 CAN 总线物理层由于采用差动方式,CAN总线对电磁干扰不敏感;如图2-14,因为CAN-H和CAN-L绞在一起,同样的干扰在两条线上产生的影响相同,互相抵消,使差值保持不变。26第二节 CAN 总线物理层SAE J2284SAE推荐了一个用于动力传动系统控制器连接的标准SAE J2284,其特性如下:支持CAN2.0B兼容的CAN控制器。标准11位标识符长度。与ISO11898
11、发送/接收器兼容。最大节点数为16个ECU。最高传输速率500K Bits-1。总线采用非屏蔽双绞线。最大桩线长度(Stub Length)为1m。最小ECU间距离为0.1m,最大ECU间距离为40m。27第二节 CAN 总线物理层ISO 11992ISO 11992 是对总线故障具有容错能力的发送/接收器标准之一。这个标准最初是为卡车或大客车设计的,具有很高的抗高频辐射干扰和地电平漂移(可达6V)的能力。28第二节 CAN 总线物理层缺点是需要附加一些电路和额外的功耗。其显性位CAN-H 为18V、CAN-L 为9V;隐性位CAN-H 为9V、CAN-L为 18V。图2-15为ISO1199
12、2的总线电平说明29第二节 CAN 总线物理层图2-16是一个有容错能力发送/接收器结构。它提供差动发送能力,但当有故障发生时它可以切换为一个单线发送或接收器。在设计适应的故障情况,所有节点可以继续通讯,但信/噪比降低。一旦故障解除,它会自动恢复差动传输。3031第二节 CAN 总线物理层总线上信号的电平定义如图2-17,其显性位CAN-H 为3.6伏、CAN-L为1.4伏,隐性位CAN-H 为0伏、CAN-L为5伏。适用这一标准的发送/接收器如表2-2。32第二节 CAN 总线物理层四、总线及连接器总线及连接器不同的网络标准对网络连接总线和连接器可能有特定的要求,在构建网络时,如果选用的网络
13、有自己的总线和连接器标准,应当适应这个标准。Bosch CAN 对总线电缆和连接器没有具体标准,ISO或其它一些标准中对总线电缆和连接器制定了一些标准。ISO11898规定总线电缆应为阻抗120欧姆的屏蔽或非屏蔽双绞线,标称线延迟5nsm-1,总线两端各接一个120欧姆的电阻。线延长电阻(Length-Related Resistance)为70m-1。在这样的特性支持下,网络可达到1Mbits-1的传输率。表2-3列出了适用ISO11898-2标准的总线电缆的直流参数。33第二节 CAN 总线物理层总 线 长 度/m电缆端点电阻/最大波特率/(Kbits-1)线电阻/(m-1)总线截面积/m
14、m2040700.250.34 AWG23,AWG221241000(总线长度40m)40300600.340.60 AWG22,AWG20127500(总线长度100m)300600400.500.60 AWG20150300100(总线长度500m)6001000260.750.80 AWG1815030050(总线长度1km)34表2-3 适应ISO11898-2的电缆直流参数第二节 CAN 总线物理层为了减小电缆线上的衰减,端点电阻应适当大于ISO11898-2的标准值。在设计中还必需考虑连接器的参数;在计算线路上的电压降时,可按每使用一个类似9针D型插头的节点,大约引入520欧姆的传
15、输电阻计算。连接CAN网络时,电缆线的线径也是应当考虑的参数。表2-4是在:32个节点时 RW21欧姆,64个节点时 RW18.5欧姆,100个节点时 RW16欧姆,条件下,适用于PC82C250/1 CAN发送/接收器的电缆截面积推荐值。选用这些参数时要满足地电平漂移不应引起大于2伏的电压降的条件。35第二节 CAN 总线物理层长度长度/m节点数节点数32节点节点64节点节点100节点节点1000.250.250.252500.340.500.505000.750.751.0036表2-4 CAN总线电缆截面积(单位:mm2)第二节 CAN 总线物理层总线电缆允许的长度与节点特性以及传输速率
16、等参数有关。实际可使用的长度取决于以下因素:总线上节点和回路引起的延迟,不同节点的时钟误差引起的定时误差(以时间基准单位计),由于电缆电阻和节点输入电阻引起的信号幅值下降。37第二节 CAN 总线物理层图2-18是使用ISO11898兼容的发送/接收器和电缆时,数据传输率与总线最大可用长度的对应关系。表2-5是没有使用光电偶合器时,传输速率与实用总线长度的参考对照表。总线信号要传输的距离超出最大允许值时,可以通过使用中继器或网桥增加传输距离。38第二节 CAN 总线物理层传输速率/(Kbits-1)总线长度/m标称位时间/s1000301800501.255001002250250412550
17、0862.51000202025005010500010039表2-5 实用总线长度与传输速率对照第二节 CAN 总线物理层由传输速率和电缆参数可以估算电缆可用长度。无终点匹配时长度的计算如下:式中,是电缆单位长度上的延迟(nsm-1);是位时间域PROG-SEG段的长度(ns)。有端点匹配时,总线长度可以增加约5倍,但任何部分的电缆长度原则上都是越短越好。40第二节 CAN 总线物理层五、五、CAN网络的结构网络的结构网络的结构对系统的特性有很大影响,CAN网络一般采用总线结构,但又有多种具体连接方式。在一定的应用环境下,CAN网络结构选择的原则是:在同样的硬件参数下,尽量提高网络的电磁兼容
18、性。另外,为实现一些特定情况的要求有时需要采用一些特殊结构,如无线连接等。CAN网络基本结构如图2-19所示。为了提高电磁兼容性,还可以采用图2-20的一些结构。414243第二节 CAN 总线物理层在网络的实际连接中如果需要使用非单线结构,如有三个分支的星型结构,可以考虑多终端结构,这时终端电阻也对应增加,但一定要保证总的电阻值符合发送/接收器输出驱动的要求。44第二节 CAN 总线物理层图2-21是一个利用电源线进行连网的方案,有两种通过电源线传输数据信号的方法,一种是基带传输,另一种是调制传输。45第二节 CAN 总线物理层在一些情况下,必须使用无线传输,或者使用无线传输有很大的优越性。
19、典型的情况是在两个相对运动的子系统间进行连接,如吊车等。图 2-22是适应于这种情况的一种简单结构;46第三节 数据链路层一、概述CAN的数据链路层是其核心内容,其中LLC完成接收过滤、超载通知和管理恢复等功能,MAC 子层完成数据打包/解包、帧编码(填充与除去填充码)、媒体访问管理、错误检测、错误信令、接收应答、串并转换等功能。这些功能都是围绕信息帧传送过程展开的。47第三节 数据链路层 CAN定义了4种不同的信息帧:(1)数据帧:传送从发送端到接收端的数据。(2)远程帧:由总线上一个节点发出,请求发送与这帧有 相同标识符的数据帧。(3)错误帧:一旦某个节点发现错误就发出一个错误帧。(4)超
20、载帧:用于请求在下一个数据帧或远程帧到来之前加入延时。48第三节 数据链路层1.数据帧数据帧数据帧有7个不同的位域,如图2-2349第三节 数据链路层如图2-24,仲裁域由标识符和RTR位构成。不同的CAN版本标识域长度有所区别。IDE(Identifier Extension)位为显性位表示数据帧为标准格式,IDE位为隐性位表示数据帧为扩展格式。在扩展格式中SRR(Substitute Remote Request)位为隐性。RTR为远程传送请求位,数据帧中为显性,远程帧中为隐性,它是区别数据帧与远程帧的标志。5051扩展格式与标准格式的控制域基本一致,如图2-25。标准格式中控制域包括数据
21、长度码DLC(Data Length Code),IDE位和r0 位,这两位都是显性位。扩展格式中控制域包括DLC和两个保留位r1、r0,r1、r0发送时必须为显性位。数据长度码DLC给出数据段的字节数,其定义如表2-652第三节 数据链路层数据长度数据长度编码(DLC)DLC3DLC2DLC1DLC00DDDD1DDDR2DDRD3DDRR4DRDD5DRDR6DRRD7DRRR8RDDD53表2-6 数据长度编码第三节 数据链路层如图2-26,CRC校验域由CRC序列和CRC界定符构成。54第三节 数据链路层应答域ACK(Acknowledge)由两部分构成。如图2-27,在ACK时间片,
22、发送节点发送两个隐性位;已经正确接收在这之前总线上数据的节点,在这期间发送一个显性位,其含义是已经正确接收了一帧数据。55第三节 数据链路层2.远程帧远程帧如图2-28,远程帧由六个域构成。与数据帧相比,RTR位为隐性,没有数据域,数据长度编码域可以是08的任何值,这个值是远程帧请求发送的数据帧的数据域长度。56第三节 数据链路层57第三节 数据链路层3.故障帧故障帧如图2-29,故障帧有两个域,一个是不同节点发出的错误标志的重叠域,第二个为界定符。一个节点有两种形式的错误状态,即故障激活状态和故障接受状态。58第三节 数据链路层4.超载帧超载帧如图2-30,超载帧由超载标志和界定符两位构成。
23、有两种所谓超载,它们都导致发送超载帧。一是接收端要求推迟下一数据帧或远程帧的发送;第二种情况是在间休时域的第一、第二位时域检测到一个显性位。59第三节 数据链路层5.帧间间隔帧间间隔如图2-31,数据帧和远程帧与前一个信息帧间由一个称为帧间间隔(Interframe Space)的时间域。而超载帧和故障帧与前一个帧间没有这个间隔。帧间间隔有间休(Intermission)域和总线空闲(Bus Idle)两个时域,对于原来正处于发送请求的故障接受节点,还包括传送挂起(Suspend Transmission)时域。60第三节 数据链路层61第三节 数据链路层6.错误错误处理处理CAN定义了五种互
24、不包含的错误:位错填充错CRC校验错格式错应答错62第三节 数据链路层出现错误时,CAN处理错误的步骤如下:(1)检测是本地(Local)错误还是远程(Global)错误。(2)发送错误标志(广播错误状态)。(3)当错误为本地错误时,接着发送一个错误标志覆盖时域,之后再发送错误界定符。(4)所有节点废弃传送的信息。(5)每个节点进行错误计数。(6)信息自动重传。63第三节 数据链路层7.故障状态故障状态CAN节点定义了三种故障状态:“故障激活”状态、“故障接受”状态和“总线脱离”状态,其转换关系如图2-32。64第三节 数据链路层8.位定时位定时位定时是一个位时间域中的时间关系。一个位的时间长
25、度取决于传输速率。标称传输速率(NBR)是在没有再同步状态下,一个理想发送端每秒发送的二进制位数。标称位时间长度NBT又被分为如下时间段:同步时间,传播时间,缓存时间段1,缓存时间段2,各段在一个位时间中的位置如图2-33所示。65第四节 CAN应用系统一、CAN节点的结构节点的结构CAN的节点就是车上的各种控制器单元(ECU)或智能装置。在使用CAN总线时,除了控制器自身功能外还要考虑连入CAN总线的软硬件设计。要连入CAN总线首先就要确定使用什么样的CAN控制器。如图2-34,CAN 控制器接口有集成的和独立的两种形式。6667第四节 CAN应用系统目前的发展趋势是把CAN接口、发送/接收
26、器与微控制器集成到一个芯片,这样就构成所谓单芯片CAN节点,如图2-35,即一个芯片加上一点辅助电路构成的控制单元。这种结构比较适合功能较简单的控制单元。6869第四节 CAN应用系统二、CAN控制器结构控制器结构如图2-36,CAN控制器包括实现CAN协议的控制电路、CPU接口、接收/发送缓冲器和硬件接收过滤电路。7071第四节 CAN应用系统接收和发送缓冲器实现CPU与CAN控制器之间的数据传输速度匹配,如图2.-37(a),标准格式缓冲寄存器至少应能存放一帧信息中的标识符域、控制域和数据域的位。如果使用扩展格式,缓冲器的结构如图2-37(b)。727374第四节 CAN应用系统不同的CA
27、N控制器中,CPU接口、接收/发送缓冲器和硬件接收过滤电路有所不同。CAN控制器中有一种串行连接I/O器件SLIO(Serial Link I/O)。如图2-38,这是一种不可编程的CAN控制器;实际是带有CAN控制器的一个接口电路。它可以把本地通过I/O或A/D接口获得的数据,通过CAN总线发送到远处的控制单元,或者通过CAN总线接收远处传来的控制信号再通过接口输出控制。这种器件非常适合于传感器和执行器与网络的连接。7576第四节 CAN应用系统随着车上网络越来越复杂,有一些情况需要实现不同网络间的连接,也就是需要网关。为了支持这种结构,一些厂家推出了双CAN结构的微控制器,如图2-39,即
28、在一个节点上的微控制器与两个CAN控制器相连,这两个CAN控制器分别连入不同的CAN网络,这两个网络可以采用不同的的通信协议。网关功能可以由图2-39(a)给出的硬件方式完成也可以由图2-39(b)给出的软件方式完成。7778第四节 CAN应用系统如图2-40,对于要转发的信息,一个CAN控制器接收的数据过滤后送入FIFO;另一个CAN控制器发现FIFO不空时就取出信息并赋予新的标识符后发送到新的网络。79第四节 CAN应用系统三、CAN节点的信息处理节点的信息处理CAN系统中,一个节点往往就是一个控制单元。对于使用带中间缓冲寄存器的CAN控制器的节点,控制单元的微控制器要通过CAN发送信息时
29、,通过与CAN控制器的接口把信息写入发送缓冲寄存器;这个信息通过CAN协议控制逻辑包装后向总线上发送。80第四节 CAN应用系统有一些CAN控制器采用如图2-41所示的多发送缓冲寄存器结构。由内部仲裁判定出发送缓冲寄存器中优先级最高的信息送到CAN协议控制逻辑。81第四节 CAN应用系统为了更灵活的处理发送和接收的信息,CAN控制器也采用一种目标(Object)存储器结构。如图2-4282第四节 CAN应用系统如图2-43,有时,在信息传送时会发生所谓外优先级倒置现象(Outer Priority Inversion)。当一个节点要发送存在不同缓冲寄存器中的一组具有高优先级的信息时,如果两个信
30、息帧间的间隔大于CAN协议定义的最小时间,另外一个节点就有可能在这时开始一个低优先级信息的发送,而使高优先级的信息被阻。为了避免出现外部优先级倒置现象,CAN节点在发送连续的信息帧时应尽量缩短内部处理时间,使帧间的间隔保持最小的允许范围。83第四节 CAN应用系统84第四节 CAN应用系统四、四、CAN信息接收过滤信息接收过滤由于CAN使用广播式信息发送,各节点根据总线上的信息特征判断是否接受,所以信息过滤是CAN控制器的一个最基本功能。所谓过滤(Filter)就是判断接收到的信息是否为本节点感兴趣的信息;是,则送入接收缓冲寄存器;否则,这个信息被滤掉。完成这个功能的部件(软件或硬件)称为过滤
31、器。85第四节 CAN应用系统实现过滤器的方法很多。最简单的方法是对接收的信息帧标识符域中感兴趣的位进行按位匹配;这些位与给定的编码完全匹配时接受信息,否则放弃这个信息。现在很多CAN控制器都使用可编程的多级接收过滤器;如图 2-44,通过硬件编程,它可以提供更灵活的过滤算法。86第四节 CAN应用系统在所谓全CAN(Full CAN)控制器中,还使用一种一对一的匹配过滤;如图2-45,CAN控制器对每一个接收缓冲寄存器设定一个标识符匹配码。在这种结构中一般有一两个接收缓冲寄存器可以接受任何标识符域是任何值的信息,称为基本CAN选项(Basic CAN Option),它可以支持软件过滤策略。
32、87第五节 典型CAN元器件一、典型典型CAN接口及与接口及与CPU的连接的连接1.CAN控制器控制器Intel 82527Intel 82527 是按照CAN协议实现串行通讯的控制器,它可由硬件实现信息发送、信息接收、接收信息过滤、发送搜索、中断逻辑等功能。由于总线通信功能主要由硬件完成,大大降低了CAN节点主机的通信处理负担。Intel82527支持CAN 2.0A,2.0B标准,可以发送/接收标准格式信息和扩展格式的信息,是比较典型的独立CAN控制器。88第五节 典型CAN元器件Intel82527具有以下基本功能和特性具有以下基本功能和特性:支持CAN2.0 协议标准,包括标准格式和扩
33、展格式;适应标准格式和扩展格式标识符的可编程全局接收过滤屏蔽;具有15个8位信息对象缓存模块,其中,14个为发送/接收缓冲存储器,1个屏蔽码可编程的接收缓冲存储器;具有多种CPU接口模式,包括8位地址/数据复用模式、16位地址/数据复用模式、8位同步非复用模式、8位异步非复用模式和串行接口模式(SPI);传输速率可编程;时钟输出可编程;89第五节 典型CAN元器件灵活的中断结构;灵活的状态接口;可编程的输出比较器;2个8位双向I/O接口;PLCC44或QFP44封装;引脚与Intel82526兼容(引脚9、30、44有所不同,这些脚在Intel82526中用作片选,在Intel82527用作接
34、口);使用环境温度:-40125度。90第五节 典型CAN元器件图2-46 是M68HC11与Intel82527的一种典型连接,Intel82527的CS可以有别的连法,但对应的接口地址不同。91第五节 典型CAN元器件图2-47和图2-48是两种典型的Intel82527与MCS51的连接。图2-47的方案中,两个芯片各自使用独立的时钟;如果Intel82527使用16MHz的时钟,应设置SCLK=XTAL/2;如果使用8MHz的时钟,应设置SCLK=XTAL。在图2-48的方案中,MCS51的时钟由Intel82527的CLOCKOUT提供,Intel82527的CLOCKOUT的默认频
35、率值为XTAL。929394第五节 典型CAN元器件2.CAN总线控制器总线控制器SJA1000SJA1000是Philips 公司生产的适合汽车环境和一般工业系统环境的独立CAN控制器,是PCA82C200(Philips 公司早期生产的一种支持基本CAN的独立控制器芯片)的换代产品;它的软件和硬件与PCA82C200兼容。SJA1000支持CAN2.0B,而且具有一些新的特性,应用非常广泛,是比较典型的独立CAN控制器。SJA1000有两种操作模式:基本CAN模式(与PCA82C200完全兼容),和具有很多扩展功能的Peli CAN模式。95第五节 典型CAN元器件具体芯片引脚排列与方案如
36、图2-49和图2-50所示。9697第五节 典型CAN元器件二、CAN 总线发送总线发送/接收驱动器接收驱动器 1.CAN 总线发送总线发送/接收驱动器接收驱动器BOSCH CF150C 总线发送/接收驱动器(Transceiver)实现总线控制器与总线之间的接口功能,完成信号形式的转换和总线驱动功能。设计CAN节点时,实现总线发送/接收驱动功能有两种形式,一个是选用带有总线驱动功能的总线控制器;另一个是使用独立的总线发送/接收驱动器。表2-7是Bosch的CF150C系列CAN总线发送/接收驱动器产品,其中CF150C是最基础的器件。9899性能型 号CF105CCF151CF160CF16
37、1CF173/CF175满足ISO11898是是是是是保护功能-5-+36V短路保护-5-+36V短路保护过热保护过热保护短路保护供电电压/V555微控制器3;总线5微控制器3;总线5环境温度/OC-40110-40-125-40-125-40-125-40-125封装SOIC8SOIC8SOIC8SOIC8SOIC8兼容/完全兼容CF150C引脚1-4,6,7与CF150C兼容引脚1-4,6,7与CF150C兼容2002年9月推出产品其它功能有高/低速模式有高/低速模式有复位功能、改进的EMC性能、只有高速模式、无外部线圈无复位功能、改进的EMC性能、只有高速模式、无外部线圈只有高速模式、支
38、持42V电源、唤醒功能、杰出的EMC性能表表2-7 BOSCH CAN总线发送总线发送/接收器产品接收器产品100第五节 典型CAN元器件三、其他其他CAN器件器件1.独立独立CAN控制器控制器目前,有适应各种不同需求或性能的CAN控制器芯片,包括独立的和嵌入微控制器的CAN控制器、CAN总线发送/接收驱动器以及串行连接I/O器件。同类的CAN器件,各公司的产品或不同型号的产品参数有所不同,结构也可能有一些区别,但基本原理和基本功能是一样的。101第五节 典型CAN元器件2.嵌有嵌有CAN控制器的微控制器(单片机)控制器的微控制器(单片机)由于CAN网络被广泛应用于基于微控制器的系统中,所以多
39、数微控制器生产商都开发具有CAN控制器接口的微控制器芯片,把CAN控制器以接口形式直接集成到微控制器中。使用集成在微控制器中的CAN控制器,应用中避免了硬件上的连接设计,应用的其它过程与独立CAN控制器一样。102第六节 CAN网络例一、CAN结点如图2-52,本例中,CAN总线系统网络节点主要由微处理器P89C51,CAN控制器SJA1000、CAN收发器TJA1050和其他外围器件构成。103104第六节 CAN网络例二、CAN节点的初始化节点的初始化一个CAN节点必须适当的设置CAN控制器的寄存器,初始化后才能使其进行通信工作。在CAN控制器复位后进行初始化,复位有三种基本形式:一是上电
40、复位;二是硬件复位;三是软件复位,即运行期间通过给CAN控制器发一个置1复位请求位的复位请求。105第六节 CAN网络例三、CAN报文的发送报文的发送完成初始化后,CAN节点便能进行正常的CAN报文发送和接收。发送时,当判断SJA1000发送就绪,将待发送的数据按CAN帧的格式组合成一帧报文,送入SJA1000发送缓存区中,然后在启动SJA1000的发送命令即可将数据发送到CAN 总线上。106第六节 CAN网络例1、SJA1000状态寄存器状态寄存器状态寄存器(SR),它反应CAN控制器的状态107第六节 CAN网络例2.TCS&TBC在向SJA1000发送缓冲区写入一帧数据,并启动它的发送
41、之前,首先就要判断SJA1000是否正在发送数据,是否已经释放发送缓冲区,这些信息通过读取标志位TCS和TBS确定。如果TCS和TBS都为1,那么就代表SJA1000的最后一次发送已经完成并且发送缓冲区已经释放,可以写入要发送的新数据,如果TCS&TBS为0,就说明SJA1000正在发送数据或发送缓冲区锁定,需要等待其发送就绪。108第六节 CAN网络例3.向发送缓冲区(向发送缓冲区(TX)写入数据)写入数据由于CAN的发送缓冲区具有一定的格式,数据必须符合它的格式才能正确发送出去。发送缓冲区被分为描述符区和数据区,描述符区的第一个字节是帧信息字节,帧信息字节说明了发送的CAN报文的帧格式,表
42、明是标准帧(SFF)还是扩展帧(EFF)、是远程帧还是数据帧以及准备发送的CAN 报文的数据长度。109第六节 CAN网络例4.发送命令发送命令命令寄存器(CMR),它包括5个有效命令,通过对它的命令位的设置,可以让CAN控制器SJA1000执行不同的动作。在向发送缓冲区写入数据后,就可以通过置位发送命令位CMR.0(TR)启动发送。发送程序基本流程如图2-51所示。110111第六节 CAN网络例四、CAN报文的接收报文的接收接收子程序比发送子程序复杂一些。在处理报文接收的过程中,还要对诸如总线关闭、错误报警、接收溢出等情况进行处理。收到的报文通过接受过滤(ACF)放入SJA1000的FIF
43、O缓冲器中。从接收缓冲器取走一条报文后,要通过置位SJA1000的命令寄存器(CMR)来释放接收缓冲器。112第六节 CAN网络例在接收过程中,要了解是否有总线关闭、总线出错、接收缓冲器超载等状态,如果有的话,必须要进行相应的错误处理,否则也不能正常进行数据接收。中断方式接收的程序流程如图2-52。113114第六节 CAN网络例五、五、CAN开发调试工具介绍开发调试工具介绍1.CANoe CANoe(CAN Open Environment)是德国VECTOR公司开发的一个网络集成开发环境,CANoe能支持CAN总线开发的整个过程:从最初的设计、仿真到最终的分析测试,实现了网络设计、仿真和测
44、试的无缝集成,是CAN有效的开发调试以及测试工具。CANoe要配合硬件设备一起使用,如CAN-AC2、CAN-AC2-API、CANcardSJA、CANcard2、CANpari、CANcardx、CANcaseXL等。115第六节 CAN网络例利用CANoe进行CAN系统的设计一般分为三个三个阶段阶段。116第六节 CAN网络例第一个阶段第一个阶段是利用数字仿真进行网络需求分析和设计阶段。该阶段首先要定义网络里的通讯需求,包括:需要几个节点;在网络中要发送多少个报文;数据从哪个节点传输到哪个节点;每个报文的具体组成;有哪些外部的输入输出。然后,利用网络数据库工具CANdb+建立起CAN通讯
45、数据库。接下来,建立网络拓扑结构,选择总线的波特率,定义节点的网络行为,使用CANoe建立各个网络节点的模型,并通过仿真来预估在设定波特率情况下的总线负载和延迟。如图2-53,通过第一个阶段的仿真可以检验各个节点功能的完善性和网络的合理性,也可以监控网络负载和延迟。117118第六节 CAN网络例第二个阶段第二个阶段是节点实现和半物理仿真阶段。如图2-54,第一个阶段结束后,能够得到一个完整的系统功能模型。接下来,可以开发真实的控制器节点,并利用总线接口与CANoe上剩余的虚拟节点相连接,来测试真实节点的功能,如通信、纠错。对于并行开发的节点,就可以不受其它节点开发步骤的影响。119120第六
46、节 CAN网络例第三个阶段第三个阶段是全系统集成阶段。如图2-55,开发的最终阶段将逐步把所有的虚拟节点用真实的节点来替代,此时,CANoe只是观察分析的工具了,在这个过程中,能详细观测到整个系统包括各个功能节点的工作。121122第六节 CAN网络例2.USB-CAN总线适配器USB-CAN总线适配器是实现PC机通过USB接口连接CAN总线的CAN调试工具。USB-CAN总线适配器可以被作为一个标准的CAN节点,是CAN总线产品开发、CAN总线设备测试、数据分析的强大工具。采用该接口适配器,PC可以通过USB接口连接一个标准CAN网络,应用于构建现场总线测试实验室、工业控制、智能楼宇、汽车电子等领域中,进行数据处理、数据采集、数据通讯。同时,USB-CAN接口适配器具有体积小、方便安装等特点,也是便携式系统用户的最佳选择。123