多路异步串行通信系统在光纤陀螺组合中的设计与实现
发布时间:2006-10-14 4:08:56   收集提供:gaoqian
阮 颐 黄培中 卫 炎


  摘要:DSP在与多个外设进行通信时,需要扩展异步串行通信接口。以TMS320C6711为例,采用ST16C554异步串行收发器,介绍了目前最先进的C6000系列DSP与多路RS232、RS485/422设备通信的设计方案,并给出了软硬件实现实例。

  关键词:数字信号处理器 通用异步串行收发器 可编程逻辑器件 光纤陀螺

  DSP与计算机通信的外部接口主要可划分为串行通信口和并行通信口。串口通信包括采用RS232、RS485/422、USB、IEEE1394等协议的通信,并口通信包括采用IEEE488、IEEE1248等协议的通信。本文主要介绍DSP多路RS232、RS485/422通信系统的设计与实现,并将此系统应用于光纤陀螺三维角速率测量组合中。

  1 系统方案设计

  1.1 系统框图

  图1为DSP多路异步串口通信系统的框图。计算机接收端为通用的数据采集卡,其与DSP之间采用RS485/422协议,通信速率可达921.6kBPS。光纤陀螺与DSP之间采用RS232协议,通信速率可达115.2kBPS。该系统可以实现DSP与三路RS232设备和一路RS485/RS422设备的通信。



  1.2 TMS320C6711简介

  TMS320C6000系列DSP芯片最初主要是为移动通信基站的信号处理而推出的超级处理芯片,200MHz时钟的TMS320C6711完成1024点的FFT算法的时间只要66μs,比传统的DSP芯片要快一个数量级,因此在民用和军用领域都有广阔的应用前景。在军事通信、电子对抗、雷达系统、精确制导武器等高智能化的应用领域,这种芯片的处理能力具有不可替代的优势[2]。TMS320C67XX是TMS320C6000中的浮点系列,TMS320C6711是其中性价比较好的一款芯片。正如其它的TMS320C6000系列芯片一样,该芯片提供了两个多通道同步缓冲串口,没有提供异步串口,因此需要进行异步串口扩展。

  1.3 通信方案设计

  目前几乎所有的数字信号处理器都提供了一个或多个串行接口,然而,多数DSP芯片提供的是同步串口。在实际的应用中,也需要DSP能够与多个外设进行异步串行通信,如与PC机或光纤陀螺之间进行串行数据传输就要求DSP系统具有多路UART串行接口;当然也可以利用通用的I/O口构成串口,由软件设定波特率(在DSP不繁忙的情况下,往往采用这种方法)。但是当这两种I/O线被占用或对通信的实时性要求较高时,DSP应该通过扩展异步通信芯片来实现高速串行通信。

  针对这种情况,本文研究并实现一种简单可靠的异步串口扩展方法,即在DSP的并行总线上扩展UART芯片,用硬件实现异步数据传输。该方法的优点是软件实现简单,代价是在总线上需扩展其它设备。由于本方案要实现DSP与四路外设的异步串口通信,综合考虑硬件连接和软件编程的方便性,采用四通道ST16C554串行异步收发器与多路电子转换芯片MAX3245E来完成。这样,用最简单的硬件连接和软件编程就能实现四路异步的串行通信。

  1.4 ST16C554简介

  ST16C554是EXAR公司的异步通信芯片,其主要特点如下[3]:

  ·与ST16C454、ST68C454、ST68C554、TL16C554兼容;

  ·16字节的发送与接收FIFO;

  ·接收控制和发送控制相互独立的四通道选择;

  ·四个可选的接收FIFO中断触发级;

  ·标准MODEM接口;

  ·最高可达1.5M的波特率,其波特率发生器可编程;

  ·数据位长度为5、6、7、8,停止位长度为1、1.5、2;

  ·具有偶校验、奇校验或无校验模式。

  ST16C554不仅能将DSP发送的数据进行并/串转换,还能将从外设或MODEM接收的数据进行串/并转换,能够同时完成四个独立通道的收发。同时,ST16C554还具有四组独立的16字节的接收与发送FIFO,可以通过使能FIFO及设置FIFO中断触发级有效地减少CPU的中断,提高系统效率及可靠性。



  2 系统硬件设计

  系统的硬件设计框图如图2所示。该硬件系统由电源转换电路、电源监控电路、DSP、SDRAM、FLASH ROM、UART、电平转换芯片及可编程逻辑芯片等组成。电源转换电路完成5V至3.3V/1.8V的DC-DC转换,提供系统设计中所有低压芯片的电源。电源监控电路用来监控系统所有电源电压, 当电源电压低于额定值时,DSP及UART复位,对芯片起保护作用。ST16C554 UART同时完成A、B、C、D四个通道的通信,其中A、B、C三个通道完成三路RS232的异步收发,波特率为115.2kBPS,D通道完成RS485/422的通信,波特率为921.6kBPS,且波特率可以在相应的控制寄存器中分别设置。当外接晶振为14.7456MHz时,可以方便地完成上述波特率的设置。多路UART-RS232电平转换器件MAX3245转换速率可达1MBPS。可编程逻辑芯片为XILINX公司的CPLD(XC9572XL),用以完成系统中所有的逻辑控制。

  当DSP对UART进行读写操作时,必然涉及到UART的实际地址在DSP中的转换。本方案中DSP的CE3空间设为8位异步模式,相应的地址范围为0xB0000000~0xBFFFFFFF。而对应于UART的读写操作地址以及四个独立通道的选通地址,就要加上相应的偏移量。相应的读写及片选逻辑由CPLD完成。CPLD相应的内部逻辑如下:

  ——CE3 COMMUNICATION SPACE ADDR=B0000000—BFFFFFFF

  D3: CSF3<=CE3 OR(NOT EA5);--通道C FOG3ADDR=B0000008

  CSF2<=CE3 OR(NOT EA4);--通道B FOG2ADDR=B0000004

  CSFl<=CE3 OR(NOT EA3);--通道A FOG1ADDR=B0000002

  CSF4<=CE30R(NOT EA2);--通道D RS422ADDR=B0000001

  其中,CSF1~CSF4为通道选择信号,低电平有效;EA2~EA5为DSP的地址线。

  3 软件设计

  该系统软件设计包括PC机、TMS320C711及ST16C554的初始化和通信协议等。下面将结合本系统的硬件给出TMS320C711初始化ST16C554的程序。初始化的主要任务是设置操作每个通道所需要的参数,这些参数包括串行通信时数据串的数据位数、停止位数、奇偶校验等。另外,还需要设置发送和接收的波特率及中断方式。

  其中RHR为接收保持寄存器,THR为发送保持寄存器。FCR为FIFO控制寄存器,设置为FIFO使能。IER为中断使能寄存器,与FCR配合使用,设置为FIFO中断方式,也可以设置为DMA方式。LSR为线性状态寄存器,通过查询最低位检测FIFO或RHR中是否有数据。DLL及DLM为波特率设置寄存器,通过对晶振分频完成波特率的设置。当LCR的最高位为1时,才能改变DLL及DLM的设置。

  以通道A为例,DSP对ST16C554初始化的C语言程序如下:

  /*FOG1*/

  *(char*)0xb0000032=0x80;/*lcr=80*/

  *(char*)0xb0000002=0x08;/*dll=08*/

  *(char*)0xb0000012=0x00;/*dlh=00*/

  *(char*)0xb0000032=0xlb;/*lcr=1b*/

  *(char*)0xb0000022=0x01;/*fcr=01*/

  *(char*)0xb0000012=0x01;/*ier=01*/

  *(char*)0xb0000022=0x03;/*fcr=01*/

  *(char*)0xb0000022=0x01;/*fcr=01*/

  四个通道都设置为FIFO方式及中断使能。通道A、通道B、通道C分别设置给RS232,波特率为115.2kBPS;通道D设置给RS485/422,波特率为921.6kBPS。

  DSP对通道A的数据读取程序如下:

  while((readtp & 0x01)!=0)

  {readdata=*(char*)0xb0000002;/*read rhr */

  readtp=*(char*)0xb0000052;/*read 1sr*/

  }



  4 与光纤陀螺的对接测试

  将该系统与光纤陀螺对接,测试表明该系统完全满足设计要求。

  图3为陀螺仪的标度因数测试结果,图中横坐标为输入角速率,纵坐标为DSP输出的数据经D/A转换后的电压输出值,图中曲线是根据输入输出数据用最小二乘法拟合求得的。

  该系统的软件及硬件已调试通过,并成功地应用于航天光纤陀螺角速度测量系统中。该方案能够灵活高效地完成DSP与多个PC机或传感器(即多个光纤陀螺)之间的异步串口通信,还可以实现与MODEM之间的标准接口。另外,若利用DSP的EDMA功能完成收发,还可以进一步提高系统性能,实现高速串行通信[4]。


摘自 电子技术应用
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50