作者/来源:网络转载 点击率:20
由于目前在DeviceNet节点上被广泛采用的CAN控制器芯片为Philips的SJA1000和Intel的82527两种CAN控制器芯片。下面对它们各自的主要特性作一个介绍。
1.Intel 82527 CAN控制器
*支持CAN2.0,包括标准的和扩展的数据和远程帧;
*可程控全局屏蔽,包括标准和扩展信息标识符;
*具有15个报文缓冲区,每个数据长度为8字节,包括14个TX/RX缓冲区,一个带可程控屏蔽的RX缓冲区;
*可变CPU接口,包括多路8位总线(Intel或Motorola方式)、多路16位总线、8位非多路总线(同步/异步)以及串行接口;
*位速率可程控,并有可程控的时钟输出;
*可变中断结构;
*可对输出驱动器和输入比较器结构进行设置;
*两个8位双向I/O口;
*44脚
PLCC封装,引脚与82526兼容。
Intel 82527控制器芯片是Intel公司Intel 82526 CAN控制器芯片的替代产品,也是支持CAN规范2.0B标准和扩展报文格式的第一个CAN控制器芯片。Intel 82527具有一个功能强大的CPU接口,它可以直接接口至不同的CPU,并可以配置为16位分时复用的地址/数据总线接口,使其可以更充分的利用16位或32位CPU的强大功能。此外,当不需要并行CPU接口时,82527提供了灵活有效的串行接口进行通讯。
82527提供功能强大的15个每个8字节数据长度的报文缓冲区。除最后一个报文缓冲区外,每个报文缓冲区都可以配置为发送或接收,最后一个缓冲区为一个仅具有特定屏蔽设计的报文接收缓存器,以允许选择不同的报文标识符组进行接收。82527同时提供实现报文滤波的全局屏蔽性能,可以全局性的屏蔽到来报文的任何标识符,可编程的全局屏蔽性能适用于标准的和扩展的两种报文格式。
82527的CAN控制器通过在片双口RAM与微控制器进行数据交换。微控制器将要传送的数据信息,包括数据位组长度、标识符、数据传输方向、数据帧或远程帧等包装成多达15的通讯目标送人双端口RAM,82527可以自动完成这些通讯目标的传送。
2.Philips SJA1000 CAN控制器
*支持CAN2.0,包括标准的和扩展的数据和远程帧
*位速率可程控,并有可程控的时钟输出;
*扩展的64字节FIFO接收缓冲器;
*4个字节的验收滤波器;
*时钟频率提高到了24MHz;
*输出驱动器状态可编程;
*可擦写的总线错误计数器;
*当前错误代码寄存器;
*仲裁丢失捕获寄存器;
*28脚DIP/SO封装,引脚及电器特性与82C200兼容。
Philips SJA1000是Philips公司于99年推出的全新CAN控制器芯片,用来取代以得到广泛使用的82C200 CAN控制器芯片。Philips SJA1000在82C200的基础之上增加了一些新的特性,为采用SJA1000 CAN芯片进行DeviceNet 接入产品设计的用户提供了方便和更大的灵活性。
SJA1000的64字节FIFO接收缓冲器使网络设备可以接收更多的报文而不会因为接受缓冲区太小而拒收报文,同时SJA1000采用了4个字节的验收滤波器,可以对DeviceNet报文的整个报文头部进行接收前的检验。
SJA1000在总线错误管理上比起82C200也有很多改进,SJA1000设有可进行读写操作的错误计数器,增加了错误认可中断和可编程的错误警告中断,并提供了当前错误代码寄存器以标记错误发生的类型、状态和位置。
针对DeviceNet的特点,SJA1000提供了一种仅听模式,使DeviceNet节点的自动波特率检测和热插拔通过软件更为容易得到实现。SJA1000还增加了仲裁丢失中断,通过仲裁丢失捕获寄存器可以获得仲裁丢失的位置。图1是SJA1000的功能方块流图。
SJA1000功能方块图
其中CAN核心模块根据CAN总线协议控制数据帧的发送和接收;接口管理逻辑模块提供SJA1000与主微处理器或其它设备的连接,主微处理器可以通过数据/地址复用总线和读写控制逻辑访问SJA1000的所有寄存器;发送缓冲区可以存储一个完整的标准或扩展的报文,当主微处理器要求SJA1000发送报文时,接口管理逻辑操纵CAN核心模块将发送缓冲区中的报文发送到CAN总线上;当接收一个报文时,CAN核心模块首先将总线上的串行位流数据转换位并行数据,然后交给接收过虑模块进行识别,决定该报文是否为主微处理器所要求的报文类别,所有接收的报文可以存放在接收先进先出队列,根据不同的工作模式和数据长度,该队列可以存放最多32个报文,然后用户可以灵活地对报文分为不同地优先级和中断处理服务。
SJA1000可直接连接两类主要的处理器家族:Intel公司的80C51系列和Motorola公司的68xx系列,其芯片外围专门有一个模式管脚用了选择CPU的类型。SJA1000提供了8位地址/数据复用总线和读/写控制信号与CPU交换数据,我们可以将SJA1000看作映射到主微处理器的外围存取器I/O设备。SJA1000与80C51系列微处理器地典型应用如图2所示:
SJA1000通过2个8位寄存器来支持对报文的过滤功能,将应用不关心的报文拒之门外将提供处理期的性能,因为大多数应用都是通过中断的方式交换数据,所以正确的使用过滤功能可以为中断处理函数赢得时间。SJA1000提供一个接收编码寄存器(Acceptance Code Register)和一个接收屏蔽寄存器(Acceptance Mask Register)。接收过滤模块将CAN报文的11位标识符的高8位于这2个寄存器里存放的值相比较,并作出是否接收的判断,其在基本模式(BasicCAN Mode)下工作原理如图3所示:
假设接收编码寄存器ACR和接收屏蔽寄存器AMR的值如下表所示:
SJA1000屏蔽过滤器
SJA1000与Intel微处理器典型应用
在接收屏蔽寄存器中值为1的位表示接收的CAN报文相应的位可以为1或者0,这样的设置情况下,用X表示的位不用关心,只要其它位与接收编码寄存器相应的位一致就行了,因此CAN控制器可以接收64中不同的报文。
SJA1000基本模式接收过滤
3.CAN总线收发接口电路芯片Philips 82C251
Philips 82C251是Philips公司于98年推出的CAN总线收发接口电路芯片。和以前的82C250相比,82C251具有25V过压保护的功能,在工艺上有也有一些改进。
对于CAN控制器及带有CAN总线接口的器件,CAN总线收发接口电路芯片并不是必须使用的器件,因为多数CAN控制器均具有配置灵活的总线收发接口,并允许总线故障,只是驱动能力一般只允许20个左右的节点连到同一条总线上,而82C250/82C251支持多达110个节点,并且能够以1Mbps的速率工作于恶劣的电气环境下。利用CAN总线收发接口电路芯片还可以方便的在CAN控制器与收发器之间建立光电隔离,从而实现总线上各节点之间的电气隔离。
DeviceNet正是利用CAN控制器的(如INTEL82527,Philips SJA1000)的双相位输出方式,通过设计适当的接口电路,实现了网络供电的功能。作为提供对CAN总线的差动发送和接收功能的器件,82C251的主要特性如下:
*与ISO 11898标准完全兼容;
*高速性(最高可达1Mbps);
*具有抗瞬时干扰,保护总线的能力;
*降低射频干扰的斜率控制及热保护;
*总线与电源及地之间的短路保护;
*25V的过压保护功能;
*低电流待机方式和掉电自动关闭输出;
*支持多达110个节点相连接。
DeviceNet通过24V的直流电源进行网络供电,由于82C251所具有的25V过压保护功能,可以避免接线错误对设备带来的损坏。因此我在DeviceNet节点设计时采用了82C251。
对于市场上众多的CAN芯片和微处理器,在DeviceNet的开发中没有一个通用的选用方案,下面我们给出一些基本的准则:
*所有使用11位标识符的CAN芯片都可以使用,DeviceNet对于29位长标识符即不要求也不能使用。
*对于仅支持Group2的设备,CAN控制器的基本工作模式有很好的性能。并且,DeviceNet协议对仅支持Group2的设备的通讯协议为基本工作模式作了优化。
*CAN有两种形式,独立式控制器和嵌入式控制器。使用嵌入式控制器可以减小电路设计的尺寸,但是我们推荐该种控制器仅仅用在某些局部的场合,当满足我们所有开发的需求时。选用独立式控制器允许设计时充分的灵活性。另外在决定选择何种CAN控制器之前,还可以考虑一些有关微处理器的仿真芯片及其功能。
*每个设备都需要有一个区别于其它厂商和区别同一厂商生产的其它设备的32位唯一系列号。因此设备可能要引入Non-Volatile,另外如果需要可设置的参数,那么必须要Non-Volatile存储。
*要特别注意当CAN重置和上电时CAN_H和CAN_L的状态。因为CAN控制器有可能会出现电压漂移或者总线电位不对。因而在实际设计时在TxD脚和收发器之间加上无源推拉电路或者变极器来增强信号抗干扰能力。
*不用的管脚(RX0或者RX1)不能处于漂移状态,可以把它们接到收发器的Vcc/2或者使用电压分频器,防止错误帧的产生。尽管有些CAN控制器可以通过寄存器设置来使某些管脚无效,但最保险的做法是让这些管脚处于正确的电位。