登录   |   注册
    准考证打印   论文投票   报考指南   论文辅导   软考培训   郑重申明  
您现在的位置:  首页 > 通信学苑 > 中级互联网技术 >> 正文
正文
MCU与DSP的SPI通信技术详解
来源:尚大教育-通信学院 作者:辉辉 时间;2012-12-28 点击数: 尚大软考交流群:376154208
现今的工控系统中,为了提高系统的实时性和适用性,一般采用DSP来完成核心算法与控制,而使用MCU来实现人机对话,以实现实时控制功能。这样,DSP和MCU需要一种高效的数据总线来完成它们之间 的大量数据传送。SPI总线由于占用的接口线少,通信效率高,并且大部分处理器芯片都支持,因而是一种理想的设计方案。

  现今的工控系统中,为了提高系统的实时性和适用性,一般采用DSP来完成核心算法与控制,而使用MCU来实现人机对话,以实现实时控制功能。这样,DSP和MCU需要一种高效的数据总线来完成它们之间 的大量数据传送。SPI总线由于占用的接口线少,通信效率高,并且大部分处理器芯片都支持,因而是一种理想的设计方案。


  针对交流伺服系统实际使用的要求,采用TI公司的高性能DSP控制器TMS320LF2407A(简称“2407A”)作为控制核心;选用TI公司生产的MSP430系列单片机中的MSP430F149作为人机界面的控制芯片,来实 现按键和数据采集以及显示的功能;采用SPI串口通信实现单片机与DSP之间的数据传输。


  1 系统硬件的构成


  1.1 MSP430


  MSP430系列单片机是TI公司近几年开发的新一代单片机。该单片机在设计上打破常规采用了全新的概念,其突出的优点是低电源电压、超低功耗、多种功能。由于其功能远远超过其他系列单片机的功能, 因而又称为“混合型单片机”.MSP430具有非常高的集成度,单片集成了多通道的12位A/D转换、片内精密比较器、多个具有PWM功能的定时器、片内USART、看门狗定时器、片内数控振荡器、大量的I/O端 口以及大容量的片内存储器。同时,MSP430F149是Flash存储器型单片机,具有良好的仿真开发技术,设置有JTAG仿真接口和高级语言编译器。在系统支持软件下,在线实现对目标系统的硬件调试及软件 开发,包括汇编语言、C语言、连接及动态调试,具有单步、多断点和跟踪,并且开放全部存储器、寄存器,可以方便、可靠地对系统进行软硬件开发[12].


  基于以上特点,该系列单片机在便携式仪表、智能传感器、实用检测仪器、电机控制、家庭自动化等领域的应用较为普遍。

1.2 TMS320LF2407A


  2407A是TI公司为满足工业控制应用,尤其是电机控制而设计的。把一个高性能的 DSP核和许多外围设备集成到单片内。2407A的40 MIPS的处理速度可以满足快速地处理大量数据和算法的需要。


  2407A具有丰富的外设模块: 3K字的Flash程序存储器、1.5K字的数据/程序RAM、544字双口RAM(DARAM)和2K字的单口RAM(SARAM)、2个事件管理器EVA和EVB、16通道输入的A/D转换器,具有看门狗定时器 模块(WDT)、串行通信接口(SCI)、16位的串行外设接口模块(SPI)、控制器局域网络(CAN)2.0B模块、基于锁相环的时钟发生器、高达40个可单独编程或复用的通用输入/输出引脚、5个外部中断。由此可 以看出,2407A确实有着很强的实时处理能力,不失为高性能伺服驱动控制的理想器件之一[3]。


  1.3 硬件接口设计与SPI通信的实现


  SPI通信设备在硬件连接上只需要将主机的发送与从机的接收相连,将主机的接收与从机的发送相连,将主机产生的时钟信号输出至从机的时钟引脚上。


  单片机MSP430F149作为串行通信的主机, DSP 2407A则作为从机(slave)。其中,SPICLK为SPI时钟引脚, SPISIMO为SPI从动输入/主动输出,SPISOMI为从动输出/主动输入,SPISTE为从动发送使能。


  SPI通过一根时钟引线将主机和从机同步,因此,它的串行数据交换不需要增加起始位、停止位等用于同步的格式位,直接将要传送的数据写入主机的SPI发送数据寄存器。这个写入过程自动启动主机的 发送过程,即在同步时钟SPICLK的节拍下把SPITXBUF的内容一位一位地移到引脚SPISIMO;对于从机,同样在SPICLK的节拍下将出现在引脚SPISIMO上的数据一位一位地移到从机的移位寄存器,当接收完 一个完整的数据块后,设置中断标志通知从机这个数据块已接收完毕,并同时将移位寄存器接收到的内容复制到从机的SPI接收数据寄存器SPIRXBUF.可以看出,用户编程只需在发送数据时写数据到SPI 发送数据寄存器,在接收数据时读SPI接收数据寄存器,其余的工作都由SPI模块自动完成[4].


  2 软件设计


  MSP430F149和DSP都允许用户用C语言和汇编语言进行编程。系统中DSP对电机实现实时控制,对运行速度要求严格,所以程序采用汇编语言实现。MSP430实现按键显示、数据管理和指令传输等功能,对运 行速度要求不高,所以采用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; // 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;k<6;k++) {//传输的数据个数


  P5OUT &= 0x1f;


  while((U1IFG & UTXIFG1) != UTXIFG1);


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


  while((UTCTL1&0x01)==0);//发送完成


  delay(10);


  P5OUT &= 0x2f;


  }

2.4 DSP接收数据


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


  中断程序如下:


  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;赋值给相应变量


  ……

来顶一下
返回首页
返回首页
上一篇:浅析安防监控光端机通信技术原理
下一篇:无线电视网络的通信光缆接续
 相关文章
 
 
跟贴共
笔 名 :   验证码:
网友评论仅供其表达个人看法,并不表明尚大教育同意其观点或证实其描述
距离2023年10月14日通信考试还有
通信各地考务机构
各省市通信报名简章