好文档 - 专业文书写作范文服务资料分享网站

基于DSP的串行通信接口设计

天下 分享 时间: 加入收藏 我要投稿 点赞

基于DSP的串行通信接口设计

郑争兵

(陕西理工学院 电信工程系,陕西 汉中 723003)

摘要:本文详细介绍了基于TI公司TMS320C6416的McBSP的SPI方式,在此基础之上设计了TMS320C6416与MAX3111E的硬件接口电路,并给出了在DSP集成开发环境CCS提供的DSP/BIOS框架下,串口通信的软件设计过程。在设计中充分利用了MAX3111E的特点,实现了同步传输到异步传输的转换。 关键词:McBSP;MAX3111E;SPI;串口通信 中图分类号:TP332.3 文献标识码:B

Design of Serial Communication Interface Based on DSP

ZHENG Zhengbing

(Dept.of Electronic Engineering,Shananxi University of Technology,HanZhong 723003

China)

Abstract: The paper introduced SPI mode of McBSP based on TI 's company TMS320C6416.

And then the hardware interface circuit between TMS320C6416 and MAX3111E is designed. With the DSP/BIOS framework provided by CCS, the realization of serial communication is presented. Characteristic of MAX3111E is used sufficiently and conversion from synchronous transmission to asynchronous transmission is implemented.

Keywords: McBSP;MAX3111E;SPI;Serial Communication

1 引言

TMS320C6416是TI公司C6000系列中推出的一款高速定点DSP芯片,采用典型的VLIW(Very Long Instruction Word,超长指令字)结构的内核,最高主频可达1 GHz,片内集成了1Mbyte的大容量SRAM,片外拥有丰富的接口。在DSP串行接口的设计中,TMS320C6416的串行外围设备接口为同步接口,而通用的PC 机的RS-232接口为通用异步接口UART,为了使DSP能够与PC机进行异步串行通信,必须扩展相应的硬件,实现同步数据到异步数据的格式转换。本文利用TMS320C6416的多通道缓冲串行接口McBSP同步串行接口,应用美国MAXIM公司的MAX3111E串行异步收发器,实行了DSP与PC间的串口通信。 2. 接口设计

(1)McBSP的SPI方式

SPI(Series Protocol Interface)接口方式是Motorola公司推出的一种高效同步串行数据接口方式,是目前使用比较多的一种串行总线接口标准。TMS320C6416芯片的McBSP串口工作在时钟停止模式时与SPI协议兼容[1]。通过对McBSP的串行控制寄存器(SPCR)和引脚控制寄存器(PCR)的设置使其工作在时钟停止模式。SPCR的CLKSTP位使能时钟停止模式,并选择相应的工

1

作方式,而PCR的CLKXP位配置时钟信号CLKX的极性[2],具体的控制寄存器的配置和相应的工作方式如表1所示。

表1 McBSP时钟停止模式配置

CLKSTP 0X 10 11 10 11 CLKXP X 0 0 1 1 禁止时钟停止模式。时钟使能为非SPI模式 无延迟的低电平无效状态。McBSP在CLKX的上升沿发送数据,在CLKX的下降沿接收数据 有延迟的低电平无效状态。McBSP在CLKX的上升沿之前半个周期发送数据,在CLKX的上升沿接收数据 无延迟的高电平无效状态。McBSP在CLKX的下降沿发送数据,在CLKX的上升沿接收数据 有延迟的高电平无效状态。McBSP在CLKX的下降沿之前半个周期发送数据,在CLKX的下降沿接收数据 当McBSP配置为时钟停止模式时,发送器和接收器在内部得到同步,这时McBSP可作为SPI的主设备或从设备。发送时钟信号(CLKX)作为SPI协议中的串行时钟信号,发送帧同步信号(FSX)提供从设备使能信号(CS)。本文采用McBSP工作于SPI主模式,与其SPI兼容器件接口如图1所示。

McBSP为主设备SPI兼容从设备时钟配置 CLKXDXSCLKMOSIMISODRFSXCS

图1 配置McBSP作为SPI的主设备

