MCU与DSP的SPI通信设计 (dsp实现spwm)
整理分享MCU与DSP的SPI通信设计 (dsp实现spwm),希望有所帮助,仅作参考,欢迎阅读内容。
内容相关其他词:mcu和dsp,dsp和mcu区别,dsp+mcu,dsp与mcu的区别,dsp与mcu的区别,dsp实现spwm,mcu和dsp,mcu mpu dsp,内容如对您有帮助,希望把内容链接给更多的朋友!
图1MSPF与DSP的接口连接电路单片机MSPF作为串行通信的主机,DSPA则作为从机(slave)。其中,SPICLK为SPI时钟引脚,SP*IMO为SPI从动输入/主动输出,SP*OMI为从动输出/主动输入,SP*TE为从动发送使能。从图1可以看出,SPI通过一根时钟引线将主机和从机同步,因此,它的串行数据交换不需要增加起始位、停止位等用于同步的格式位,直接将要传送的数据写入主机的SPI发送数据寄存器。这个写入过程自动启动主机的发送过程,即在同步时钟SPICLK的节拍下把SPITXBUF的内容一位一位地移到引脚SP*IMO;对于从机,同样在SPICLK的节拍下将出现在引脚SP*IMO上的数据一位一位地移到从机的移位寄存器,当接收完一个完整的数据块后,设置中断标志通知从机这个数据块已接收完毕,并同时将移位寄存器接收到的内容*到从机的SPI接收数据寄存器SPIRXBUF。可以看出,用户编程只需在发送数据时写数据到SPI发送数据寄存器,在接收数据时读SPI接收数据寄存器,其余的工作都由SPI模块自动完成[4]。2软件设计MSPF和DSP都允许用户用C语言和汇编语言进行编程。*中DSP对电机实现实时控制,对运行速度要求严格,所以程序采用汇编语言实现。MSP实现按键显示、数据管理和指令传输等功能,对运行速度要求不高,所以采用C语言实现。软件设计的主要任务是:初始化相应的寄存器;单片机在相应的界面发送数据;DSP及时接收到达串口的数据,识别并保存数据。2.1通信协议的设置两个设备之间要实现相互通信,首先必须规定用以传输数据的协议。一般来说,主机发送命令和配置信息给从机,而从机则向主机发送反馈信息。*主要实现的是单片机向DSP发送数据信息,单片机首先发送指令数据表示主机发送数据的过程开始。如果发送的是0,则标志着该过程的开始。为了避免误*作指令数据发送两次,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;//XT2onBCSCTL2=SELM1+SELS;//选择高速晶体振荡器作为时钟源UCTL1=CHAR+SYNC+MM+SWRST;//SPIZ主模式8位数据,单片机作为主动模式UTCTL1=STC+SSEL1+CKPL;//数据在下降沿输出,*主时钟,三线模式UBR=0x;UBR=0x;//波特率设为fclk/2UMCTL1=0x;ME2=USPIE1;//模块使能2P5SEL|=0x0F;//低4位为模块端口功能P5OUT|=0xf0;UCTL1&=~SWRST;//复位结束A的SPI初始化与单片机的初始化相类似,但是DSP作为从器件,所以其波特率由主器件决定不需要再进行设计。2.3MSP发送数据*具有薄膜按键和液晶显示,可以方便地在需要的时候发送数据。比如,在设计完参数后就会出现一个选择界面,让*作者选择是进行参数保存、参数备份还是传递参数给DSP,*作者可以根据自己不同的需要选择相应的功能。如果选择参数传递功能,则单片机会跳到相应的程序段执行参数传递的任务。发送数据程序如下:P5OUT&=0x1f;//片选DSP芯片while((U1IFG&UTXIFG1)!=UTXIFG1);for(k=0;k