多路异步串行通信系统在光纤陀螺组合中的设计与实现
涉及到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]。
- LT3751如何使高压电容器充电变得简单(08-12)
- 三路输出LED驱动器可驱动共阳极LED串(08-17)
- 浪涌抑制器IC简化了危险环境中电子设备的本质安全势垒设计(08-19)
- 严酷的汽车环境要求高性能电源转换(08-17)
- 适用于工业能源采集的技术 (08-10)
- 单片式电池充电器简化太阳能供电设计(08-20)