基于DSP的CAN总线转换器的设计
rs232是pc机与通信应用中应用最广泛的一种串行接口;rs485半双工异步通信总线是在分布系统设计中广泛使用的数据通信总线;而can总线是一种可用于远程通信控制的、双向、多主方式的串行现场总线,特别适合于工业设备测控单元的互联。针对上述几种比较通用的串行总线,实现总线之间协议转换的适配器很多,如rs232与rs485之间、rs232与can之间、rs485与can之间的协议转换器等。本文设计了一种可用于can总线、rs232、rs485等三种总线之间的转换器,为多种异型总线之间的互联提供了一种有效的解决方案。
本文引用地址:http://www.amcfsurvey.com/article/21464.htm
总线转换器的功能
如图1所示的总线转换器的功能框图,总线转换器包括了三种通信网络接口,分别为rs232、rs485和can总线接口,能够完成以下几种功能:
(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接口和电源等几个部分组成。
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)所示。
rs232与rs485的命令帧和应答帧的数据格式分别如图4(a)和(b)所示。
在上述协议格式中,源地址和目的地址定义相同,采用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接口发送出去。限于篇幅,不再详述。
(3)rs232接口对应的中断服务子程序rs232接口通常可以外接pc操作站、智能网络节点等,因此将来自rs232接口的控制命令产生的中断设置为高优先级。rs232接口对应的中断服务子程序如图6所示,当有来自pc操作站、智能网络节点的rs232接口的控制命令时,总线转换器将停止轮询rs485从设备,并产生接收中断,响应该命令。总线转换器首先判断目的地址,若目的地址不在本总线转换器内部,则总线转换器将命令地址打包处理后发送至can接口;然后根据命令字将数据信息发送至can接口或等待来自can接口的数据。若目的地址位于本总线转换器内,则总线转换器将命令地址发送至rs485接口;然后根据命令字将数据信息发送至rs485接口或等待来自rs485接口的数据。最后总线转换器将应答或数据信息送至rs232接口。
(4)can接口对应的中断服务子程序
can接口对应的中断服务子程序与rs232接口对应的中断服务子程序基本类似,限于篇幅,不再详述。
评论