1、DSP与单片机通信的多种方案设计摘 要:基于嵌入式系统发展的需要,提出TMS320VC5402 DSP与AT89C51单片机通信的三种设计方案。利用TMS320VC5402的多通道缓冲串口MCBSP分别实现TMS320VC5402与AT89C51的SCI和SPI串行通信,以及通过TMS320VC5402的8位增强主机接口HPI一8实现TMS320VC5402与AT89C5l并行通信。就硬件接口电路和软件编程进行详细的阐述。关键词:单片机 DSP MCBSP HPI 将DSP和单片机构成双CPU处理器平台,可以充分利用DSP对大容量数据和复杂算法的处理能力,以及单片机接口的控制能力。而DSP与单
2、片机之间快速正确的通信是构建双CPU处理器的关键问题。下面就此问题分别设计串行SCI、SPI和并行HPI三种连接方式。1 串行通信设计与实现 1 1 SCI串行通信设计 1.1.1 多通道缓冲串行口McBSP原理 TMS320VC5402(简称VC5402)提供了2个支持高速、全双工、带缓冲、多种数据格式等优点的多通道缓冲串行口McBSP。MCESP分为数据通路和控制通路。数据通路负责完成数据的收发。CPU或DMAC能够向数据发送寄存器DXR写入数据,DXR中的数据通过发送移位寄存器XSR输出到DX引脚。DR引脚接收数据到接收移位寄存器RSR,再复制到接收缓冲寄存器RBR,最后复制到数据接收寄
3、存器DRR。这两种数据多级缓冲方式使得数据搬移和片外数据通信能够同时进行。控制通路负责内部时钟产生,帧同步信号产生,信号控制和多通道选择。另外还具有向CPU发送中断信号和向DMAC发送同步事件的功能。MCBSP时钟和帧同步信号通过CLKR、CLKX、FXR、FSX引脚进行控制,接收器和发送器可以相互独立地选择外部时钟和帧同步信号,也可以选择由内部采样率发生器产生时钟和帧同步信号。帧同步脉冲有效表示传输的开始。1.1.2 SCI串行接口设计 设置VC5402的McRSP输出时钟和帧同步信号由内部采样率发生器产生,内部数据时钟CLKG和帧同步信号FSG驱动发送时钟CLKX和帧同步FSX(CLKXM
4、=l,FSXM=l,FSGM=1),输入时钟也由内部采样率发生器产生,内部数据时钟CLKG驱动接收时钟CLKR(CLKRM=1),同时由CPU时钟驱动采样率发生器(CLKSM=1)。考虑到AT89C51(简称C51)串口发送数据帧中第l位为起始位,因此可以利用该位驱动输入帧同步信号FSR,同时要置忽略帧同步信号标志为1。其中FSG帧同步脉冲宽度=(FWID+1)CLKG;FSG帧同步脉冲周期=(FPER+1)CLKG;采样率发生器分频系数(采样率=波特率)=FIN(CLKGDV+1)。 SCI串口连接如图l所示。1.1.3 波特率不一致的处理 VC5402初始化(以图1为例):STM#SRGR
5、l,SPSAlSTM#ooFEH,SPSDl;FSG帧同步脉冲宽度位为1个CLKG;波特率为100 MHz(0X(OFF)=392 156 bsSTM#SRGR2,SPSAlSTM#3D00H,SPSDl;内部采样率发生器时钟由CPU驱动 C51初始化:MOV TMOD,#20HMOVTLl,#FFHMOVTHl,#FFH ;C51波特率=(2SMOD32)*(fosc12)1(256一初值)一24 509 bsMOV SCON,#50H ;置串口方式l,每一帧10位数据允许接收MOV PCON,#80H ;设置SMOD=1VC5402波特率C51波特率=(392 15624 509)=160
6、00 49 VC5402每发送16位数据,C51只采样1位数据。在VC5402存储器中开辟一个空间对每次发送的8位数据进行扩展,1位扩为16位,0为0000H,l为FFFFH,共扩为128位。在数据头部填加16位起始位0000H,数据尾部填加停止位FFFFH。在VC5402发送控制寄存器XCR中设置XWDLEN=000(1字含8位),即可将要发送的8位数据封装成1帧10字的数据。这也符合C51串口1方式下1帧10位的数据格式。C51以116的VC5402采样速率接收数据,0000H采样为0,FFFFH采样为1,由此可以将接收到的200位恢复为8位数据,停止位进入RB8。 C51每发送1位数据,
7、VC5402要采样为16位数据。C51一次发送的10位数据的起始位触发VC5402的接收帧同步。由于VC5402以16倍C51的采样速率接收数据,1位采样为16位,0采样为0000H,1采样为FFFFH只采样发送来的10位中的前9位,9位封装成144位,即接收的1帧数据完成。VC5402将收到的144位数据在开辟的存储器空间存放,抛弃前16位,在剩下的128位里分成8组,每组16位。比较其中间的8位,若有4位以上为1,则该16位为1,反之则为0。由此将接收到的144位恢复为8位数据。 为了不让CPU频繁地被数据接收和发送打断,将DMA和MCBSP联合使用来控制数据的接收和发送。RRDY直接驱动
8、MCBSP向DMAC接收数据事件(REVENT事件),XRDY直接驱动MCBSP向DMAC发送数据事件(XEVENT事件)。 SCI通信协议如图2所示1. 2 SPI串行通信设计 将C51置为主机,VC5402为从机。McBSP的时钟停止模式(CLKSTP=1X)兼容SPI模式,接收部分和发送部分内部同步。McBSP可以作为SPI的从机或主机。发送时钟BCLKX作为SPI协议的移位时钟SCK使用,发送帧同步信号BFSX作为从机使能信号nSS使用,接收时钟BCLKR和接收帧同步信号BFSR不使用。它们在内部分别与BCLKX和BFSX直接连接。BDX作为MISO,而BDR作为MOSI,发送和接收具
9、有相同字长。 C51中的并口P11和P12作为扩展串行SPI输人输出口与VC5402连接,P10作为串行时钟输出口,P13作为帧同步信号输出口_。 SPI串口连接如图3所示。VC5402初始化程序(以图3为例):STM#SPCRll,SPSAl;设置时钟停止位进入MCBSP的SPI模式STM#0X1000,SPSDl;时钟开始于上升沿(无延迟)STM#SPCRl2,SPSAlSTM#0X0040,SPSDl;XINT由XRDY(即字尾)驱动STM#PCRl,SPSAlSTM#0X000C,SPSDl;对发送和接收时钟,同步帧进行设置STM#RCRllSPSAlSTM#0X0000,SPSDl;接收数据l帧1字1字8位STM#XCRll,SPSAlSTM#0X0000,SPSDl;发送数据1帧1字1字8位; P10发送到VC5402的移位时钟是保证DSP正确采样接收和发送数据的时钟。它要保证和C51的采样接收和发送数据的时钟一致才能使主从机同步。4用心 爱心 专心