作为SPI主设备,McBSP通过内部的采样率发生器产生时钟CLKX和从设备使能信号FSX。用户需要设置SRGR(Sample Rate Generator Register)寄存器中的CLKSM位来选择CPU时钟或者外部时钟输入作为采样率发生器的时钟源。对SRGR的CLKGDV(时钟倍率)编程产生CLKX,按照需要的SPI数据传输速率来编程。另外无须考虑配置采样率发生寄存器的帧周期数FPER和帧脉冲宽度,也就是用户定义的帧同步波形是不起作用的,在数据包的第一位发送前,帧同步信号变为有效,直到数据包的最后一位发送完毕,当数据包发送完成后,帧同步信号变为无效状态。

(2)DSP与MAX3111E的接口设计

2

MAX3111E是MAXIM公司的专门为微处理系统进行最优化设计的UART。该芯片具有SPI/WICROWIRE接口,可以直接实现与主控制器之间的同步串口通信,通信速率可达230kbps;另外还有两个RS-232电平转换器,无需再进行电平转换。因此,MAX3111E可以很容易实现同步到异步数据的传输。

TMS320C6416的McBSP为SPI协议中的主设备,直接与MAX3111E的SPI/WICROWIRE接口进行连接,通过RS-232接口与PC机进行异步数据传输。其具体接口电路如图2所示。

33PF0.1UFVCC/SHDNMAX3111EINTDXDRCLKXMcBSPFSX/IRQDINDOUTSCLK/CSTXT1IN/RTST2INRXR1OUT/CTSR2OUTGNDR2INX1X2V+V-C1+C1-C2+C2-T1OUTT2OUT3.6864MHz33PFTMS320C6416R1IN???????RS232-I/O

图2 TMS320C6416的McBSP与MAX3111E接口电路

DSP提供串行时钟信号(CLKX),连接到MAX3111E的时钟信号(SCLK);发送帧同步脉冲信号(FSX)作为MAX3111E的片选信号(CS);DX与DIN连接和DR与DOUT连接,实现数据的双向传输;外部中断INT与MAX3111E的中断信号(IRQ)连接,实现外部中断事件的响应。另外,MAX3111E的外部管脚/SHDN信号接高电平3.3v表示打开RS-232发送器;TX与T1IN连接,RX与R1OUT连接,实现UART到RS-232电平的转换。

DSP通过McBSP接口与MAX3111E进行16位数据的全双工同步通信,为了实现SPI方式的可靠通信,必须保证接口时序的匹配。即合理设置DSP的McBSP才能满足MAX3111E时序的要求。由表1 McBSP时钟停止模式配置,选择CLKSTP=11,CLKXP=0时,刚好与MAX3111E的时序匹配。另外,McBSP内部采样率发生器时钟源选择CPU,必须选择合适的时钟倍率(CLKGDV),使得CLKX的频率不超过4.2MHz(MAX3111E要求SCLK的最小时钟周期238ns)即可[3]。

3 DSP串口通信的软件设计

DSP串口通信的软件设计包括发送和接收两部分。发送部分程序采用主动的方式启动中断,当有中断时,响应中断,每次发送16位数据,直到所有的数据发送完才结束程序;接收部分程序采用被动的方式启动中断,即等待中断,当有中断时,响应中断,每次接收16位数据,直到所有的数据传输完才结束程序。可见发送部分和接收部分大致相似,如图3所示,给出了DSP接收数据的软件流程图。

3

开始McBSP 串口初始化、配置MAX3111E等待串口中断有中断?Y响应中断,接收数据NN接收数据完Y结束

图3 DSP接收数据流程图

可以看到软件设计主要是McBSP串口初始化程序和中断处理程序。McBSP串口初始化主要是将串口配置为SPI主模式,其过程如下:

(1)设置串行端口控制器SPCR中XRST=RRST=0,使串口复位; (2)设置McBSP的时钟停止模式有其他相关参数;

(3)设置SPCR的GRST=1,采样率发生器退出复位状态,开始工作; (4)等待两个时钟周期,以保证McBSP在初始化过程中,内部能够正确地同步;

