首页 | 期刊简介 | 编辑部 | 广告部 | 发行部 | 在线投稿 | 联系我们 | 产品信息索取
2024年12月26日星期四
2011年第01期
 
2010年第12期
 
2010年第11期
2010年第11期
 
2010年第10期
2010年第10期
 
2010年第09期
2010年第09期
 
2010年第09期
2010年第08期
 
2010年第07期
2010年第07期
 
2010年第06期
2010年第06期
 
2010年第05期
2010年第05期
 
2010年第04期
2010年第04期
 
2010年第03期
2010年第03期
 
2010年第02期
2010年第02期
 
2010年第01期
2010年第01期
 
2009年第12期
2009年第12期
 
2009年第11期
2009年第11期
 
2009年第10期
2009年第10期
 
2009年第9期
2009年第9期
 
2009年第8期
2009年第8期
 
2009年第7期
2009年第7期
 
2009年第6期
2009年第6期
 
2009年第5期
2009年第5期
 
2009年第4期
2009年第4期
 
2009年第3期
2009年第3期
 
2009年第2期
2009年第2期
 
2009年第1期
2009年第1期
 
2008年第12期
2008年第12期
 
2008年第11期
2008年第11期
 
2008年第10期
2008年第10期
 
2008年第9期
2008年第9期
 
2008年第8期
2008年第8期
 
2008年第7期
2008年第7期
 
2008年第6期
2008年第6期
 
2008年第5期
2008年第5期
 
2008年第4期
2008年第4期
 
2008年第3期
2008年第3期
 
2008年第2期
2008年第2期
 
2008年第1期
2008年第1期
基于DSP的CAN总线转换器的设计

The Design of CAN Bus Adapter Based on DSP

扬州大学信息工程学院电气及自动化工程系



RS232是PC机与通信应用中应用最广泛的一种串行接口;RS485半双工异步通信总线是在分布系统设计中广泛使用的数据通信总线;而CAN总线是一种可用于远程通信控制的、双向、多主方式的串行现场总线,特别适合于工业设备测控单元的互联。针对上述几种比较通用的串行总线,实现总线之间协议转换的适配器很多,如RS232与RS485之间、RS232与CAN之间、RS485与CAN之间的协议转换器等。本文设计了一种可用于CAN总线、RS232、RS485等三种总线之间的转换器,为多种异型总线之间的互联提供了一种有效的解决方案。


总线转换器的功能

如图1所示的总线转换器的功能框图,总线转换器包括了三种通信网络接口,分别为RS232、RS485和CAN总线接口,能够完成以下几种功能:

图1 总线转换器的功能框图(略)

(1)RS232与RS485之间的通信转换:带有RS232接口的PC操作站、智能网络节点可以通过该总线转换器的RS485接口接入由其构成的RS485网络,实现RS232站点与RS485网络之间的数据通信。

(2)RS232与CAN之间的通信转换:带有RS232接口的PC操作站、智能网络节点可以通过该总线转换器的CAN接口接入到由其构成的CAN网络,实现RS232站点与CAN总线网络之间的数据通信。

(3)RS485与CAN之间的通信转换:通过该总线转换器,RS485网络可以实现与CAN网络之间的连接,完成网络之间数据通信。


总线转换器硬件设计

总 线转换器的硬件原理图如图2所示。它主要由TMS320LF2407A(CPU)及CAN总线接口、RS485接口、RS232接口和电源等几个部分组成。

图2 总线转换器的硬件原理图(略)

TMS320LF2407A的CAN模块是一个16位的外设模块,它完全支持CAN2.0B协议。可外接PHILIPS公司的PCA82C250T作为CAN控制器和物理总线间的接口,其中电阻R1,R2,R3及二极管D1(IN5819)用来实现5V与3.3V之间的电平转换电路。

TMS320LF2407A的串行通信接口(SCI)模块是一个标准的通用异步接收/发送(UART)可编程串行通信接口。通过SCI接口,我们采用了MAX3485实现TTL与RS485电平之间的转换。MAX3485工作于半双工方式下,将TMS320LF2407A的IOPF6引脚同时控制MAX3485的DE和/RE引脚,可实现发送和接收两种控制状态的转换。

由 于TMS320LF2407A只带有一个SCI接口,所以需扩展一个UART接口来实现RS232接口功能。由于总线转换器的通信实时性要求较高,我们采用了扩展异步通信芯片的方法来实现扩展UART接口。异 步通信芯片TL16C550C可实现如下功能:在接收到外部器件或MODEM的数据时,完成串行到并行的转换;在接收到CPU的数据时,完成并行到串行的变换,并进行串行发送。所以在TL16C550C的输出口外接一个RS232电平转换芯片MAX3232,即可实现RS232接口的扩展。当其XIN、XOUT端外接1.8342MHz晶振时 ,将波特率因子寄存器设置为03H,DSP即可实现以38400bps的波特率与 RS232设备通信。同时将TL16C550C的/RXRDY和/TXRDY接入DSP的两个外 部中断,使RS232通信工作于中断方式,这样可有效保证通信的实时性。


