典型特征:
废除传统的站地址编码,代之以对通信数据块进行编码,可以多主方式工作;
采用非破坏性仲裁技术,当两个节点同时向网络上传送数据时,优先级低的节点主动停止数据发送,而优先级高 的节点可不受影响继续传输数据,有效避免了总线冲突;
采用短帧结构,每一帧的有效字节数为8个,数据传输时间短,受干扰的概率低,重新发送的时间短; 每帧数据都有CRC校验及其他检错措施,保证了数据传输的高可靠性,适于在高干扰环境下使用;
节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上其他操作不受影响; 可以点对点,一对多及广播集中方式传送和接受数据。 CAN总线协议的优点如下所列:
具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点; 采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作;
具有优先权和仲裁功能,多个控制模块通过CAN 控制器挂到CAN-bus 上,形成多主机局部网络; 可根据报文的ID决定接收或屏蔽该报文; 可靠的错误处理和检错机制;
发送的信息遭到破坏后,可自动重发;
节点在错误严重的情况下具有自动退出总线的功能;
报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。
3.2 CAN总线的位仲裁机制是如何实现的?
CAN总线以报文为单位进行数据传送,报文的优先级结合在11位标识符中,具有最低二进制数的标识符有最高的优先级。
3.3 CAN总线的数据错误检测方法都有哪些?
1)循环冗余检查(CRC):在一帧报文中加入冗余检查位保证报文正确。接收站通过CRC可判断报文是否有错。
2)帧检查:这种方法通过位场检查帧的格式和大小来确定报文的正确性,用于检查格式上的错误。
3)应答错误:如前所述,被接收到的帧由接收站通过明确的应答来确认。如果发送站未收到应答,那么表明接收站发现帧中有错误,也就是说,ACK场已损坏或网络中的报文无站接收。CAN协议也可通过位检查的方法探测错误。
4)总线检测:有时,CAN中的一个节点可监测自己发出的信号。因此,发送报文的站可以观测总线电平并探测发送位和接收位的差异。
5)位填充:一帧报文中的每一位都由不归零码表示,可保证位编码的最大效率。然而,如果在一帧报文中有太多相同电平的位,就有可能失去同步。为保证同步,同步沿用位填充产生。在五个连续相等位后,发送站自动插入一个与之互补的补码位;接收时,这个填充位被自动丢掉。例如,五个连续的低电平位后,CAN自动插入一个高电平位。CAN通过这种编码规则检查错误,如果在一帧报文中有6个相同位,CAN就知道发生了错误。
3.5 常用的CAN总线接口芯片有哪些?并对它们各自的功能及特点作分析和比较。
1、集成CAN的微控制器P87C591
P87C591是一个单片8位高性能微控制器,具有片内CAN控制器,是80C51微控制器家族中非常优秀的一员。它采用了强大的80C51指令集并成功地包含了PHILIPS半导体SJA1000 CAN控制器强大的PeliCAN功能。 P87C591全静态内核提供了扩展的节电方式,振荡器可停止和恢复而不会丢失数据。改进的1:1内部时钟预分频器在12MHz外部时钟速率时实现500ns指令周期,即6 CLK工作模式。
P87C591微控制器以先进的CMOS工艺制造,并设计用于汽车和通用的工业应用。除了80C51的标准特性之外,器件还为这些应用提供许多专用的硬件功能。 P87C591的主要特性如下:
16K字节内部OTP程序存储器,512字节片内数据RAM; 3个16位定时/计数器:T0、T1和T2(捕获&比较),1个片内看门狗定时器T3; 带6路模拟输入的10位ADC,可选择快速8位ADC; 增强性能的6 CLK,加速指令周期500ns@12MHz; 2个8位分辨率的脉宽调制输出(PWM);
具有32个可编程I/O口(准双向、推挽、高阻和开漏); 带硬件I2C总线接口;
全双工增强型UART带有可编程波特率发生器; 双DPTR;
可禁止ALE实现降低EMI; 低电平复位信号;
增强型PeliCAN内核;
增强的温度范围:-40~+85℃; 提供PLCC44、QFP44封装。 2、独立的CAN控制器SJA1000
SJA1000是PHILIPS公司PCA82C200的替代产品,完全符合CAN2.0协议的总线控制器。它是应用于汽车和一般工业环境的独立CAN总线控制器。具有完成CAN通信协议所要求的全部特性。经过简单总线连接的SJA1000可完成CAN总线的物理和数据链路层的所有功能。其硬件与软件设计和PCA82C200的基本CAN模式(BasicCAN)兼容。同时新增加的增强CAN模式(PeliCAN)还可支持CAN2.0B协议 SJA1000的主要特性如下:
管脚及电气特性与独立 CAN总线控制器 PCA82C200 兼容; 软件与PCA82C200兼容(缺省为基本CAN模式); 同时支持 11 位和 29 位标识符; 增强CAN模式(PeliCAN); 同时支持多种微处理器接口; 扩展接收缓冲器(64字节FIFO); 支持CAN2.0B协议; 位通讯速率为1Mbps/s; 工作温度范围-40~+125℃; 可编程CAN输出驱动配置。 3、通用CAN收发器PCA82C250
PCA82C250是为CAN总线配套的CAN总线驱动器, 用于CAN总线控制器和物理总线之间的接口其通信介质与RS-485相同,阻抗为120Ω双绞线,信号传输方式与RS-485一样,也是采用差分发送和差分接收。 PCA82C250与RS-485驱动器主要区别在于传输信号的电平上。在RS-485中,其驱动器的2个输出端分别向总线发送一对相异的电平信号,即一端为高电平,另一端为低电平。而在PCA82C250中,2个信号输出端的电平不是相异的。在CANH端,它的2个状态则分别为底电平和悬浮状态。由于PCA82C250采用了上述措施,由它构成的分布工测控系统,即使多个节点同时向网络发送数据,也不会向RS-485那样发生短路现象。
CAN总线的传输距离远,通信速率高。当通信速率为1Mbps时,其任意2个节点之间的最大距离为40m:当通信速率为5Kbps时,其任意2个节点之间的距离可达10km,PCA82C250的特性为: 符合ISO/IS1898标准; 最高通信速率可达1Mbps;
能抗汽车环境下的瞬间干扰;
网络中的节点掉电不会影响整个网络的工作; 斜率控制,抗射频干扰;
差分发送和差分接收,抗电磁干扰(EMI)能力强; 过热保护、短路保护,低功耗待机; 最少可连接110个节点。
4、高速CAN收发器TJA1050
TJA1050是CAN协议控制器和物理总线之间的接口,主要应用在波特率范围从60Kbps到1Mbps的高速汽车应用中。TJA1050可以为总线提供差动的发送功能,为CAN控制器提供差动的接收功能,而且完全符合“ISO 11898”标准。TJA1050是PCA82C250高速CAN收发器的后继产品。 TJA1050的主要特性如下: 完全符合“ISO 11898”标准;
高速率(适合CAN的60Kbps~1Mbps速率范围); 低电磁辐射EME;
具带有宽输入范围的差动接收器,可抗电磁干扰EMI; 没有上电的节点不会对总线造成干扰; 发送数据TXD控制超时功能; 发送禁能时的静音模式;
在暂态时自动对总线引脚进行保护; 输入级与3.3V装置兼容;
热保护、对电源和地的防短路功能; 可以连接至少110个节点;
提供SO-8封装,工作温度范围:-40~+125℃。 5、容错的CAN收发器TJA1054
TJA1054是控制器局域网CAN中协议控制器和CAN物理总线之间的接口。它主要用于客车里最高125Kbps的低速应用。这个器件提供差动的发送和接收能力,但故障条件下会切换到单线发送器和或接收器。一般来说,TJA1054通常被用于汽车电子、工业控制中关键而且重要的场合。
与PCA82C252T、TJA1053T相比,TJA1054/1054A作了重大改进,主要表现在以下方面: 由于CANL和CANH总线输出信号完美匹配,使EME非常低; 特别是在低功耗模式里有很好的抗干扰性(EMI); 在故障模式里,有完全唤醒的能力;
扩展的总线故障管理,包括CANH总线对VCC短路; 支持简单系统进行故障诊断;
对管脚/WAKE的上跳沿和下跳沿唤醒输入信号都敏感; 最适合用于轿车里低速通讯; 增强了保护措施; 支持低功耗模式;
提供SO-14封装,工作温度范围:-40~+125℃。 6、TJA1054A是TJA1054的ESD改进版
7、TJA1054AT即TJA1054T,引脚和功能都向下兼容PCA82C252T以及TJA1053T。也就是说,这两个器件可由保持所有功能的升级芯片TJA1054T或TJA1054AT取代。
3.6 典型的CAN总线接口电路是如何设计的?设计中需要着重考虑的关键问题有哪些?
1、光电隔离电路
光电隔离电路虽然能增强系统的抗干扰能力,但也会增加CAN总线有效回路信号的传输延迟时间,导致通信速率或距离减少。82C250等型号的CAN收发器本身具备瞬间抗干扰、降低射频干扰(RFI)以及实现热防护的能力,其具有的电流限制电路还提供了对总线的进一步保护功能。因此,如果现场传输距离近、电磁干扰小,可以不采用光电隔离,以使系统达到最大的通信速率或距离,并且可以简化接口电路。如果现场环境需要光电隔离,应选用高速光电隔离器件,以减少CAN总线有效回路信号的传输延迟时间,如高速光电耦合器6N137,传输延迟时间短,典型值仅为48 ns,已接近TTL电路传输延迟时间的水平。 2、电源隔离
光电隔离器件两侧所用电源VDD与VCC必须完全隔离,否则,光电隔离将失去应有的作用。电源的隔离可通过小功率DC/DC电源隔离模块实现,如外形尺寸为DIP-14标准脚位的5V双路隔离输出的小功率DC/DC模块。 3、上拉电阻
通过R3(上拉电阻)确保在不发送数据或出现异常情况时,TXD端的状态为逻辑1(高电平)。 4、总线阻抗匹配
CAN总线的末端必须连接2个120Ω的电阻,它们对总线阻抗匹配有着重要的作用,不可省略。否则,将大大降低总线数据通信时的可靠性和抗干扰性,甚至有可能导致无法通信。 5、其它抗干扰措施,为提高接口电路的抗干扰能力,还可考虑以下措施:
1)在82C250的CANH、CANL端与地之间并联2个30pF的小电容,滤除总线上的高频干扰,防止电磁辐射。 2)在82C250的CANH、CANL端与CAN总线之间各串联1个5Ω的电阻限制电流保护82C250免受过流冲击。 3)在82C250、6N137等集成电路的电源端与地之间加入1个100nF的去耦合电容,以降低干扰。
接口电路是CAN总线网络中的重要环节,其可靠性与安全性直接影响整个通信网络的运行。只有抓住设计中的关键,才能提高多接口电路的质量与性能,确保CAN总线网络安全、可靠地运行。
3.7 CAN总线接口硬件及软件设计是如何实现的?
由上位机节点PC机、PCCAN卡、下位机节点51单片机、CAN控制器SJAl000、CAN收发器82C250、光电隔离器6N137,以及发光二节管,置位开关等器件构成。
为了调试硬件电路板,设置上位机和下位机的通讯为三种工作模式:单发单收、单收单发、循环接收发送。通过外部的置位开关选择51单片机的三种工作模式。由于每一节点对应网络中的一个地址,下位机节点51单片机的地址也通过置位开关设定,这样下位机节点不会因为地址不同而要改变程序。
CAN收发器82C250和CAN控制器SJAl000执行了CAN协议的数据链路层和物理层的功能,CAN控制器
82C250作为物理电平的接收发送。为了观察在CAN控制器和CAN发送器之间有无隔离光耦时对数据传输的影响,在其中一个从结点的CAN收发器82C250和CAN控制器SJAl000之间加了隔离光耦6N137。单片机5l通过访问SJAl000的寄存器来实现和上位机的通讯。CAN控制器SJAl000内的接收寄存器和发送寄存器用于暂时存放接受和发送的数据。单片机发送数据是通过设置SJAl000的命令寄存器发送命令位。下位机单片机接受数据是通过中断方式实现的,CAN控制器芯片提供了中断所需的中断引脚。本实验所用的把PC机挂到CAN网络中的PCCAN卡集成了微处理器80C188,CAN控制器SJAl000,CAN收发器82C250,lM/2M的RAM,以及相关的光电隔离电路。微处理器80C188减轻了PC机的通讯负担,所带的RAM直接映射到PC机的内存,加快了PC机和CAN总线的数据交换率。PCCAN上自带光电隔离,保护PC机避免由于地环流的损坏,增强系统在恶劣环境中使用的可靠性。 P1口P3口端电阻CAN_L发置位 光开关CANCAN51微二 控制器收发器CAN_H处理器极驱动器 管P2口控制线
P1口P3口发CAN_L置位 光开关CANCAN51微二
控制器收发器处理器CAN_H极驱动器 管控制线P2口
P1口P3口CAN_L置位
开关CANCAN51微隔离
CAN_H控制器收发器处理器光耦 驱动器控制线 P2口
发光二极管计算机PCCAN卡 端电阻CAN_L2、软件设计 上位机PC机通过PCCAN卡接到CAN总线上,PCCAN卡在CAN2.0A协议的基础定义了自己的协议,该协议兼容CAN2.0A协议,在程序设置时,数据帧格式应依照PCCAN卡协议规定的数据格式。
为了研究基于CAN总线数据传输的可靠性,程序的流程为首先有上位机分别传送三个随机数据到三个下位机结点单片机,下位机结点接受到数据后再返还接受到数据到上位机节点,我们在统计数据时,规定上位机发送到某一下位机节点的数据和再接受来在这一节点的数据相同为一次成功的发送接受,并通过上位机来统计发送接受数据的正确率。 CAN总线通讯采用短帧结构,每帧有效数据为8个字节,PCCAN卡协议规定数据帧结构分为多帧和单帧结构。在相同的硬件上,本通讯实验的软件分别采用了单帧结构和多帧结构。上位机接受和发送数据都采用查询的方式。当上位机接受到下位机的数据时,按照PCCAN卡的协议规定的帧格式,不能判断接受的数据是来自那一下位机的数据,因此规定了下位机节点返回来自上位机节点的数据时,定义发送的首字节作为该下位机节点的地址;上位机把接受到数据也做相应处理,取下接收到的第一字节作为发送数据的下位机节点的地址。上位机侧软件流程图如图3-4。 初始化PCCAN卡
发数据到1结点关闭PCCAN卡发数据到2结点N发数据到3结点Y是否结束?查询接收3次数据统计三节点收发数据的正确率
因篇幅问题不能全部显示,请点此查看更多更全内容