用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

TMS320C54XX系列DSP与PC机间串行通信的实现

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 22:42:11
16位数据的全双工同步通信,即主设备传送16位数据给MAX3111的同时,也可接收到MAX3111发送的16位数据。主设备在MOSI线上向MAX3111发送的16位串行数据序列中包括传输格式控制字,如波特率设备、中断屏蔽、奇偶校验位等,同时还有发送的数据字。MAX3111在MISO线上向主设备发送的16位数据序列中除了接收到的数据外,还包括中断标志等状态位。所以通过16位的实时数据传输,主设备可获得MAX3111工作状态信息,同时对其具有完全控制权利。这样,两个设备的控制、状态、数据信息的实时通信就保证了数据传输的可靠性和稳定性。
javascript:window.open(this.src);" style="cursor:pointer;"/>
4 DSP与MAX3111的接口设计

DSP的McBSP串行接口工作于SPI模式时可直接与MAX3111进行连接,从而实现与RS-232设备进行异步数据传输。此时DSP作为SPI协议中的主设备,其接口电路如图3所示。

DSP的发送时钟信号(BCLKK)作为MAX3111的串行时钟输入,发送帧同步脉冲信号(BGSX)作为MAX3111的片选信号(CS)。BDX与DIN连接作为发送数据线,BDR与DOUT连接作为接收数据线。MAX3111的TX与T1IN连接,RX与R1OUT连接,以便利用其片内的转换器实现UART到RS-232电平的转换。MAX3111的中断信号(IRQ)与DSP的外部中断相连。

在SPI串行协议中,主设备提供时钟信号并控制数据传输过程。由MAX3111接口电路时序图(图4)可知,必须设置DSP的McBSP于适当的方式才能保证与MAX3111的时序相配合。

MAX3111要求在数据传输过程中CS信号必须为低电平,在传输完毕后必须为高电平。此信号由McBSP的BFSX引脚提供,因此必须正确设置DSP的帧脉冲发生器,使之在每个数据包传输期间产生帧同步脉冲,即在数据包传输的第一位变为有效状态,然后保持此状态直到数据包传输结束。

McBSP的采样率发生器产生适当频率的时钟信号,由BCLKX引脚输出,保证主从设备间的同步数据传输。因此必须正确设置DSP的采样率发生器时钟源(CLKSM)和时钟降频因子(CLKGDV)。根据SPI传输协议,必须正确设置数据发送延迟时间(XDATDLY)。由图4可知MAX3111要求在SCLK变高之间的半个周期开始传输数据。

所以必须为McBSP选择合适的时钟方案,即设置McBSP的时钟停止模式。在本应用中采用McBSP的时钟停止模式2(CLKSTP=11b,CLKXP=0),这样即可保证与MAX3111的时序相配合。

5 DSP的异步通信软件的设计

考虑到应用系统软件的可移植性和可读性,数据传输软件采用C语言进行编写,这样,可以利用DSP开发软件CCS2.0所提供的DSP/BIOS中的芯片支持库函数(CSL)。CSL提供C语言可调用的DSP外围接口库函数,其中包括DMA模块、McBSP模块、TIMER模块等。应用这些库函数可大大提高程序可读性,缩短软件开发周期。在本文所提到的应用中,主要调用MCBSP模块。数据传输软件主要包括以下几部分。

(1) McBSP串口初始化

如上所述,在本应用中应将TMS320C54XX DSP的McBSP串行口配置为SI模式,以DSP作为主设备。表1给出了应设置的寄存器或寄存器位的值,未涉及的寄存器保持其默认值即可。

表1 McBSP设置为SPI模式时相关寄存器值

位名称位  值描    述所在寄存器
CLKSTP11b使能McBSP的时钟贪婪模式,并使其在SCLK变高之前半周期开始传输数据SPCR1
CLKXP0设置BCLKX信号的极性PCR
CLKXM1设置BCLKX引脚信号为输出(SPI主设备)PCR
RWDLEN1000~101b设置接收数据包的长度(必须与XWDLEN1的值相等)RCR1
XWDLEN1000~101b设计发送数据包的长度(必须与RWDLEN1的值相等)XCR1
CLKSM1采样率发生器时钟源CPU时钟SRGR2
CLKGDV1~255设置采样率发生器的将频因子SRGR1
FSXM1设置BFSX引脚信号为输出PCR
FSGM0在每个数据包传输期间,BFSX信号都有效SRGR2
FSXP1设置BFSX信号为低电平有效PCR
XDATDLY01b提供正确BFSX信号启动时间XCR2
RDATDLY01b提供正确的BFSX信号启动时间RCR2

根据表1,调用CSL的McBSP配置库函数即可完成McBSP的初始化。

McBSP_Handle hport0; /*声明指向McBSP的句柄*/

McBSP_Config PortConfig={ /*定义寄存器设置结构*/

0x1800, /*设置串口控制寄存器1的值*/

0x0000, /*设置串口控制寄存器2的值*/

0x0040, /*设置接收控制寄存器的值*/

};

hport0=MCBSP_open(0,MCBSP_OPEN_RESET);/*打开第一个McBSP串口*/

MCBSP_config (hport0,&PortConfig);/*按结构设置McBSP的各寄存器*/

(2)MAX3111工作模式及波特率设置

在进行通信之前,DSP必须首先根据命令序列格式向MAX3111写入配置命令字,之后才能进行正确的数据传输,如8位数据位、一位停止位、无奇偶校验位、波特率为115200、使能接收和发送中断的异步数据传输。DSP对MAX3111进行配置的简要过程为:

McBSP_start(hport0, /*McBSP开始数据传输*/

McBSP_SRGR_STARTMCBSP_SRGR_FRAMESYNC

McBSP_RCV_STARTMCBSP_XMIT_START,0x200

);

while(!McBSP_xrdy(hport0));/*等待发送寄存器为空*/

McBSP_write16(hport0,0x6E0B); /*向MA3111写入配置命令字*/

(3)中断服务程序
javascript:window.open(this.src);" style="cursor:pointer;"/>
    在进行中断方式数据传输时,需要注意的是:虽然DSP的McBSP有自身的发送和接收中断,但由于McBSP与MAX3111之间的同步串行数据传输速率高于MAX3111将数据以一定波特率(最高230kbps)异步发送的速率,因此如果应用McBSP的发送中断,将造成发送数据的丢失。同时,在SPI协议中,数据的传输是由SPI主设备发起的,所以在SPI方式下的McBSP并不能产生接收中断。因此,本方案应用的关键之一是将MAX3111的IRQ中断信号连接至DSP的一外部中断,以实现中断方式下可靠、正确的数据传输。

针对现有的多数据数字信号处理器(DSP)芯片上不提供异步串行收发器(UART)接口,而只有同步串行接口的情况。本文通过简单的硬件电路将同步接口转换为异步串行接口,充分利用了DSP的在片硬件资料,很好地解决了DSP的异步串口扩展问题。此方法在工程实践中已经得到应用。实践证明,在各种波特率下(最高可为230.4kbps),其查询和中断方式数据传输正确、可靠,各元件工作正常 ,并且在此硬件连接的基础上,利用DSP的DMA功能进行串行数据接收及发送收到了良好效果,进一步提升了应用系统的性能。



上一页  [1] [2] 

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:26,890.63000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号