总线转换器软件设计

总线转换器主要实现RS232、RS485和CAN总线之间的数据转换与传送。RS232和RS485只定义了物理层协议;而CAN的协议规范定义了其物理层和数据链路层。因此本设计中的重点是要定义和实现RS232、RS485和CAN总线之间的协议转换。

通信协议

(1)CAN通信协议:由于CAN总线数据传输时每帧最多8个字节,所以当CAN通信时传输数据大于8时,必须将数据打包传送。其命令帧和应答帧传输格式定义分别如图3(a)和(b)所示。

图3(a) CAN命令帧格式(略)

图3(b) CAN应答帧格式(略)


(2)RS232与RS485通信协议

RS232与RS485的命令帧和应答帧的数据格式分别如图4(a)和(b)所示。

图4(a) RS232与RS485的命令帧格式(略)


图4(b) RS232与RS485的应答帧格式(略)



(3)有关地址、命令和应答状态的说明

在上述协议格式中,源地址和目的地址定义相同,采用2个字节来实现地址划分,其定义如下:字节1用来区分CAN网络中设备号,而字节2代表总线转换器下的RS485网络中的设备地址(其中0FFH除外,若字节2为0FFH,则代表该总线转换器下的RS232设备)。
在协议格式中,命令包含两种:01H代表发送数据至其他设备,02H代表请求其他设备发送数据。应答状态包含两种:15H代表命令执行成功,19H代表命令执行失败。

通信软件流程设计

软件设计采用模块化设计,按照系统功能可划分为:初始化部分、RS485接口对应的轮询程序和485设备请求发送子程序、RS232接口对应的中断服务程序、CAN接口对应的中断服务程序、RS232、RS485和CAN接口分别对应的数据打包和处理程序以及故障处理程序等。下面就几个关键部分加以叙述。

(1)总线转换器的初始化部分

总线转换器的初始化主要包括RS232、RS485和CAN接口及发送、接收缓冲区的相关参数设置。

对 于RS232接口,DSP需将两个外部中断XINT1、XINT2的优先级设置为高优先级模式;并设置TL16C550C的波特率因子寄存器。

对于RS485接口,将SCI模块设置为多处理器通讯模式;设置串行接口通信寄存器SCICCR为地址位通讯数据格式,设置串行通信接口控制寄存器为禁止SCI口发送和接收中断,以及设置串行通信接口波特率选择寄存器等。

对于CAN接口,主要包括配置位定时器从而设置通讯波特率和邮箱的初始化,其中将邮箱4设置为发送邮箱,邮箱1设置为接收邮箱。CAN邮箱中断设置为低优先级模式。这样总线转换器在轮询485从设备时,优先响应来自RS232接口的控制命令,其次是响应来自CAN接口的控制命令。

(2)RS485接口对应的轮询程序和RS485设备请求发送子程序

如图5所示,我们将总线转换器设计为RS485网络上的主设备,而挂在该接口上的其他RS485设备均为从设备。这样485网络上的通讯任务均由总线转换器发起,通过总线转换器不断轮询485网络上的从设备,从而获得从设备的状态或信息。若从设备工作正常且不主动请求发送信息,则该从设备返回一个运行正常信息给总线转换器。这时总线转换器可以修改轮询设备号,实现下一个从设备的轮询。若从设备需要主动请求发送信息,则总线转换器调用485设备请求发送子程序。对于RS485设备请求发送子程序设计的关键是要进行目的地址的判断。若目的地址不是位于本总线转换器内部 ,则需将数据打包处理后通过CAN接口发送出去;若目的地址位于本总线转换器内,则将数据打包处理后通过485接口或232接口发送出去。限于篇幅,不再详述。

图5 RS485接口对应的轮询程序(略)

(3)RS232接口对应的中断服务子程序

RS232接口通常可以外接PC操作站、智能网络节点等,因此将来自RS232接口的控制命令产生的中断设置为高优先级。RS232接口对应的中断服务子程序如图6所示,当有来自PC操作站、智能网络节点的RS232接口的控制命令时,总线转换器将停止轮询RS485从设备,并产生接收中断,响应该命令。总线转换器首先判断目的地址,若目的地址不在本总线转换器内部,则总线转换器将命令地址打包处理后发送至CAN接口;然后根据命令字将数据信息发送至CAN接口或等待来自CAN接口的数据。若目的地址位于本总线转换器内,则总线转换器将命令地址发送至RS485接口;然后根据命令字将数据信息发送至RS485接口或等待来自RS485接口的数据。最后总线转换器将应答或数据信息送至RS232接口。

图6 RS232接口对应的中断服务子程序(略)

(4)CAN接口对应的中断服务子程序

CAN接口对应的中断服务子程序与RS232接口对应的中断服务子程序基本类似,限于篇幅,不再详述。

《世界电子元器件》2006.10
         
版权所有《世界电子元器件》杂志社
地址:北京市海淀区上地东路35号颐泉汇 邮编:100085
电话:010-62985649
E-mail:dongmei@eccn.com