摘要: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]。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)