目录
摘 要
引言
背景
1.器件介绍
1.1 TMS320C54xx概述
1. 1 .1 TMS320C54xx的特点
1.1.2 TMS320C54xx的总线结构
1.2 McBSP性能概述
1.2.1 McBSP的特点
1.2.2 McBSP0关键位的配置
1.3 RS232接口介绍
2 串行通信设计与实现
2.1 McBSP串行通信设计
2.1.1 多通道缓冲串行口McBSP原理
2.1.2 PC机串口与C5402串口的特点
2.2 C5402与PC机串行通信
2.2.1 数据格式的统一
2.2.2 复位串口(R/XRST和RESET)及控制寄存器的配置
2.2.3 串口初始化
2.2.4 同步传输
2.2.5 传输过程
3.系统软件
3.1 McBSP 访问方式
3.2 系统软件的设计
4.软件实现方案及其要注意的问题
4.1 McBSP 口初始化
4.2 多通道缓冲串行口的相关寄存器配置
4.3 程序设计中应注意的问题
5.创新
6.结束语
致谢
参考文献
TMS320C5402与PC机之间串行通信
摘 要:以美国TI 公司的TMS320C5402 DSP(Digital Signal Processor) 芯片为例, 介绍DSP 片内多通道缓冲同步串口接口(McBSP) 的结构特点,针对用户经常面临的DSP系统与PC机实时交换数据时通信接口标准不兼容的问题,提出了一种新的串行通信设计方案,实现了DSP同步串口McBSP与PC机RS232的同步全双工通信。并在串口工作模式下TMS320C5402的多通道缓冲串口(McBSP)与PC机实现串口同步通信,同时给出了相应的硬件配置、软件流程和系统软件。
关键字:数字信号处理器、多通道缓冲接口、串行通信
Abstract:The United States TI' s TMS320C5402 DSP(Digital Signal Processor)chip is an example, introduced structural features of multi- channel buffer synchronous serial interface (McBSP) DSP chip , users often face against the DSP system and PC real- time exchange of data communication interfaces tandard is not compatible with the problem,berween a new serial communication design program to achieve full- duplex communication between a synchronous serial port of DSP' s McBSP and PC Serial RS- 232 . the communication method beteween TMS320c5402 and PC is introduced when the multichannel buffered serial port(McBSP) of C5402 is set up in serial port mode. Hardware configuration and soft are diagram are described,and the soft in the system is provied.
Keywords : DSP;McBSP; serial communication
随着微电子技术、计算机技术和通信技术的迅速发展,数字化技术已广泛深入地应用于国防、科技和国民经济的各个领域,甚至在社会活动和个人生活中都随处可见。数字化技术的基础和核心是通用数字信号处理器及其相应的程序软件这就使得DSP及其应用程序在科技、国防、国民经济、社会和个人生活中占有特殊地位。因此,开发应用DSP及其软件是当今科技和社会发展的需要。
DSP(Digital Signal Processor)是继微处理器(MPU)、微控制器(MCU)之后出现的第3次飞速发展的微电子技术产品。DSP芯片的最大优越性在于其具有可重编程的能力。将各种不同应用的数字信号处理技术以软件形式下载到DSP芯片中,可以实现相应的通信和控制功能。DSP的发展和应用使得软件开发和硬件设计变得相对独立,DSP是数字信号的核心,DSP硬件系统具有灵活的可编程性。
DSP芯片主要完成数据信号采集、存储、处理和传输的任务。多通道同步缓冲串口(McBSP)是最重要的数据采集和传输外设之一,是一种典型的可配置外设,通过对其接口参数(主要指时钟)和数据格式的编程设定,可以实现对具体同步串口的编码。数字信号处理是模拟电子时代向数字时代前进的理论基础,而数字信号处理器(DSP, Digital Signal Processor)是随着数字信号处理而专门设计的可编程处理器,是现代电子技术、计算机技术和信号处理技术想结合的产物。数字信号处理器(DSP)因其强大的数据处理能力已在通信和信号处理、信号与信息处理、自动控制等领域得到越来越广泛的应用。尤其象美国TI公司的TMS320C54xx(以下称C54xx)系列,更具有通用性。经过DSP处理后的数据通常要送到PC机进行显示或监控等。
本文首先介绍了 C54xx的共同属性和McBSP的特点及McBSP0中的控制寄存器,其中对一些控制寄存器中的位着了详细的说明。其次对PC机RS232串行接口的引脚功能作了详细的说明。在充分理解了McBSP与RS232后,实现了DSP C5402的McBSP与PC机的RS232串口的串行同步通信,介绍通信的原理和对通信的过程作了详细分析。
信息化的基础是数字化。数字化的核心技术之一是数字信号处理。数字信号处理的任务在很大程度上需要由DSP器件来完成。DSP技术已成为人们日益关注的并得到迅速发展的前沿技术。DSP是在模拟信号变换成数字信号以后进行高速实时处理的专用处理器,其处理速度比最快的CPU还快10~50倍。在当今的数字化时代背景下,DSP己成为通信、计算机、消费类电子产品等领域的基础器件。业内人士预言,DSP将是未来集成电路中发展最快的电子产品,并成为电子产品更新换代的决定因素。
DSP芯片是一种适合于进行实时信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。自从20世纪70年代未第一片DSP芯片问世以来,DSP芯片就以数字器件特有的稳定性、可重复性、可大规模集成,特别是可编程性高和易实现自适应处理等特点,给数字信号处理的发展带来了巨大的机遇,并使信号处理的手段更灵活,功能更复杂,应用领域也拓展到国民生产生活的各个方面。
第一代DSPs(DSP系统)以TMS32010为代表,其中TI(Texas Instrments)公司的TMS32010第一次使用了哈佛总线结构和硬件乘法器。由于开发工具的问题,最初的DSPs 开发非常困难,要设计并实现一个基于DSPs的系统是易个专业性很强的工作。美国TI公司给DSPs引入可许多通用计算机微处理器的特点,并为其产品开发了汇编语言和C语言代码产生工具以及各种软件调试工具,使得DSP的开发难度大大降低,并且在20世纪80年代末和90年代初进入了快速发展时期。现在,TI公司的DSPs包括了定点、浮点和多处理器三个类型的产品,每个类型又有不同性能和价格的具体系列可以供用户选择。
在过去的20年多时间里,DSP芯片得到了极为迅速的发展。其中TI公司的产品已经成为世界上最有影响的DSP芯片。随着随着半导体制造工艺的发展和计算机体系结构等方面的改进,DSP芯片的功能越来越强大,速度越来越快,并且价位越来越低,其应用将更加广泛,将会普及到电子学应用的每个领域。
C54xx具有高度的操作灵活性和速度。它采用先进的改进的哈佛结构、1个专用硬件逻辑CPU、片上存储器、片上外设和1个高度专业化的指令集。将C54x CPU和优化的片上存储器与片外存储器相结合的新器件可以满足电子市场专用领域的要求。
C54x的的性能优点:
(1)单周期25/20/15/12.5/10 ns执行时间,定点指令(40/50/66/80/100 MIPS);
(2)具有先进的多总线结构:1条程序存储总线、3条数据存储总线和4条地址总线;
(3)40位算术逻辑单元(ALU),包括一个40位桶形移位器和两个40位累加器;
(4)一个17bit*17bit乘法器和40位专用加法器,允许16位带/不带符号乘法;
(5)8个辅助寄存器和一个软件栈;
(6)内部采用改进的哈佛结构,程序空间和数据空间分开,允许同时取指令和取操作数,并且允许在程序和数据空间相互传送数据;
(7)最大64K 16bit外部数据空间,最大1M 16bit外部程序空间,4K 16bit片内ROM,16K 16bit片内RAM;
(8)内置可编程等待状态发生器、锁相环(PLL)时钟发生器、两个多通道缓冲串口、一个8位并行与外部处理器通信的HPI口、两个16位定时器以及6通道DMA控制器;
(9)支持单指令循环和块循环,采用六级流水线,将一条指令执行所需要的取指、译码、取操作数并执行等几个步骤同时完成,是指令周期降到最小的优化算法。
C54xx结构具有8条主要的16位总线(4条程序/数据总线和4条地址总线):
(1)程序总线(PB)从程序存储器中运载指令代码和立即数;
(2)3条数据总线(CB、DB和EB)连接各种元件,如CPU、数据地址发生逻辑、程序地址发生逻辑、片上外设和数据存储器;
(3)CB和DB运载从数据存储器读出的操作数;
(4)EB把数据运载写入到存储器中;
(5)4条地址总线(PAB、CAB、DAB和EAB)运载指令执行需要的地址。
利用2个辅助寄存器算术单元,C54xx可以产生多达每周期2个数据存储器地址。C54xx还具有访问片上玩设的片上双向总线。该总线通过CPU接口的总线交换器连接于DB和EB。使用该总线的读/写访问需要2个或更多个周期,这取决于外设的结构。表1总结了各种访问类型使用总线的情况。
McBSP是TI公司DSP产品中标准串口(StandardSerial Port)的增强版本,它的内部框图如图I所示。因此,具有与标准串行接口相同的基本功。它可以和其他DSP器件、编码器以及PC机等其他串口器件通信。
它具有普通串口的以下特点:
(1)全双工通信;
(2)拥有两级缓冲发送和三级缓冲接收数据寄存器,允许连续数据流传输;
(3)为数据发送和接收提供独立的帧同步脉冲和时钟信号;
(4)能直接与T1/E1帧、MVIP转换器兼容和ST-BUS适应器件、IOM-2兼容器件、IIS兼容器件和SPI器件等相接;
(5)支持外部移位时钟或内部频率可编程移位时钟。
此外,McBSP还具有以下特殊功能:
(1)可以与IOM-2、SPI、AC97等兼容设备直接连接;
(2)支持多通道发送和接收,每个串行口最多支持128通道;
(3)串行字长度可选,包括8、12、16、20、24和32位;
(4)支持μ-Law和A-Law数据压缩扩展;
(5)进行8位数据传输时,可以选择LSB或MSB为起始位;
(6)帧同步脉冲和时钟信号的极性可编程;
(7)内部时钟和帧同步脉冲的产生可编程,具有相当大的灵活性。
McBSP内部包括数据通路和控制通路两部分,并通过7个引脚与外部器件相连。引脚功能如表2:
C5402的器件的McBSP提供了采样速率发送器寄存器1和2(SRGR[1,2])如图2和图3、控制寄存器1和2(SPCR[1,2])如图4和图5、引脚控制寄存器PCR如图6、接收寄存器1和2(R[1,2])如图7和图8和发送寄存器(XCR[1,2])如图9和10其中R为读,W为写,+0为复位。
其中,SRGR1中,当CLKGDV的值为10000001时,表示按波特率匹配设置可编程数据时钟CLKG;SRGR2中,当GSYNC的值为0时,表示采样率时钟自由运行;当CLKSM的值为1时,表示采样时钟由CPU驱动;当FSGM的值为0时,表示发送帧同步信号由DXR-to-XSR驱动。
其中,SPCR1中,当CLKSTP的值为00时,表示时钟停止模式不同;当RINTM的值为00时,表示接收中断RINT由RRDY驱动。SPCR2中,当XINTM的值为00时,表示发送中断XINT由XRDY驱动。
其中,当XIOEN的值为0时,表示DX,FSX,CLKX工作在串口模式;当RIOEN的值为0时,表示DR,FSR,CLKR工作在串口模式;当FSXM的值为1时,表示发送帧同步脉冲FSX由FSGM驱动;当FSRM的值为0时,表示接收帧同步脉冲FSR由外部装置驱动;当CLKXM的值为1时,表示发送移位时钟CLKX由内部采样率发生器驱动;当CLKRM的值为1时,表示接收移位时钟CLKR由内部采样率发生器驱动;当FSXP的值为1时,发送帧同步脉冲FSX低电平有效;当FSRP的值为1时,表示接收帧同步脉冲FSR低电位有效;当CLKXP的值为0时,表示发送数据在发送移位时钟CLKX的上升沿采样;当CLKRP的值为0时,表示接收数据在接收移位时钟CLKR的下降沿采样。
其中,RCR1中,当RFRLEN1的值为1001时,表示接收数据每段10字;当RWDLEN1的值为010时,表示接收数据每字16位。RCR2中,当RPHASE的值为0时,表示接收数据每帧一段;当RFIG的值为1时,表示接收过程忽略第一个字以后的帧同步信号。
其中,XCR1中,当XFRLEN1的值为1001时,表示发送数据每段10字;当XWDLEN1的值为010时,表示发送数据每字16字。XCR2中,当XPHASE的值为0时,表示发送数据每帧一段;当XFIG的值为1时,表示发送过程忽略第一个以后的帧同步信号。
RS232串行接口属于个人计算机(PC)及电信应用领域中最为成功的串行数据标准.它被定义为一种在低速率串行通信中增加通信距离的单端标准,是目前Pc机与通信工业中应用最广泛的一种串行接口 。在的PC机一般至少有两个串行口COM1和COM2。一代的计算机主要以9引脚的D型接头接出所有的RS232通信信号及控制线(有的计算机的COM2仍为25引脚)。RS232功能引脚如表3所示。
TMS320C5402(简称C5402)提供了2个支持高速、全双工、带缓冲、多种数据格式等优点的多通道缓冲串行口McBSP。MCBSP分为数据通路和控制通路。通信数据通过McBSP的数据发送(DX)引脚发送,通过数据接收(DR)引脚接收。时钟和帧同步控制信息通过CLKX、CLKR、FSX和FSR给出。C54xx通过16位宽可访问控制寄存器经外部外设总线与McBSP通信。CPU或MDA控制器从数据接收寄存器(DRR[1,2])中读取接收待的数据,并把要发送的数据写到数据发送寄存器(DXR[1,2])中;然后,写到DXR[1,2]中的数据通过发送移位寄存器(XSR[1,2])从DX引脚移出。类似地,DR引脚上的接收数据被移入到接收移位寄存器(RSR[1,2]),并被复制到接收缓冲接存器(RBR[1,2])中;然后,(RBR[1,2])被复制到DRR[1,2],则CPU或DMA控制器即可通过(DRR[1,2])获得接收数据。这样,便可实现同时移动内部和外部帧同步脉冲有效表示传输的开始。
PC机异步串口RS232通信规定了字符数据的传输格式,即每个数据以相同的帧格式传送。每一帧信号由起始位、数据位、奇偶效验位和停止位作为异步通信的同步信号,分别指示传送数据的开始和结束。在发送间隙,通信线据总是处于逻辑“1”状态(高电平),每个字符数据的传送过程中,数据位从最低位开始传送。C5402提供两个高速、全双工、多通道缓冲串口。它依据三个信号实现发送数据和接收数据:数据接收(DR)、数据发送(XR)、接收帧同步线(FSR)、发送帧同步线(FSX)、接收移位时钟线(CLKR)和发送移位时钟线(CLKX)与外设接口。
DR和DX引脚完成与外部设备进行通信时数据的发送和接收,由CLKX、CLKR、FSR、FSX实现时钟和帧的同步的控制。发送数据时,CPU或DMA控制器将要发送的数据写到发送寄存器DXR,在FSRX和CLKX作用下,由DX引脚输出。接收数据时,来自DR引脚的数据,在FSR和CLKR作用下,从数据寄存器DRR中读出数据。CLKX、CLKR、FSX、FSR既可以由内部采样率发生器产生,也可以由外部设备驱动。McBSP分别在相应时钟的上升沿和下降沿进行数据检测。每个McBSP最多可支持128通道的发送和接收,串行字长可选,包括8、12、16、20、24和32位,还支持u率和A率数据压缩扩展。
要实现C5402同步串口McBSP与PC机异步串口RS-232的全双工通信,首先必须解决这两种不同通信接口方式之间的数据格式统一问题。
C5402 McBSP传送的数据每字可以设置为8位、12位、16位、20位、24位或32位,这里将McBSP的一个字等效为PC机串口数据的一位,实现C5402同步串口与PC机异步串口数据格式的统一。同时,PC机串口传送数据的起始位可以作为C5402 McBSP的帧同步信号。在这个系统中,将每一个McBSP的一个16位字等效为PC机串口数据的一位,即McBSP传送的每帧10个16位字等效为PC机串口传送的一个8N1模式数据(1个起始位+8个数据位+1个停止位),具体数据格式见图11。
串口可以用两种方式复位:(1)器件复位(RS=0)使接收器、发送器和采样速率发生器置于复位状态;当器件复位去掉(RS=1)时,GRST=FRST=RRST=XRST=0,保持整个串口置于复位状态;(2)串口发送器和接收器可以单独由串口控制器中的RRST和XRST位复位;SPCR2中的GRST位复位采样速率发生器;当由于器件复位和接收器/发送器复位(XRST=RRST=FRST=0)使串口复位。
McBSP被置为初始状态时,该初始状态包括复位所有计数器和状态位。其中:接收状态位包括RFULL、RRDY和RSYNCERR;发送状态包括XEMPTY、XRDY和XSYNCERR。当McBSP由于器件复位(器件引脚RS=0)时,整个串口(包括发送器、接收器和采样速率发生器)复位。所有输入引脚和三态引脚处于已知状态。输出引脚DX处于高阻态。由于采样速率发送器也复位(CRST=1),采样速率发送器时钟CLKG由CPU时钟除2驱动,而帧同步信号FSG不产生。当器件退出复位状态([R/X]RST=0和FRST=0),且在这种状态中,DR和DX引脚可以用作通用I/O。
当接收和发送器复位位RRST和XRST写0时,McBSP的各自部分复位,且串口的对应部分停止。所有输入引脚(如DR和CLKS)及其他被配置为输入的引脚,均处于已知状态。若FSR/X是输出,则被置为无效状态。若CLKR/X编程为输出,CLKG驱动它,且假设GRST=1。最后,当发送器和/或器件复位时,DX引脚处于高阻态。在正常操作期间。GRST应为无效电平。当采样速率发送器不在复位状态(GRS=1)时,且RRST和XRST分别为0时,FSR和FSX引脚处于无效状态,即便他们是FSG驱动的输出。这样保证只有McBSP的一部分处于复位状态,FRST=1和由FSG驱动帧同步的其他部分可以继续操作。
当器件复位完成(RS=0)之后,串口初始化过程如下:(1)使SRCR[1,2]中的XRST=RRST=0(若由器件产生复位,则不需要该步);(2)编程McBSP配置寄存器(不编程数据寄存器);(3)等待2个位时钟,这样保证正确地内部同步;(4)根据需要时间遏制数据获取,如写DXR;(5)设置XRST=RRST=1使能串口(注意:这时写入SPCR[1,2]的值只能使复位位变成1,其他位域必须与第(2)步具有相同的值;(6)若需要内部产生帧同步,已知值FRST=1;(7)等待2个位时钟,接收器和发送器变有效。现以McBSP为例介绍串口的初始化过程,代码如下:
54x_init: ;CPU 初始化
STM #0b,CLKMD
TstStatu: LDM CLKMD,A
AND #01b,A
BC TstStatu,ANEQ
STM #9FF7h,CLKMD ;CPU 时钟频率.:100MHz
STM #00A0h,PMST
STM #8FFh,SWWSR ;IO 等待 7 个时钟
STM #8802h,BSCR ;输出时钟=50MHz
LD #0h,DP
LD #0h,A
LD #0h,B
RET
ser1_start:
STM SPCR11_SUBADDR,SPSA1
STM #0021h,SPSD1 ;串口接收使能
STM SPCR21_SUBADDR,SPSA1
STM #0201h,SPSD1 ;串口发送使能
STM RCR11_SUBADDR,SPSA1
STM #0040h,SPSD1 ;两字一帧和16位一字
STM RCR21_SUBADDR,SPSA1
STM #0000h,SPSD1 ;两字一帧和16位一字 STM XRC11_SUBADDR,SPSA1
STM #0040h,SPSD1 ;两字一帧和16位一字 STM XRC21_SUBADDR,SPSA1
STM #0000h,SPSD1 ;两字一帧和16位一字 STM SRGR11_SUBADDR,SPSA1
STM #0000h,SPSD1
STM SRGR21_SUBADDR,SPSA1
STM #0000h,SPSD1
STM MCR11_SUBADDR,SPSA1
STM #0000h,SPSD1 ;接收使用0—15
STM MCR21_SUBADDR,SPSA1
STM #0000h,SPSD1 ;发送使用0—15
STM PCR1_SUBADDR,SPSA1
STM #000Ch,SPSD1 ;串口接收时钟
RET
对于C5402来说,同步问题分为发送同步和接收同步。如图12所示硬件系统,一旦发送同步有效,在XDATDLY指定的相应数据延迟之后,发送移位寄存器XSP[1,2]中的值被移出到DX引脚上。每当DXR[1,2]到XSR[1,2]复制时,下个CLKX下降沿使XRDY有效,表示下个要发送数据已经写入到发送寄存器(DXR[1,2])了。当CPU写入DXR[1,2]时,XRDY变无效。图12为一串行发送实例。
帧同步信号的周期决定帧频率,即:帧频率=位时钟频率/帧同步信号之间的位时钟数。通过减少帧同步之间的时间可以增加帧频率。如图13串行发送,当帧发送频率增加时,相邻传递数据信息包之间的无效周期减到0。帧同步之间的最小时间是每帧要传递的位数。最大帧频率定义为:最大帧频率=位时钟频率/每帧位数。通过设置C5402 McBSP输出的数据格式,使其符合PC机RS232串口数据格式,就解决了C5402发送数据同步问题。
一旦接收帧同步(FSR)变为有效状态,在接收器的CLKR第一个下降沿检测它。然后,在相应的RDATDLY设置的数据延迟之后,DR引脚上的数据被移入接收移位寄存器(RSR[1,2])。在每字结束时钟上升沿,RSR[1,2]的内容被复制到RBR[1,2]中,这里假设RBR[1.2]不满。那么,一个RBR[1,2]到DRR[1,2]的复制在下个CLKR下降沿把RRDY状态位置1。这表示接收数据寄存器(DRR[1,2])已准备好供CPU读取数据,当CPU读DRR[1,2]时,RRDY变无效。如图14为串行接收,利用PC机RS232串口数发送数据的起始位始终为低电平的特点,将其作为C5402 McBSP接收数据的帧同步信号,这就解决了C5402接收数据的同步问题。
系统中,C5402的接收帧同步信号线FSR与数据接收线DR接在一起,同时设置McBSP的RCR2寄存器的RFIG=1,即忽略第一个字以后的接收帧同步信号,这样即将PC机异步串口发送数据的起始作为C5402 McBSP的接收帧同步信号,又防止起始位后的数据对帧同步信号进行干扰,实现了DSP和PC机之间进行可靠的数据传输。
这里使用的COMS逻辑电平和RS232逻辑电平之间转换的芯片是MAXIM公司MAX232,由于MAX232供给电压为3.3V,在C5402接收数据采用两电阻串联分压来达到引脚电压匹配。从系统硬件连线可以看出,这种设计方案不增加额外硬件,即可实现DSP同步串口与PC机异步串口全双工通信,同时,它还具有与一般的异步串口和异步串口之间数据传输相同的速率。
C5402在发送数据前先将数据进行如下编码:先把每个待发数据的每位按照由低到高的顺序扩展成16位,如“0”扩展成“0000h”,“1”扩展成“FFFFh”,这样一个8字符就扩展成8个16位字,再在这组数据前增加一个16位数据“0000h”作为结束标志。例如“b”的ASCII为“0110 0010b”,编码后的一组10个16位数据为“0000h,0000h,FFFFh,0000h,0000h,0000h,FFFFh,FFFFh,0000h,FFFFh”。设置C5402 McBSP发送数据格式为每帧10字,每字16位,在发送数据时将每组10个数据作为一帧信号发送出去。
C5402的接收数据过程与发送数据过程正好相反。设置McBSP工作在接收格式为每帧10字,每字16位。C5402接收完一帧数据完后,再按发送数据时的编码方式相逆的过程进行解码,恢复原值。
McBSP口的访问方式有轮询和中断两种。轮询方式是指反复询问McBSP口有没有新的数据,如果没有则循环等待,直到McBSP口有新的数据进入时,则访问该数据,并转入相应的数据处理子程序。中断方式则是基于McBSP口有新的数据进入时,会发出中断请求,CPU可以响应该中断,借助中断服务程序访问McBSP口有新的数据,并作进一步的数据信号处理。当DSP只使用了串口进行数据的采集任务时,程序宜采用轮询方式,这时程序仅需包括一个循环询问McBSP口的数据处理子进程即可。即若不满足循环等待的条件,则处于循环询问状态;而一旦访问成功并从McBSP口访问到新的数据,则进入循环体进行数据处理。当DSP同时使用了并口和串口等多种外设接口采集数据时,程序宜采用中断方式,各外设接口的数据处理进程均以中断服务程序的形式出现。即外设中有新的数据进入时,向CPU发出中断请求,使相应的中断服务程序按优先级高低得到及时处理,从而完成对该外设接口的数据访问和数据处理。
本设计中DSP的功能只用着串口的进行的数据采集,因此宜采用轮询方式访问。并以轮询的方式对McBSP的访问。
在这个系统中,配置McBSP0与PC机RS232串口2之间进行通信。本设计中的软件包括:C5402初始化程序、McBSP0初始化程序、接收数据译码子程序、发送数据译码子程序和接收发送数据中断服务程序。如图15所示,为本系统的软件流程图。
整个过程可包括三个部分:接收部分初始化、发送部分初始化和采样率发生器初始化。
(1)DSP 初始化后, 采样率发生器的初始化标志GRST=0;在其他情况下, 也可以通过向SPCR2 寄存器中的GRST 位置0, 使得采样率发生器处于初始化状态;
(2)对采样率发生器寄存器SRGR 进行设置, 并对其他控制寄存器进行设置;
(3)等待两个CPU 时钟以确保内部正确同步;
(4)将采样率产生器初始化标志置1, 使采样率产生器进行工作;
(5)等待两个串口时钟;
(6)使接收和发送部分脱离初始化状态([R/X]RST=1);
(7)在下一个CPU 时钟的上升沿, 串口时钟CLKG 送出一个l, 并以,频率=CPU 时钟/1+CLKGDV 的频率运行;
(8)在数据发送寄存器DXR[1/2]己经被载入数据后, 可将帧同步初始化标志位置1 以发出正确的帧同步脉冲信号。
在本系统设计中, 功能的正确实现取决于McBSP 相关存储器、映射寄存器的正确配置, 在这里介绍下TMS320C5402与PC机串行模式下多通道缓冲串行口的主要寄存器配置。相关设置如下:发送移位时钟CLKX 由内部采样率发生器驱动( CLKXM=1) ; 发送时钟模式引脚设为内部时钟输出(BCLKX=1); 采样率发生器时钟源来自CPU 时钟(CLKSM=1); 发送帧同步模式引脚设置为输出(FSXM=1); 发送帧同步极性引脚设置为低电平有效(FSXP=1); 对每个包传送, BFSX 信号被激活( FSGM=0) ; 发送时钟极性设置为下降沿采样(CLKXP=1); 接收时钟极性设置为下降沿采样(CLKRP=0); 数据发送和接收延时时间为1 (RDATDLY=XDATDLY=01b); 采样率发生器时钟的降频因子为49(CLKGDV=49); 因为16*baud rate CLKOUT/1+CLKGDV=100/1+49, 所以McBSP 的采样率发生器产生2MHz 的时钟信号。
(1)McBSP 串口初始化时, 不能直接向控制寄存器写控制字。TMS320C5402 采用了子地址寻址方式, 即McBSP 通过复接器将一组子地址寄存器复接到存储器映射寄存器的同一个位置上。复接器由子块地址寄存器SPSA 控制。子块数据寄存器SPSD 用于指定对应子地址寄存器中数据的读写。因此访问某一个指定的子地址寄存器时, 首先要将相应的子地址写入SPSA, 再由SPSA 驱动复接器, 使其与SPSD 相连, 接入相应的子地址寄存器所在的实际物理存储位置, 通过SPSD 与实际的控制寄存器交换数据。程序代码如下:
STM #0021h,SPSD1 ;将相应的子地址写入SPSD1中
STM SPCR11_SUBADDR,SPSA1 ;将相应的子地址写入SPSA1中
(2) 程序设计中应该注意的另一个重点就是对发送和接收准备好位的查询, 如果在程序中没有查询或者查询的地点不对会导致程序在单步运行时可能会正确发送和接收数据, 但是当全速运行时由于速度较高不能进行正确的数据收发。正确的查询应该是在数据发送前查询SPCR1 或SPCR2 中的RRDY 位或XRDY 位, 当RRDY 位或XRDY 位为零时表明尚未接收或发送完毕数据, 一直查询到RRDY 位或XRDY 位为1, 表明上一组数据已接收或发送完毕, 可以进行下一组数据的接收或发送。
(3)在本程序设计中采用的是同步串行口发送数据, 并用到了接收发送数据中断服务程序, 程序设计思想为轮询方式, 这种方式在TMS320C5402与PC的RS232接口发送和接收时常用。如需要CPU 响应中断, 则需要打开相应的IMR 的发送中断和全局中断INTM。中断标志只决定是否发生中断, DXR 发到XSR 的数据处理是在CPU 内部运行, 与中断无关, 所以只要把所有寄存器都设置好, 不打开相应IMR 的收发中断和全局中断INTM, 数据即可从DXR 发到XSR, 或是从RSR 接收到DRR。
本文从全新的角度提出了一种TMS320C5402与PC机串行通信设计方案,实现利了DSP同步串口McBSP与PC异步串口RS232的全双工通信。在数据发送前把待发的每一位按照由低到高的顺序扩展成16位,并且将McBSP发送数据格式为每帧10字,每字16位,发送过程是以帧为单位来进行的;在数据的接受过程,也将接受数据格式设置为每帧10字,每字16位来进行的,在接受完一帧后,再按与发送数据的编码方式相逆的过程进行解码。
在通常情况下,TMS320C54xx与PC机通信有两种:一种是利用DSP与PC机的通用I/O口线作为串口,由软件来设定通信波特率和握手方式。这种方式编程复杂,并且存在大量占用CPU时间和通信速率慢的缺点。另外一种方式是通过专用的异步通过芯片来实现,它虽然提高DSP与PC机之间的通信速度,但是增加了额外的硬件电路的复杂性。通过实验表明本文提出的新方法,不仅没用过多占用CPU的时间,而且实现了DSP与PC机之间的高速通信率。
本文通过完整的程序来实现DSP与PC机的同步串口通信,程序实现的功能主要是通过DSP的同步串行缓冲串口(McBSP)来完成。
[1]张勇,曾炽祥.TMS320C5000系列DSP汇编语言程序设计.西安:电子科技大学出版社,2004.
[2]金卫民.Vc下利用串口进行数据通信的研究【j】.计算机工程和设计.2003.
[3]张培任,嵌入式微处理器原理、系统设计与应用.北京:清华大学出版社,2006.
[4]汪安民,徐保根.DSP嵌入式系统开发典型案例.北京:人民邮电出版社,2007.
[5]支长义,程志平.DSP原理及开发应用.北京:北京航空航天大学出版社,2006.
[6]方勇.数字信号处理——原理与实践.北京:清华出版社,2006.
[7]曽义芳.DSP基础知识及系列芯片.北京:北京航空航天大学出版社,2006.
[8]张雄伟. DSP 芯片的原理与开发应用.北京: 电子工业出版社, 1997.
[9]清源科技编著.TMS320c54x DSP硬件开发教程[M].北京:机械工业出版社.2003.
[10]康华光.电子技术基础(数字部分)[M].北京:高等教育出版社,2000.