DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 299|回复: 0
打印 上一主题 下一主题

一种基于TMS320C55x DSP的UART通信设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 20:16:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  
         
    摘要:全双工异步串行通信在TMS320C55xDSP上的通常实现方式是利用DSP的McBSP接口加外接芯片实现,这种设计方法增加了实现UART的硬件成本和电路设计复杂度。提出了一种直接利用DSP的MCBSP接口和DMA通道实现UART的方法,给出了使用C语言和CSL的编程方法。与传统实现方法相比,具有实现成本低,硬件电路简单,移植性强等特点,稍加修改可应用于C5000和C6000各系列芯片中。
关键词:DSP;全双工异步串行通信;多通道缓冲串口;DMA ;过采样

1 引言:
MS320C55x数字信号处理器通过多通道缓冲串口(McBSP)提供了与外设的多种同步串行通信方式。然而,由于DSP中串行通信由数据信号、帧同步信号和时钟3种信号配合实现,其中帧同步信号和数据信号由不同的数据线传输。而异步串行通信则在一根传输线上实现数据发送或接收,且不需要专门的时钟信号线。因此DSP与异步设备的接口,如UART通信实现相对复杂,需要对McBSP的相关寄存器进行正确初始化。DSP中实现全双工异步通信的通常做法是使用专用的串行接口芯片,如TL16C550,这种设计方法编程相对简单,但增加了设计成本和电路复杂度。本文介绍了一种TMS320C55x DSP芯片利用McBSP和DMA直接实现UART的方法,基于该方法实现的DSP异步串行通信模块已成功应用于控制偏振图像采集处理的DSP硬件设备中。 www.51kaifa.com/
2 UART在DSP上的实现
异步串行通信要求DSP能够模拟和检测到UART的帧信号。由于DSP串口是同步串口,而且DSP时钟为高速时钟,经分频或倍频后无法保证与UART的异步串行时钟精确同步。DSP的帧同步信号无法与UART的帧信号同步,造成串行通信信号中信号位的偏移。最好的解决方法是减小偏移和对接收的数据流进行过采样,本文采用了对UART信号的16倍过采样。www.51kaifa.com/
2.1 McBSP设置
    DSP的McBSP通过3种信号实现同步通信:数据、帧同步和时钟。异步通信发送和接收各在一条线上进行,具有自己的帧时序。
    UART的通信时钟由使用的通信波特率(每秒传输的数据位个数)决定,通常为2400,9600,19200等。DSP与UART异步通信时,由于DSP的内部时钟频率通常都不是UART时钟频率的整数位,因而会造成双方通信时数据位的偏移,为了尽量减小这种偏移,McBSP的串口时钟需要正确的设置时钟频率以达到与UART波特率相匹配。
数据包(PKTBITS)由起始位、数据位、奇偶校验位和停止位组成,起始位为1位,停止位通常为1,1.5,2位,数据数通常为8位,如何使用校验,那么数据包还包括1位校验位。以上数据位中,每1位都被DSP以16倍波特率的时钟频率过采样。
发送时,为保证UART能收到半个停止位,需要将DSP的McBSP发送端口设置为2相的数据帧。第1相为16位的数据字,第2相为8位的数据字。那么第1相数据长度为(起始位+数据位+校验位)个字,第2相长度为停止位的字长。发送时的总帧长(TxPKTBITS)为这两相的总字长。接收数据包格式与发送相似,其结构如图2所示。DSP的串口发送引脚与外部串口设备的接收引脚相连,不使用FSX引脚和CLKX引脚。
接收时,McBSP通过接收帧同步信号引脚(FSR)检测数据的到来,根据帧同步信号的不同,帧同步信号可配置成上升沿触发或下降沿触发,由于UART的起始位为低电平,因此使用下降沿触发。将UART发送数据信号与McBSP的数据接收引脚DR和FSR相连,实现用UART的发送信号触发McBSP的接收帧同步信号。在McBSP接收一帧数据期间,为了防止下降沿再次触发一帧数据接收,McBSP应该设置为接收数据包期间忽略帧同步信号。



图1 UART接收数据包的帧格式

接收完一帧数据后,需要对数据解码,收于DSP发送和接收时钟是UART串口时钟频率的16位,因此每个UART数据位对应于DSP中1个16位字(停止位对应8位字)。在McBSP接收寄存器中将接收帧设置为2相,第1相16位字,字长为RxPKTBITS(起始位+数据位+校验位),第2相为8位字,对应于停止位字数。此外,接收帧延时值应该设置为1位。
3.2 McBSP时钟采样率设置
McBSP与UART通信时,McBSP接收到一帧的帧同步信号后,该帧期间之后出现的帧同步信号将被忽略。为了获得最大数据流量,一帧数据发送结束时,其停止位后紧接着为起始位,帧同步信号的检测依赖于停止位到起始位的下降沿。为了正确检测到帧同步信号,高电平应该至少保持一个时钟周期以上时间。
理想情况下,串口时钟信号边沿与数据位边沿精确对应,此时,每个数据位对应16倍时钟周期。起始位和串口时钟的下降沿偏最小,如图3所示。



图2  McBSP串口时钟与UART时钟精确同步时的时序

    正常通信时,McBSP的帧同步信号与UART串口的时钟之间会有一定的偏差,如图所示。



图3 McbSP串口时钟与UART时钟存在偏差时的时序

存在偏差时,为保证McBSP能检测到接收到信号的下降沿,McBSP的串口采样时钟频率必须准确设置。其设置方法如公式1、2所示。其中,DIV是McBSP寄存中串口采样时钟分频值,DSPCLK是DSP的CPU时钟频率,baudrate为通信波特率。


        (1)


        (2)
通信波特率为19200,DSP时钟频率为75MHz,接收数据包为10位(1位起始位,8位数据位,无校验,1位停止位:PKTBITS=10,RxPKTBITS=9.5),根据公式1计算得DIV ,由于分频值DIV为整数,因此取DIV 。根据公式2计算得DIV ,取整后得DIV 。取DIV最佳值为244。TMS320VC55x DSP以常用波特率通信时的分频值如表1所示。
表1 常用波特率下TMS320VC55x的McBSP串口DIV值

[table]

[tr]

[/td]

75-MHz DSP Clock[/td]

100-MHz DSP Clock[/td][/tr]
[tr]


Baud Rate[/td]


[/td][/tr]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-9-28 01:06 , 耗时 0.086510 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表