微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MCU与DSP的SPI通信设计

MCU与DSP的SPI通信设计

时间:04-13 来源:互联网 点击:

的开始。为了避免误操作指令数据发送两次,DSP接收的两个数据都是0时进行相应的操作,否则重新传输指令数据。然后把单片机需要传输的数据存放在一个数组里面依次传送,比如要传输3个数据,则定义数组a[0]和a[1]存放指令数据,a[2]到a[4]存放需要传送的数组。

2.2 串行口的初始化

单片机的SPI初始化包括:把相应的I/O口配置成具有SPI特殊功能的接口,时钟模式的选定,波特率的选择,发送接收数据长度的选择,内部相对应的时钟使能。所有设置都是通过设计相对应的SPI控制寄存器实现的[5]。

初始化程序如下:

WDTCTL=WDTPW+WDTHOLD;//关闭看门狗

BCSCTL1 = RSEL0 + RSEL1 + RSEL2; // XT2on

BCSCTL2 = SELM1 + SELS;//选择高速晶体振荡器作为时钟源

UCTL1=CHAR + SYNC + MM + SWRST;//SPIZ主模式8位数据,单片机作为主动模式

UTCTL1=STC+SSEL1+CKPL ;//数据在下降沿输出,系统主时钟,三线模式

UBR01=0x02;

UBR11=0x00;//波特率设为fclk/2

UMCTL1=0x00;

ME2=USPIE1;//模块使能2

P5SEL|=0x0F;//低4位为模块端口功能

P5OUT|=0xf0;

UCTL1= ~SWRST;//复位结束

2407A的SPI初始化与单片机的初始化相类似,但是DSP作为从器件,所以其波特率由主器件决定不需要再进行设计。

2.3 MSP430发送数据

系统具有薄膜按键和液晶显示,可以方便地在需要的时候发送数据。比如,在设计完参数后就会出现一个选择界面,让操作者选择是进行参数保存、参数备份还是传递参数给DSP,操作者可以根据自己不同的需要选择相应的功能。如果选择参数传递功能,则单片机会跳到相应的程序段执行参数传递的任务。发送数据程序如下:

P5OUT = 0x1f;//片选DSP芯片

while((U1IFG UTXIFG1) != UTXIFG1);

for(k=0;k6;k++) {//传输的数据个数

P5OUT = 0x1f;

while((U1IFG UTXIFG1) != UTXIFG1);

TXBUF1=a[k];//发送数据

while((UTCTL10x01)==0);//发送完成

delay(10);

P5OUT = 0x2f;

}

2.4 DSP接收数据

DSP接收单片机发送过来的数据是通过中断方式实现的,每传输一个数据就发生一次中断。主程序完成对DSP的初始化后进入等待状态,一旦接收到单片机的中断信号,DSP就进入中断服务子程序,将接收到的数据存放在70H开始的存储单元中。当所有数据传输完成后,将这些数据赋给相应的变量。这里要注意的是,DSP的SPIRXBUF是16位,而单片机发送的数据是8位,所以在DSP接收到数据以后需要做处理,把高8位屏蔽掉。可以通过与00FF相与来达到这个目的。中断程序流程如图2所示。

图2 DSP中断程序流程

中断程序如下:

LDP #6

LACC K;K=K+1

ADD #1

SACL K

MAR *,AR2;AR2为存储单元地址指针

LDP #DP_PF1

LACC SPIRXBUF

AND #00FFH;高位屏蔽掉

SACL *+

LDP #6

LACC K

SUB #1;判断是否为指令数据

BCND L1,NEQ

LDP #0

LACC #70H

SUB #0

BCND L3,NEQ;不是0则跳到L3

BL2;是0则跳到L2

L1: …;判断是否是第2个数据

L4: LACCK;判断数据是否传送完毕

SUB #05H

BCND L5,EQ

BL2

L5:LDP #0;数据全部发送完毕

LACC 72H

LDP #6

SACL SPEED;赋值给相应变量

……

L3: SPLK K,0;K=0

LDP #0

LAR AR2,#70H;地址指针指回70H

L2: CLRC INTM;开中断

RET

3 结论

实验证明,应用SPI通信进行MSP430单片机与DSP之间的串口通信完全满足伺服系统实时性的要求。同时,由于SPI接口功能比较完善,通信协议清晰,时序简单,无须外加其他元器件即可方便地实现DSP与主机之间数据的串行通信,简化了系统设计,增强系统的实时处理能力和应用范围。结构灵活性强,便于扩展,同时减轻了主CPU负担,提高了系统的可靠性。

参考文献

[1] 胡大可.MSP430系列超低功耗16位单片机原理与应用[M].北京:北京航空航天大学出版社,2000.

[2] Texas Instruments.MSP430x1xx Family Users Guide (SLAU049B.pdf),2002.

[3] 刘和平,严利平,张学锋,等.TMS320LF240X DSP结构、原理及应用[M].北京:北京航空航天大学出版社,2002.

[4] 任志斌,车长征.串行外设接口SPI的应用[J] .电子技术应用,2002,29(10):2022.

[5] 魏小龙.MSP430系列单片机接口技术及系统设计实例[M].北京:北京航空航天大学出版社,2002.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top