郭丹丹 杨瀛陆
摘 要:本文介绍了CAN总线的概念,给出了SJA1000控制器的基本功能,原理框图,描述了软件设计的流程,分为初始化、发送和接收流程,给出了上位机测试软件界面,总结SJA1000是很好的CAN通讯控制器。
关键词:CAN;SJA1000控制器;硬件设计框图
中图分类号:TN915 文献标识码:A
1 CAN总线概述
CAN总线(Controller Area Network)是众多现场通信总线的一种,它属于串行数据通讯总线。CAN网络最大通讯距离为10km(5kbps),通讯速率可配置最高可达1Mbps(40m)。
2 SJA1000独立控制器简介
CAN总线器件有两种:一种是独立CAN控制器;另外一种是片上微控制器的总线控制器。SJA1000CAN控制器属于独立的CAN控制器,因为它支持CAN2.0B规约,软件和硬件都兼容之前的同类型芯片PCA82C200,技术相对比较成熟,并能应用在汽车和工业环境下,因此应用的范围比较广泛。SJA1000的主要特性为:
(1)硬件的外特性与CAN总线控制器PCA82C200兼容;(2)软件操作和使用与PCA82C200兼容;(3)增加了扩展接收缓冲器;(4)在通信上支持CAN2.0B协议;(5)同时支持11位和29位标识符;(6)通讯速率1Mbits/s;(7)对于增强CAN模式的支持;(8)时钟频率可以支持到24MHz;(9)对于微处理器接口支持多种;(10)CAN输出配置可编程;芯片的工作温度范围-40℃~+125℃。
3 硬件设计框图
板卡集成了1片PCI9054总线接口芯片,它负责PCI总线接口的转换;1片Cyclone III系列的FPGA(EP3C25F324),它负责输出控制信号和初始化CAN控制器;4片CAN控制器(SJA1000),它负责并行数据总线到CAN总线协议的转换;4片CAN总线接口控制器(PCA82C250),它负责TTL的CAN总线信号到符合ISO 11898标准的CAN总线信号的转换;2片高速数字隔离器(ADuM1410),它实现CAN总线控制器的数字信号与CAN总线接口控制器的数字信号的隔离。另外,板卡还集成了电平转换芯片(TXS0108EPWR)、隔离电源模块、EEPROM(93LC56)配置芯片、Flash存储器(EPCS16)、状态指示灯和JTAG/AS下载座等。
4 软件设计
软件设计思想:
CAN通信分为两种模式:基本模式和扩展模式,扩展模式较为复杂,本文以基本模式为范例讲述CAN的通信流程。
软件从整体上分为:初始化,发送和接收三个部分。
注意一些寄存器只在PeliCAN 模式有效控制寄存器就仅在BasicCAN 模式里有效而且一些寄存器是只读的或只写的还有一些只能在复位模式中访问。
4.1 初始化。SJA1000的初始化只有在复位模式下才可以进行。芯片的初始化包括工作方式的设定、芯片的接收屏蔽寄存器(AMR)设置和芯片的接收代码寄存器(ACR)的设置、芯片的总线时序寄存器的设置、芯片的输出模式寄存器和芯片的中断寄存器的设置等。初始化设置完成,需要设定SJA1000芯片进入工作模式,然后就可以进行正常的通讯。芯片的初始化步骤如下:(1)关闭中断,进入复位模式;(2)配置接收屏蔽寄存器(AMR)和配置接收代码寄存器(ACR);(3)配置波特率;(4)输出寄存器的配置(建议选择开开漏输出);(5)配置basican模式,关闭CLKOUT输出;(6)打开数据溢出中断、错误中断、发送中断和接收中断(中断寄存器);(7)进入工作模式。
4.2 发送数据。发送数据的流程相对简单主要是配置设备的ID,发送数据长度,然后把需要发送数据放到buffer即可,(表1为发送区列表)发送数据流程如下:(1)首先判断上次发送数据是否完成;(2)判断发送缓冲区是否锁定;(3)如果数据发送完成并且发送缓冲区没有锁定;(4)启动发送。
4.3 接收数据
(1)判断中断寄存器是否有接收中断;(2)如果有接收中断则判断状态寄存器是否有数据;(3)状态寄存器中有数据那么判断报文是否有效;(4)如果有效,那么从接收buffer中获取接收数据的长度和数据属于远程帧还是数据帧,然后开始接收数据;(5)接收数据完成清buffer,以便下次接收数据。
结语
本文以使用SJA1000作为CAN通信的控制芯片进行数据发送和接收,在基本模式下满足了通信的需要并且满足了对于CAN通信参数的设置,在效率测试中可以实现1ms周期接收数据64小时不丢包。通过搭建的测试界面,不但大大地方便了通信的调试,而且验证了逻辑功能以及驱动和动态库的可靠性。
参考文献
[1]郭发东.P89V51RD2与SJA1000实现CAN节点实例[J].山东科学,2006.