用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供电。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语言程序如下: