用ST16C2552实现DSP高速串行通讯扩展
1 引言
随着大规模集成电路工艺技术的迅速发展,DSP已经越来越广泛地应用于工业场合。工业现场由于许多场合通讯双方相距较远,为了保证通讯成本和可靠性,必须采用串行方式进行通讯。目前TI公司DSP都只有一个UART口,比如TMS320LF2407,当同时需要与上位机和下面的被控对象进行通讯,或者同时连接几个上位机时,则需要对DSP进行串行通讯口扩展,而使用可编程的ST16C2552可以一次扩展两组相互独立的串口,满足各种条件下串行通讯的要求。
2 ST16C2552介绍
ST16C2552是Exar公司生产的通用异步通讯扩展器件,并与飞利浦公司的SC16C2552相兼容,可扩展2路独立的串行通讯,可编程设定通讯起始位、停止位和校验位以确保通讯的可靠性,可编程配置各种不同的波特率,在24 MHz的时钟下,STl6C2552的数据传输速率可高达1.5 Mbit/s。ST16C2552提供16字节的接收和发送FIFO,允许用户配置四种不同的中断出发点,DSP可以根据配置一次并行读人多个数据,提高了传输效率,节省了DSP的工作时间。STl6C2552在2.5 V、3.3 V、5 V供电条件下均可以正常工作,不需要增加任何缓冲器件就可以和各种DSP或者单片机直接连接,非常方便。
ST16C2552提供了两套内部寄存器,每套由12个寄存器组成,用于监测和控制UART每个通道的功能。分别为:发生/接收数据保存寄存器(THR/RHR)、中断状态和控制寄存器(IER/ISR)、FIFO控制寄存器(FCR)、线状态和控制寄存器(LCR/15R)、调制解调器状态和控制寄存器(MCR/MSR)、可编程数据速率(时钟)控制寄存器(DLL/DLM),一个用户可访问的暂存寄存器(SPR)和一个选择功能寄存器(AFR)。
3 硬件连接
ST16C2552和TMS320LF2407的硬件连接方法如图1所示,DSP的数据线DO~D7与ST16C2552的数据线DO~D7相连。DSP地址线A0~A2与ST16C2552的地址线A0~A2相连。DSP的地址线A3与ST16C2552的通道选择引脚CHSEL相连。DSP的外部空间选择引脚IS与ST16C2552的片选
引脚CS相连。两个通道的中断引脚分别连接到DSP的外部中断引脚XINT1和XINT2。采用有源14.7456 MHz晶体振荡器为ST16C2552提供时钟频率。两组UART分别通过两个MAX3485连接到外部RS-485总线,MAX3485的使能由DSP的IOPC6和。IOPC7两引脚控制,整个系统采用3.3 V供电。图2为ST16C2552和TMS320LF172407的最小系统原理图。
4 ST16C2552通讯流程和编程范例
ST16C2552的内部寄存器通过3根地址线A0~A2进行寻址,通过配置寄存器LCR确定具体寻址的寄存器。通过不同的寄存器配置,可以实现需要的各种功能。ST16C2552内部分别有16字节的发送和接收FIFO,通过寄存器对FCR的FCR[0]置1使能,使ST16C2552工作在FIFO模式。
FIFO收发可以通过查询方式来实现。在该模式下,通过FCR[5:4]设置发送FIFO触发数。若设为14个,DSP能够一次写14个字节的数据,然后读中断状态寄存器ISR判断FIFO中的数据量是否低于设定的值,如果为低则继续写数据。同样通过FCR[7:6]设置接收FIFO触发数。若设置为14个,ST16C2552可一次从外面接收14个字节数据,DSP可以读寄存器ISR判断是否收满,若已经收满,可一次从ST16C2552读入14个数据,通过读寄存器LSR的0位判断接收寄存器中是否还有数据,如果有,继续读出,直到读完为止。
FIFO收发也可以通过中断方式来实现。若产生中断则INT引脚为高电平。如果没有配置ST16C2552工作在FIFO模式下,则DSP每次只能发送或者接收一个字节的数据,就触发中断或者查询寄存器状态位。这里给出来用中断方式进行通讯的流程和C语言程序。
设ST16C2552处于被动响应通讯方式,初始设置为接收状态,接收上位机数据,判断处理后转为发送方式向上位机回复数据。
4.1 初始化
ST16C2552初始化流程如图3所示,C语言程序如下:
4.2 中断发送和接收
以通道1为例,系统中断发送、接收数据流程分别如图4、5所示,C语言程序如下:
5 结束语
基于DSP和ST16C2552的硬件连接已经调试成功,TMS320LF2407的程序也通过了CCS编译,并在电路板上调试成功。调试结果表明,在波特率115 200 b/s下通讯数据传输准确,误码率极低。该系统现已应用于产品中。只要将该设计的电路连接和程序稍加改动,就可以应用于其他DSP、单片机的高速串行口扩展,非常有用。
评论