DSP下CAN 总线双冗余通信机制的设计与实现

2014-12-23 01:22王浩枫贺吉峰
计算机工程与设计 2014年8期
关键词:外设寄存器中断

丁 瑞,王浩枫,陈 伟,贺吉峰

(中国航天科工集团第二研究院706所,北京100854)

0 引 言

数字信号处理器 (digital signal processors,DSP)是对信号实现实时处理的一类高性能CPU,其特点是具有很高的运算速度,支持并行处理、快速中断处理和I/O 操作[1],适合应用于有高可靠性分系统间通信需要的一主控设备中。控制器局域网是由德国BOSCH 公司提出的一种串行通信协议。CAN 总线以其成本低、可靠性高、实时性、抗干扰能力强等特点在工业中得到广泛的应用[2-5]。基于其优点,主控计算机选用CAN 总线来实现系统间的高强度通信功能。双冗余技术是提高可靠性的主要手段,为了充分保证该系统间通信的高可靠性,本文结合主控计算机的实际应用环境,设计了一种基于CAN 总线的双冗余通信机制。经可靠性分析,采用该机制的通信系统可靠度得到更好的保证。测试实验结果表明,该主控计算机系统运行稳定,可靠性有显著提高。

1 硬件设计与实现

1.1 设计思路

主控计算机系统需与2个设备进行通信,其中,与设备2传输的数据量大,可靠性要求较高。系统设计时,共设计三路CAN 总线,第一路与设备1通信,另两路与设备2通信,这两路CAN 采用双冗余通信机制,以保证与设备2通信的高可靠性。

1.2 硬件实现

本系统处理器选用TI的TMS320F2812芯片。TMS320F2812芯片本身带有增强型CAN 模块 (eCAN)[6],通过该模块实现一路CAN 与设备1的通信。另外,还需两路与设备2的通信,这两路由CAN 控制器和驱动器来实现,在两路CAN控制器和驱动器之间加光耦进行信号隔离,在两路通信信号CANx_H 和CANx_L之间提供匹配电阻120 Ω,可通过开关选择是否连接该匹配电阻。在CAN控制器实现的这两路CAN 总线之间,通过双冗余协议和驱动软件实现故障发生时两路之间切换。其原理如图1所示。

图1 CAN 通信的硬件原理

CAN 总线控制器选用NXP公司生产的SJA1000T,扩展的64字节的FIFO[7],支持11位的BasicCAN 模式及29位的PeliCAN 模式,通信速率高达1 Mbits/s,扩展温度达到-40-+125℃,8位地址/数据复用总线灵活便捷。其电路设计如图2所示。

图2 控制器电路

目前使用比较多的典型的CAN 总线驱动器有:TJA1040,PCA82C250,SN65HVD230[8],而TJA1040 的总线引脚输入电压范围是 (-27V-+40V),比PCA82C250的电压范围更宽,而且TJA1040 具备总线的EMC 优化功能具有良好的对称性,抗电磁干扰特性比PCA82C250提高20dB,同时TJA1040具备共模DC电压的稳压功能,在节点不上电的情况下具备节点无源性等特点,这些都是PCA82C250所不具备的,综合以上几个因素,本系统CAN接口驱动器选择TJA1040。其电路设计如图3所示。

图3 驱动接口电路

隔离光耦使用GH137,该光耦具备高达10 M 的传输速率,前端输入电流最小只需要5mA。其电路设计如图4所示。

图4 CAN 接口隔离电路

2 软件设计与实现

2.1 设计概要

系统软件包括应用层、协议层和驱动层。驱动层软件是软件实现的重点,它是上层应用程序及协议层使用CAN总线进行通信的支持软件。协议层是软件实现的关键,它是应用层软件和驱动层关联起来的桥梁,应用层程序需采用特定的CAN 通信协议,并通过调用驱动程序的接口进行通信。双冗余机制的实现是通过制定一种特定双冗余协议,使应用层软件通过该协议管理和约束驱动层软件接口的调用,从而实现CAN 总线2个通道的冗余容错。CAN 通信驱动层软件主要包括初始化模块、帧发送模块和帧接收模块。本系统软件层次关系如图5所示。

