1.CAN总线简介
控制器局部网络(CAN ControllerAreaNetwork)是德国Bosch公司从20世纪80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通讯协议。1991年9月PHILIPS公司制定并颁布了CAN2.0技术规范;1993年11月国际标准化组织(ISO)正式颁布了关于CAN总线的ISO11898标准 ,为CAN总线的标准化、规范化应用铺平了道路。
世界各半导体厂商推出了许多CAN总线产品。一类是专用的CAN控制器芯片,如Intel公司的82526,82527;PHILIP公司的82C200,SJA1000;NEC公司的72005等;另一类是嵌入CAN接口的单片机,如Intel公司的87C196CA/CB;PHILIP公司的80C592,80CE598;Motorola公司的68HC05X4,68HC05X16,TI公司的TMS320F240x系列DSP等。
CAN总线具有如下特点:
1) 结构简单,通信介质可是双绞线、同轴电缆或光纤;
2) 通信方式灵活。可以多主从方式工作,可以点对点、点对多点及全局广播方式发送和接收数据;
3) 采用短帧通讯格式,保证了实时性和可靠性,可满足一般工业应用;
4) 非破坏总线仲裁技术,具有多优先级;
5) 集成了CAN协议的物理层和数据链路层功能,可完成对通讯数据的成帧处理工作。
CAN总线具有良好功能特性和极高的可靠性,现场抗干扰能力强。广泛应用于工业测控领域。
2. CAN总线接口的硬件设计
硬件设计使用了TI公司的TMS320LF2407A的DSP芯片,其CAN总线接口的硬件电路如图1所示。一般在CAN控制器和物理总线间采用82C250驱动芯片,提供对总线的差动发送和接收功能。但是因为82C250为5V供电,而F2407采用3.3V供电,两芯片间需要电平转换电路。我们选用了只需3.3V供电的CAN总线收发驱动芯片SN65HVD230。
图1 CAN总线接口电路
F2407的内部集成有CAN控制器。该控制器是一个16位的外设模块,支持CAN2.0B协议,具有6个8字节邮箱;具有可编程的中断配置、总线唤醒功能,以及自动回复、自动重发、错误诊断等功能。CAN模块的结构框图如图2所示。
图2 CAN控制器结构框图
访问CAN模块可分为控制/状态寄存器和6个邮箱的访问。CAN控制器总共有15个16位的控制寄存器,控制着位定时器、邮箱的发送或接收使能、错误状态及CAN中断等。邮箱位于一个48×16位的RAM空间,每个邮箱由邮箱标示寄存器、邮箱控制寄存器及存储空间组成,最大可存储8字节数据。
3. CAN总线接口的程序设计
CAN的通讯采用短帧格式。每个数据帧由帧起始、仲裁域、控制域、数据域、校验域、应答域和帧结束组成。F2407支持标准帧格式和扩展帧格式,如图3所示。标识符是作为报文的名称,在接收器的验收判断和仲裁过程确定访问优先权中使用;远程发送请求位(RTR)确定发送远程帧还是数据帧;数据长度码(DLC)确定每帧发送几个字节数据。
图3 CAN信息帧
在使用CAN控制器前必须对它的一些内部寄存器进行设置。如流程图4和流程图5所示,需配置位定时器和初始化邮箱。位定时器的BCR1和BCR2寄存器决定了CAN控制器的通信波特率、同步跳转宽度、采样次数和重同步方式。邮箱初始化需设置邮箱的标识符,发送的是远程帧还是数据帧及对发送的数据区赋初值。这样,邮箱就能进行正常的发送和接收工作了。
图4 配置位定时器流程图
图5初始化邮箱流程图
CAN控制器的发送邮箱有邮箱4、5及被配置为发送方式的邮箱2、3。如流程图6所示,在写数据到发送邮箱后,如果相应的发送请求位使能,则信息帧被发送到CAN总线上。邮箱权限高的先发送,发送失败将再次发送。
图6 信息发送流程图
邮箱0、1和被配置为接收方式的邮箱2、3为接收邮箱,CAN控制器只接收邮箱标识符相同的信息,或被局部屏蔽寄存器(LAM)忽略的信息,此时接收屏蔽使能位(AME)为1。接收信息的过程如流程图7所示。
图7信息接收流程图
4. 结论
现今的工控设备正向着网络化方向发展,本文设计了基于DSP的CAN总线网络接口,应用于自行研制的交流变频调速设备中。CAN总线接口与传统的RS232串行接口相配合,增强了设备的网络通讯能力,使远程操作功能得以实现。