TMS320VC5402和PC机的UART研究与设计
1 引言
本文引用地址:https://www.eepw.com.cn/article/21221.htmtms320vc5402以其低成本、低功耗、资源多的特点在通信、控制领域得到了广泛的应用。片上集成了最大192kb存储空间(64kb ram、64kb rom、64kb i/o),具有时分多路串口tmd,2个缓冲串口bsp、8位并行主机接口hpi、可编程等待状态发生器等,完全可以满足数据处理及控制要求。基于 5402构建的应用系统中必不可少的是各种数据通信接口的设计。与并口相比,串行接口的特点是减少器件引脚数目,节省了硬件系统的体积,降低了接口设计的复杂性。实际应用中,各系统之间需要实现异步串行数据传输和通信,而dsp5402具有同步串口,与标准的异步串行接口不同,本文针对这种应用,设计实现了dsp5402和pc机的异步串行通信。
2 串行通信和dsp5402串口
在工业控制和实际应用中,串行通信的应用已非常普遍,图1示出常见的三种232通信方式,在此笔者选用短距离有线传输方式。目前,大多数pc机的串口采用 rs-232标准,该标准规定采用一个25脚的db25连接器,实际上rs-232的25条引线有许多是很少用的,所以目前较为常用的串口有9针和25 针,在普通电路设计中最为简单且常用的是三线制接法,即在通信中不需要rs-232的控制联络信号,采用发送数据(txd)、接收数据(rxd)、地 (gnd)三脚相连,便可实现全双工异步串行通信,本文即采用此法实现pc与dsp的串行通信。

图1 三种rs-232通信方式
由于rs-232中没有时钟信号,所以按照设定的固定波特率传送。在一信号中包括开始位、停止位和数据位,校验位可以选择。其中数据位为5-8bits,奇偶校验位共有5种方式可选:奇校验、偶校验、始终为1、始终为0以及空;停止位也有三种选择:1位、11/2位以及2位。串口传数时低位优先,由开始位表示数据传输。
dsp5402有2个多缓冲的同步串口,通过幀信号来控制数据流。每一个串口有6个信号:clkr/x:接收、发送时钟信号,dr/dx:接收、发送串行数据信号,fsr/fsx:接收、发送幀同步信号;串行接口有5个寄存器:数据接收寄存器(drr)、数据发送寄存器(dxr)、串行接口控制寄存器 (spc)、数据接收移位寄存器(rsr)、数据发送移位寄存器(xsr),其中3个存储器映射寄存器(spc、dxr和drr)和2个程序不能直接访问的寄存器(rsr和xsr)来操作,rsr和xsr在执行双缓冲功能时很有用。发送数据写到dxr中,而接收数据从drr中读取。其各寄存器配置及控制请参考文献[2]。
3 dsp和pc机串口通信的软硬件实现
3.1 dsp和pc机uart硬件连接
由上所述,pc机的异步串口和dsp5402的同步串口在数据格式以及传送控制上有区别,但是通过必要的硬件控制和软件模拟就可实现dsp5402与标准串口间的通信。dsp5402和pc机的uart实现主要有二种硬件方法和二种软件模拟方法。硬件方法如下:基于max3100的同步转异步实现和利用 dsp5402 i/o模拟时序法。
max3110e内部集成了全功能uart和内置电泵电容以及土15kv esd保护的rs-232收发器。其中,uart部分采用兼容spitm/qspitm/microwiretm的串行接口,因而可节省线路板空间和微控制器的i/0引脚。由于rs-232部分使用了特有的低压差输出级,从而使双接收/发送接口能够在高速通信、正常电源下提供真正的rs-232特性,而功耗仅600μa。通过max3110e可实现同步串行数据接口到异步串行通信口(rs-232)的转换,它可直接与pc机的串行口(com)相连。 max3110e具有尺寸小,价格低,功耗少,通信速率高等特点,因此有着较好的应用前景。max3110e包括uart与rs-232两个独立的部分。其中,uart部分包括兼容于spi的串行接口、可编程波特率发生器、发送缓冲器及发送移位寄存器、接收缓冲器及接收移位寄存器、8字节接收fifo以及有四种可屏蔽中断源的中断产生器。而rs-232部分包括自带电容的电泵,以及可由shdn对其进行硬件关断的。
max3110e通过spi接口与dsp5402进行16位数据的全双工通信。dsp5402通过bdx线向max3110发送的16位串行数据序列中包括传输格式控制字,如波特率设置、中断屏蔽、奇偶校验位等。dsp5402的mcbsp串行接口工作于spi模式时可直接与max3110进行连接。 dsp5402的bdx1与max3110的din连接作为发送数据线,bdr1与dout连接作为接收数据线,发送同步脉冲信号bfsx1作为片选信号,发送时钟信号bclkx1作为max3110的串行时钟输入,硬件接口图如图2所示:

图2 dsp5402和max3110硬件接口图 同时必须根据时序设置dsp5402的mcbsp寄存器,此种uart方式才得以实现,时序图如图3所示:

图3 max3110和dsp5402配合时序 利用dsp5402 i/o模拟时序法分析如下:用定时器中断来处理数据,用i/o口来配置作为输入输出,由于dsp5402单独i/o引脚较少,节省资源,这里使用dsp5402的标志位引脚xf和配合软件得到实现,硬件原理图如图4所示:

图4 硬件原理图
3.2 dsp和pc机uart软件实现
对于基于max3100的同步转异步实现dsp5402编程如下:
stm spcr11,spsa1 ; 配置spcr11
stm #1800h,mcbsp1
stm spcr21,spsa1 ; 配置spcr21
stm #0000h,mcbsp1
stm pcr1, spsa1 ; 配置pcr1
stm #0a0ch,mcbsp1
stm rcr11,spsa1 ; 配置rcr11
stm #0040h,mcbsp1
… … ; 配置rcr21
stm xcr11,spsa1 ; 配置xcr11
stm #0040h,mcbsp1
… … ; 配置xcr21
stm srgr11,spsa1 ; 配置srgr11
stm #0027h,mcbsp1
… … ; 配置srgr21
rpt #20 ; 等待2个clksrg时钟周期
nop
stm spcr21,spsa1 ; 配置spcr21
stm #0040h,mcbsp1
; 启动mcbsp1采样率发生器
rpt #20 ; 等待2个clkg时钟周期
nop
stm spcr11,spsa1
stm #1801h,mcbsp1 ; 启动接收
stm spcr21,spsa1 ; 配置spcr21
stm #0041h,mcbsp1 ; 启动mcbsp1发送端
stm spcr21,spsa1 ; 配置spcr21
stm #00c1h,mcbsp1 ; 启动帧同步脉冲
rpt #80 ; 等待8个clkg时钟周期
nop
ld #0h,a
stm #0c042h,dxr11
; 配置max3110,2个停止位
配置完成即可发送数据,接收程序只需依据模式配置相应的接收寄存器。图5示出测试界面。

图5 串口调试助手测试界面 对于i/o模拟方式软件编程可以通过定时器中断来设置通信波特率,对于dsp5402定时需设置tim0、prd0、tcr0三个寄存器,
定时时间=tx(1+tddr)x(1+prd)。
同时还可以通过软件延时来设置通信波特率,方法如下:
delay: stm #1004h,ar6 ;通信速率:1200bps
banz $,*ar6-
nop
ret
其软件模拟程序如图6所示。
二种软件模拟在pc机上均需运用串口调试助手测试,作者实现测试界面如图6,为了满足实际应用需要,可以运用vc编写自己的软件。

图6 软件模拟程序
4 结束语
主要讨论了tms320vc5402和pc之间实现uart的方法,利用同步串口实现简单、易行、稳定; 利用软件模拟不需专用硬件,灵活、方便、成本低,各自满足自己的需求,二种方法均已测试通过,此思想对研究dsp5402和串口有一定的参考价值。
评论