图5 系统软件层次关系

2.2 设计要点

2.2.1 双冗余协议设计

CAN 总线双冗余系统通过双冗余协议进行通信的约束和管理。双冗余协议是以 “握手协议”为基础进行改进的协议,其工作原理为:总线在进行正式CAN 通信前,需先进行建链,2个通道中首先建链成功的通道被确认为最终通信通道,建链方法为 “三次握手”。协议规定主控计算机为主发方,发起握手请求帧,应答方收到握手请求后,发回握手应答帧,主方在规定时间内收到握手应答帧后,便完成一次握手,三次握手成功后,说明该链路正常,否则,自动更换到另一链路。CAN 总线的双冗余通信流程如图6所示。

2.2.2 帧结构

由于CAN 总线报文结构的复杂性,软件实现时帧数据结构的设计至关重要。根据双冗余设计思想需要将传输的报文分为2种:一种为测试帧,用于建链;另一种为正式帧,用于正式报文传输。在帧结构定义时,必须将2 种报文区分开来,而考虑到驱动软件接口的统一性。将测试帧和正式帧用同一结构形式表示,通过一个标志位来区分不同帧。CAN 总线的帧信息一般包含有ID 号、帧类型、数据长度、传输方式、数据缓冲区。综合考虑,CAN 总线帧的数据结构设计如下:

图6 CAN 总线的双冗余通信流程

2.2.3 DSP下定时器的使用

CAN 总线的双冗余机制中,检测通道是否正常,接收测试确认帧是否超时是一个关键环节。DSP 下没有超时机制,本系统利用定时器实现超时功能。F2812 芯片有3 个32位的CPU 定时器,其中,定时器1和定时器2被保留用作实时操作系统OS,CPU 定时器0可以供用户使用[9]。定时器的工作原理为:工作开始将周期寄存器中的值装入32位计数器寄存器。然后计数器寄存器以C28x的SYSCLKOUT 速率递减。当计数器减到0时,产生一个定时器中断输出信号。下面代码祥释了定时器0的使用方法。

定时器结构定义如下:

2.2.4 中断管理

定时器和CAN 总线报文收发都会用到中断,中断管理和使用是系统实现的重点之一。

DSP下的中断分为外设级、外设中断扩展模块 (PIE)级和CPU 级[10]。2812芯片不但本身带有丰富的片内外设,还可以外扩外设。每个外设都可以产生一个或多个中断请求,因此外设级中断请求可能非常频繁,CPU 没有能力去处理所有外设中断请求,需按照一定优先级规则对各种外设中断请求做出仲裁。PIE正是外设中断优先级的制定者,它按向量表对外设中断设置优先级别。

电路设计时,外扩的两路CAN 中断分别使用外部可屏蔽中断XINT1和XINT2,采用下降沿触发。其响应中断的过程为:中断服务子程序挂载到中断向量表上后,应当置位PIE中断使能寄存器PIEIER1的第4位和第5位,同时,CPU 级中断标志寄存器IER 的第1位被置位。当外部中断请求到来时,首先向PIE 控制器发出请求,PIE 级中断标志位寄存器PIEIFR1的第4位或第5位被置位。当PIE 检测到一个未被处理的中断,PIE 中断应答寄存器PIEACK1的相应位也会被置位,PIE 将向CPU 发出中断请求。同样,CPU 级有中断标志寄存器IFR,若IFR 的第1位被置位,CPU 响应中断,处理中断服务子程序,同时,标志寄存器IFR 和PIEIFR1的相应标志位被清除。

3 可靠性分析

以上函数反映了本系统运用双冗余机制的可靠性量化指标,可总结为:

(1)只要有一个通道通信就能保证系统通信具有较高的可靠度;

(2)当某一个通道的可靠性急剧下降时,系统通信的可靠性变化不大,即系统的可靠度具有一定的稳定性。

综上分析,系统采用该双冗余通信,与单通道通信相比大大提高了其可靠性。以主控计算机系统为环境进行了测试,可以获得99.92%的可靠度。

4 结束语

针对系统间高强度CAN 通信的高可靠性需求,提出了一种DSP下基于CAN 总线的双冗余通信机制,并应用于主控计算机系统。结合主控计算机系统的设计实现,详细阐述了该机制软硬件的设计和实现过程,着重剖析了双冗余协议、帧结构、定时器和中断机制等几个实现的重点和难点,最后分析了CAN 总线双冗余通信系统的可靠性。以主控计算机系统为环境,进行了测试实验。系统测试结果表明,使用该通信机制,系统间通信的可靠性有明显地提高。

[1]CHEN Yuanlin,TANG Xinyi.USB communication system based on DSP and VDK core [J].Computer Engineering,2010,31 (3):49-51 (in Chinese).[陈元林,汤心溢.基于DSP和VDK 内核的USB通信系统 [J].计算机工程,2009,31 (3):49-51.]

[2]SHU Genrong.Research of new information display system based on CAN network control[D].Hefei:Mechanical and Electronic Engineering,2010 (in Chinese). [束根荣.基于CAN 网络控制的新型信息显示系统研究 [D].合肥:中国科学技术大学,2010.]

[3]WAN Shanming.TMS320F281XDSP principle and application example[M].Beijing:Beijing University of Aeronautics and Astronautics Publishing House,2007 (in Chinese).[万山明.TMS320F281XDSP原理及应用实例 [M].北京:北京航空航天大学出版社,2007.]

[4]XU Li,WANG Qin,SHI Shaobo.Research and implementation of IEEE 802.11areceiver baseband processing based on heterogeneous multi-core DSP [J].Application Research of Computers,2012,29 (1):241-245 (in Chinese). [徐力,王沁,史少波.一种基于异构多核DSP的IEEE802.11a接收端基带处理的研究与实现 [J].计算机应用研究,2012,29(1):241-245.]

[5]SUO Wenping,AN Jianfeng,FAN Xiaoya.Reliability of interrupt mechanism in SoC [J].China Integrated Circuit,2007,16 (98):63-66 (in Chinese). [索文平,安建峰,樊晓桠.片上系统中断机制的可靠性设计 [J].中国集成电路,2007,16 (98):63-66.]

[6]SUN Yuanmin,YIN Lixin,YANG Shutao.High-speed data acquisition and processing system based on TMS320F2812 [J].Computer Engineering,2009,35 (2):242-244 (in Chinese).[孙元敏,尹立新,杨书涛.基于TMS320F2812的高速数据采集处理系统 [J].计算机工程,2009,35 (2):242-244.]

[7]WANG Liming,SHAO Ying,WANG Mingzhe,et al.Research of improving the dynamic scheduling algorithm in the CAN bus control networks [J].Journal of Systems Engineering and Electronics,2008,19 (6):1250-1257.

[8]Ren Jun,Li Chun-Wen,Zhao De-Zong.CAN-based synchronized motion control for induction motors [J].International Journal of Automation &Computing,2009 (1):55-61.

[9]YUE Kui,LIU Shaojun,HUANG Daoping.Design and application of VHDL read-write on SJA1000internal register[J].SJA1000Computer & Digital Engineering,2009,37 (10):175-178 (in Chinese).[岳奎,刘少君,黄道平.内寄存器的VHDL语言读写设计与应用 [J].计算机与数字工程,2009,37 (10):175-178.]

[10]JIA Guoguang,ZENG Yu,LI Kenli,et al.Algorithm of real-time DSP application based on CAN bus[J].Computer Engineering,2009,35 (6):239-241 (in Chinese). [贾国光,曾钰,李肯立,等.基于CAN 总线的实时DSP 应用算法 [J].计算机工程,2009,35 (6):239-241.]

猜你喜欢
外设寄存器中断
TMS320F28335外部中断分析与研究
多级中断屏蔽技术分析
Lite寄存器模型的设计与实现
一种考虑GPS信号中断的导航滤波算法
常用电子测速法在某数字信号处理器中的应用*
移位寄存器及算术运算应用
跟踪导练(二)(5)
外设天地行情
外设天地行情
外设天地行情