学海荡舟手机网

主页 > 实用文摘 > 教育文摘_18 > > 详细内容

多路异步串行通信系统在光纤陀螺组合中的设计与实现_通信网络论

摘要: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]。