CAN总线协议在嵌入式系统中的应用
摘要:随着计算机技术的飞速发展,尤其是近年来嵌入式系统的发展和应用,给我们的生活带来了很大的方便,各种自动化设备和电器的使用,不仅提高了自动化水平,同时也提高了工作的效率,该文主要阐述了CAN总线协议在嵌入式系统中的应用。
关键词:CAN总线协议;嵌入式系统;应用
中图分类号:TP393文献标识码:A文章编号:1009-304420-5003-02
随着计算机技术和自动化技术的不断进步,嵌入式系统也在发生着变化,CAN总线是在嵌入式系统比较常用的一种总线技术,CAN总线具有通信速率高,可靠性高,连接方便,性价比高的特点,总线利用率高,信息帧最多只含8个字节,能够在强电磁干扰环境下进行远距离传输,因此在嵌入式系统中得到了广泛的应用。
1 CAN总线简介
CAN是Controller Area Network的缩写(以下称☢为CAN),是ISO国际标准化的串行通信协议。CAN通过ISO11898及ISO11519进行了标准化,现在在欧洲已是汽车网络的标准协议。广泛应用于控制系统中的各检测和执行机构之间的数据通信。它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。通信距离最远可达 lOkm,通信速率最高可达1Mbps,网络节点数实际可达110个,每一帧的有效字节数最多为8个,这样传输时间短,受干扰的概率低;通信介质采用廉价的双绞线即可,无特殊要求;每帧信息都有CRC校验及其它检错措施,数据出错率极低,可靠性极高,在传输信息出错严重时,节点可自动切断它与总线的联系,以使总线上的其它操作不受影响。
ภ2 系统的硬件设计
2.1 处理器
S3C2410处理器是Samsung公司基于ARM公司的ARM920T处理器核,采用0.18um制造工艺的32位微控制器。该处理器拥有:独立的16KB指令Cache和16KB数据Cache,MMU,支持TFT的LCD控制器,NAND闪存控制器,3路UART,4路DMA,4路带PWM的Timer,I/O口,RTC,8路10位ADC,Touch Screen接口,IIC-BUS 接口,IIS-BUS 接口,2个USB主机,1个USB设备,SD主机和MMC接口,2路SPI。S3C2410处理器最高可运行在203MHz。
2.2 CAN控制器
SJA1000是一种独立的CAN控制器,主要用于移动目标和一般工业环境中的区域网络控制。它是Philips半导体公司PCA82C200 CAN控制器(BasicCAN)的替代产品,而且它增加了一种新的操作模式――PeliCAN,这种模式支持具有很多新特性的CAN 2.0B协议。SJA1000 采用了两种工作方式:BasicCAN 方式,PeliCAN方式。提供INTEL和Motorola两种寻址方式,地址线和数据线分时复用,SJA1000基于寄存器编址,可以通过读写寄存器来操作它。工作方式通过时钟分频寄存器中的CAN 方式位来选择。
2.3 硬件设计
S3C2410是由 3.3V 供电的微处理器, 其各个IO引脚是3.3V的TTL电平,可以承受 5V 的电压。作为CAN 控制器的 SJA1000 是5V供电, 其各个 IO 口的电平是5V的 TTL 电平, IO 可以直接相连。S3C2410 的P0-P8与 SJA1000 的 AD0-AD7 直接相连实现数据交互,P13、P14、P15、P12分别与SJA1000的ALE/AS、RD/E、WR、CS相连实现读写和片选,nRST、EINT5分别与SJA1000的RST、INT相连实现复位和中断。SJA1000的TX0,RX0分别与 CAN 收发器的TXD,RXD相连。 系统结构框图如图1所示。
3 系统的软件设计
本系统的软件开始基于Wince系统的,因此本系统的开发工具是Platform Builder。Platform Builder是微软公司提供给Windows CE开发人员进行基于Windows CE平台下嵌入式操作系统定制的集成开发环境。它提供了所有进行设计、创建、编译、测试和调试。
3.1 CAN初始化
CAN初始化主要包含系统的复位,进行标志为的判断,设置模式寄存器,进行模式的设置,写复位标志,控制器外部中断的设置,完成CAN的初始化。具体流程如图2所示。
3.2 CAN总线驱动的开发
根据wince驱动的开发流程,本系统的CAN总线驱动开发采用流接口驱动模式。主要要实现以下几个模块函数的实现,最总完成整个CAN总线的驱动的开发。包含CAN_Open、CAN_Close、CAN_Read、CAN_Write、CAN_IoControl和CAN _Init等模块。其中CAN_Init模块是系统启动时由文件系统自动调用的,主要完成设备的初始化工作。另外,对于流接口驱动程序可选函数CAN_PowerUp和CAN_PowerDown,主要实现电源管理的功能。
4 总结
该文采用CAN控制器SJA1000和嵌入式处理器S3C2410来实现CAN总线的功能。详细的介绍了CAN总线技术在嵌入式开发过程中的应用。通过测试验证,在实验室环境条件下,系统运行效果良好。相信随着计算机技术的不断发展,CAN总线技术也一定会得到更加广泛的使用。
参考文献:
[1] 广州致远电子有限公司. CTM8251从CTM825,1AT通用CAN隔离收发器 Rev1.00 [Z]. 2007-12-25.
[2] 广州周立功单片机发展有ฃ限公司CAN-bus网络电缆与插座的选择[Z]. 2004-08-06.
[3] 刘森. 嵌入式系统接口设计与Linux驱动程序开发[M]. ℃北京航空航天大学出版社,2006.