(5)选择配置由CPU或DMA控制器McBSP,然后设置XRST=RRST=1,使串口退出复位状态;

(6)等待两个数据时钟周期,以便发送器和接收器变为有效。

考虑到代码的可移植性和可读性,采用C语言编写串口数据传输程序。本文利用了DSP开发集成环境CCS2.2所提供的DSP/BIOS中的芯片支持库函数(CSL)。CSL[4]提供C语言可调用的DSP外围接口McBSP模块库函数。根据上面步骤,调用CSL的McBSP配置库函数即可完成McBSP的初始化:

...

MCBSP_Handle hMcbsp0; /*声明指向MCBSP的句柄 */ MCBSP_Config mcbsp0_spi = { /* 定义配置寄存器的结构 */ 0x03001800, /* 设置串口控制寄存器的值 */ 0x00050040, /* 设置接收控制寄存器的值 */ 0x00050040, /* 设置发送控制寄存器的值 */ …… };

4

hMcbsp0 = MCBSP_open(MCBSP_DEV0, MCBSP_OPEN_RESET);/*打开MCBSP串口*/ MCBSP_config(hMcbsp0, &mcbsp0_spi);/*按结构配置MCBSP各寄存器*/ MCBSP_enableSrgr(hMcbsp0); /* 使能采样率发生器 */ for (wait=0; wait<0x10; wait++); /* 等待两个时钟周期 */ MCBSP_enableXmt(hMcbsp0); /* 使能McBSP0发送器 */ MCBSP_enableRcv(hMcbsp0); /* 使能McBSP0接收器 */ ...

在对McBSP进行初始化后,DSP必须根据命令序列格式向MAX3111E写入配置命令字, 之后才能进行正确的数据通信.该命令字主要包括波特率位、8位数据位、奇偶校验位、停止位、使能接收和发送中断的异步数据传输位,DSP对MAX3111E进行配置的简要过程为:

...

while(!MCBSP_xrdy(hMcbsp0)); /*等待发送控制器为空*/ MCBSP_write(hMcbsp0,0x0000EC01); /*向max3111E写配置命令字,baud rate=115.2K*/

...

MAX3111E有四个中断源,分别为Pr(接收奇偶校验位为1中断)、R(接收数据有效中断)、RA/FE(帧格式错误中断)、T(发送缓冲器空中断)。这些中断都可软件屏蔽或使能,当中断产生时,DSP进行一次读操作,通过判断数据中T和R等标志位进行中断识别,之后进行相应的操作。设计中采用R、T作为中断源,当MAX3111E接收数据有效或发送缓冲器空时均产生低电平中断信号

IRQ去触发DSP外部中断INT4,从而进入中断INT4的中断服务程序实现McBSP的数据收发。 4 结束语

本文基于DSP的串口通信设计,采用MAX3111E实现同步到异步数据的传输。该方法硬件电路简单,而且通过调用API模块,使得软件设计简化,在工程实践中具有一定的实用性。

参考文献

[1] 季方慧, 王飞, 何佩琨.“TMS320C6000系列DSPs原理与应用(第二版)”[M]. 电子工业出版社, 2003.

[2] Texas Instruments. TMS320C6000 DSP Multichannel Buffered Serial Port Reference Guide[EB/OL].SPRU580B. http://www.ti.com/. [3] IM. MAX3110E/MAX3111EE Data Sheet[EB]. MAXIM Corp,2001. [4] TMS320C6000 Chip Support Library API Reference Guide[EB/OL]. SPRU401J. http://www.ti.com/.

5

基于DSP的串行通信接口设计

基于DSP的串行通信接口设计郑争兵(陕西理工学院电信工程系,陕西汉中723003)摘要:本文详细介绍了基于TI公司TMS320C6416的McBSP的SPI方式,在此基础之上设计了TMS320C6416与MAX3111E的硬件接口电路,并给出了在DSP集成开发环境CCS提供的DSP/BIOS框架下,串口通信的软件设计过程。在设计中充分利用
推荐度:
点击下载文档文档为doc格式
06rus4vpfs565jb3uu39
领取福利

微信扫码领取福利

微信扫码分享