TMS320C54X DSP实现UART的技术

tms320c54x dsp实现uart的技术
tms320c54x dsp的外设没有集成ujart串口,可以通过两种途径来实现tms320c54x的ljart串口通信功能。一是通过软件的方法。二是采用外部接口芯片组,完成rs232信号的接收和发送,并以dsp容易快速访问的方式与dsp接口。
1 采用软件模拟
tms320c54x dsp软件模拟实现ljart无需额外硬件开销,仅需通用i/(bio和xf)、外部中断into以及一个定时器就可实现,硬件连接如图l所示。
图l中,xf引脚用于发送数据,bio脚和into脚用于接收数据。此方法可以模拟半双工通信与全双工通信。软件模拟ijart技术允许用户设置:数据位数(1~16)、奇偶校验(奇校验或偶校验)或无奇偶校验、停止位(1~2)和波特率。每秒传输比特数计算公式为:
改变寄存器tddr和prd的设置值,可以获得不同的波特率。baudrate最大值是:
其中,clkfreq是dsp系统时钟,#cycles是子程序执行周期,bit是完成uart功能限定条件(1/2或1)。
另外,需要两个存储单元分别用作uart状态寄存器和计数器,以便控制软件完成接收与发送任务。
1.1 接收功能
要正确接收数据流,首先要检测起始位。由于百bio和into连在一起,一旦低电平有效则启动into中断。首次响应中断,定时器设置定时周期为1/2码元宽度,以便保证在起始位中间位置定时中断采样bio引脚。如果采样电平为高,起始位就是虚假信号,定时器立即停止定时并退出子程序。如果为低,则认为检测到起始位,关闭外部中断into以免数据流中的o再被误认为是起始位。接收后续数据时,每次定时器没置定时周期为一个码元宽度,保证在码元中间采样,从而减少误码。当收到若干个(数据位数可根据需要设定为1~16)数据后,再检测停止位和奇偶校验位。若数据接收正确,则格式化输出数据(去掉起始位、停止位和奇偶校验位)。同时计数器清零,复位rcv(接收标志位.在ljart状态寄存器中设定)标志位,并开中断为下一次检测数据流的起始位做好准备。
1.2 发送功能
一旦发送数据,并且发送子程序被调用,必须先将发送数据格式化(加上起始位、停止位和奇偶校验位)存在某个存储单元以备发送。然后,检测tx位是否被置位(即有无数据正在发送)。若是,则循环等待直到tx(发送标志位,在uart状态寄存器中设定)被复位为止。要知道何时开始发送下一个数据,需要定时器定时中断来控制,同时还需要一个发送计数器控制程序流程。由于发送和接收是独立进行的,它们共用唯一的一个定时器,如果uart在接收数据过程中定时器突然被发送功能占用,则必然会破坏数据。发送数据前必须检测rcu标志位,确认没有正在接收数据后才能开始发送数据,否则发送程序等待。因此,准确来讲,这种发送接收方式只是一种半双工方式,发送和接收不能同时进行。如果要实现全双工通信,则无论是否正在接收数据,发送都延迟一段时间等待下一次接收,然后与其同步进行。
2 增加专用uart接口
利用tll6c550c和max3238分别实现协议转换和电平转换。增加专用uart接口的硬件框图如图2所示。
主机通过并行方式访问tijl6c550c的寄存器,寄存器的设定将控制其内部的控制逻辑模块,实现对其工作方式的设定(如波特率、校验位等),同时,访问寄存器也可以实现对数据的操作(读取和写入数据)。rs232数据接口可大致分为三部分;接收模块、发送模块和modem控制逻辑。接收模块将从sin引脚输入的串行数据,按照规定格式取出其数据部分并作校验,数据接收部分被送入接收寄存器或接收fifo中,校验的结果反映在状态位上。发送模块将发送寄存器或发送fif0中的数据按照规定格式加入起始位、停止位和校验位,并以rs232的串行方式发送至sout引脚。modem控制逻辑通过接收和发送引脚信号,实现对收发操作的控制。
对dsp而言,tll6c550c是一系列寄存器,它们映射在i/0空间中,通过译码电路使它的起始地址为0x4000,那么对其操作即是对其某段地址的i/o进行访问。liart的每个寄存器都是8位的,大多数寄存器只能工作在一种模式下(读或写)。
2.1 串行传输
异步串行数据格式的设置通过线路控制寄存器(lcr)来完成的。除了数据格式外,另外一个指标是波特率,它是通过除数寄存器来设置的,实际的波特率为输入时钟信号进行分频后获得,其公式如下:
2.2 数据接收
从sin输入的数据首先进入接收移位寄存器(rsr),一个字符接收完成后,数据移人接收缓冲寄存器(rbr)。rbr实际是一个16字节的fifo,当中断设置时,uart会根据fifo中接收数据的数目产生中断,主机设备从rbr中读取数据后,中断会自动清除。
2.3 数据发送
发送操作和接收操作相反,主机数据写入发送保持寄存器(thr),thr是一个16字节的fifo,然后数据移入发送移位寄存器(tsr),之后送人sout。当中断设置时,uart会根据fifo中发送数据的数目产生中断,主机设备可根据中断来决定是否继续发送数据。
除了收发操作外,tll6c550c还可以产生其他类型的中断,但它只有一根中断信号引脚intrpt,因此主机接收到中断后必须判决产生中断的信号源。
fifo的操作通过fcr来设置。当使用fifo时,uart中最多可存放16字节数据,反之则只能存放一个数据,即相当于fif0只有一个字节大小。有两种工作方式:中断方式和查询方式。
uart中还有modem控制寄存器(mclr)和modem状态寄存器(msr),它们用于控制一些信号引脚,能把uart的工作状态通过硬件的方式表达出来。
2.4部分liart汇编编程
测试程序:
st #0x55,*sp(var_reg) ;用来确定ljart设备是存在的
portw*sp(vat_reg),addr_spr
portr addr_spr.*sp(valr_reg)
ld *sp(var_reg),a
sub #0x55,a,b
bc rs232_no_errclr,beq
设置特率程序:
st #0x83,*sp(val_reg)
portw*sp(var_reg),addk_lcr
st #0xoo,*sp(var_reg) ;设置波特率为9600
portw*sp(var_reg),addr_div_msb
st #0x18,*sp(van_reg)
portw*sp(valreg),addr_duv_lsb
st #0x03,*sp(var_reg)
portw*sp(var_reg).addr_lcr
3 总 结
利用软件模拟的方法,缺点是dsp将长时间处于对ijart的中断和处理中,无法全速参与运算,而且占用了外部中断0和一个定时器(有些tms320c54xdsp只有一个定时器);优点是在dsp和带uart的外设之间除了电平转换部分外不需要另外的硬件,可以节约产品的成本。利用外部接口芯片组的方法,缺点是增加了额外的硬件开销,从而增加了产品成本;优点是收发数据快,可以和数据处理同步进行,能够实现系统的实时性。

讯飞智能录音笔SR301 Plus版预定开启
乙级推挽功率放大器
国芯科技与航天龙梦就国产Raid 芯片和板卡达成战略合作协议
反相放大器正端经电阻接地还是差分电路吗?
是哪些原因导致PLC不接受上位机指令呢?
TMS320C54X DSP实现UART的技术
使用高效液相色谱仪的几个注意事项
防火墙的VPN支持
史上成本最低、可DIY的机器狗
移动设备电源管理芯逐步朝多相式与大电流方向发展
对话inspectAR创始人:PCB检测+AR会擦出什么样的火花?
中国联通打通了全球首个基于LampSite的室内数字系统5G电话
人工智能为毕业生创造了更多机遇
基于嵌入式操作系统VxWorks的图形界面开发
全球PC市场Q3出货同比下降9%,预计2024年强势反弹
通过这10个基础命令开始掌握Linux命令行
SLOC方案实现传统模拟CVBS和数字IP视讯同时传输
2019年华为将助力5G在全球大规模建设部署和商用
如何理解Maven拉包原理,搞定Maven构建项目
ADAS助推车载CIS朝高像素、高动态迭代