0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MCU与DSP的SPI通信设计

jf_pJlTbmA9 来源:jf_pJlTbmA9 作者:jf_pJlTbmA9 2023-07-23 17:11 次阅读

引言

现今的工控系统中,为了提高系统的实时性和适用性,一般采用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通信设备在硬件连接上只需要将主机的发送与从机的接收相连,将主机的接收与从机的发送相连,将主机产生的时钟信号输出至从机的时钟引脚上。单片机与外设的硬件连接如图1所示。

image.png
图1 MSP430F149与DSP的接口连接电路

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

从图1可以看出,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相与来达到这个目的。中断程序流程如图2所示。

image.png

中断程序如下:

LDP#6
LACCK;K=K+1
ADD#1
SACLK
MAR*,AR2;AR2为存储单元地址指针
LDP#DP_PF1
LACCSPIRXBUF
AND#00FFH;高位屏蔽掉
SACL*+
LDP#6
LACCK
SUB#1;判断是否为指令数据
BCNDL1,NEQ
LDP#0
LACC#70H
SUB#0
BCNDL3,NEQ;不是0则跳到L3
BL2;是0则跳到L2
L1: …;判断是否是第2个数据
L4: LACCK;判断数据是否传送完毕
SUB#05H
BCNDL5,EQ
BL2
L5:LDP#0;数据全部发送完毕
LACC72H
LDP#6
SACLSPEED;赋值给相应变量
……�T
L3: SPLKK,0;K=0
LDP#0
LARAR2,#70H;地址指针指回70H
L2: CLRCINTM;开中断
RET

3 结论

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

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dsp
    dsp
    +关注

    关注

    552

    文章

    7962

    浏览量

    348226
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16984

    浏览量

    350251
  • 控制器
    +关注

    关注

    112

    文章

    16191

    浏览量

    177365
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1700

    浏览量

    91301
收藏 人收藏

    评论

    相关推荐

    SPI总线实现DSPMCU之间的高速通信

    简述了SPI总线协议工作时序和配置要求,通过一个成功的实例详细介绍了使用SPI总线实现DSPMCU之间的高速通信方法,并参考实例给出了
    发表于 11-27 15:10 58次下载

    一种通过SPI接口协议实现DSP与其它设备通信的方法

    介绍了SPI通信协议,并着重介绍了TI公司生产的TMS320C5402 DSP用于SPI协议通信时的串口配置方法和接口电路设计实例,最后给出
    发表于 05-06 20:17 2446次阅读
    一种通过<b class='flag-5'>SPI</b>接口协议实现<b class='flag-5'>DSP</b>与其它设备<b class='flag-5'>通信</b>的方法

    CPLD的DSPSPI端口通信设计

    本文给出了DSPSPI端口通信的设计与实现过程,讨论了其中的关键技术问题。SPI多端口通信方法基于CPLD实现,易移植,易于实现功能扩展,
    发表于 05-30 11:22 3806次阅读
    CPLD的<b class='flag-5'>DSP</b>多<b class='flag-5'>SPI</b>端口<b class='flag-5'>通信</b>设计

    ARM与DSPSPI通信设计实现

    提出一种测量仪器的多处理机分布式控制方案, 并对DSP 与移植了Linux 操作系统的ARM之间SPI 通信设计进行了着重阐述。对于这样的特定系统, 首先要完成Linux 下的SPI
    发表于 06-14 17:25 127次下载
    ARM与<b class='flag-5'>DSP</b>的<b class='flag-5'>SPI</b><b class='flag-5'>通信</b>设计实现

    关于DSPSPI端口通信设计的探究

    。本文以一种超声波电机运动控制装置为应用背景,讨论了基于CPLD的DSP控制芯片多SPI端口通信技术。 串行同步外设端口(SPI)通常也称为同步外设端口,具有信号线少、协议简单、传输速
    发表于 10-24 10:57 2次下载
    关于<b class='flag-5'>DSP</b>多<b class='flag-5'>SPI</b>端口<b class='flag-5'>通信</b>设计的探究

    基于SPI通信接口的两片DSP的双向通信和任务同步

    数据双向通信,TMS320F2812 DSP芯片内部集成了一个SPI模块,方案提出了一种基于SPI通信接口的两片
    发表于 10-30 15:00 10次下载
    基于<b class='flag-5'>SPI</b><b class='flag-5'>通信</b>接口的两片<b class='flag-5'>DSP</b>的双向<b class='flag-5'>通信</b>和任务同步

    DSP参考程序spi

    DSP参考程序spi
    发表于 04-10 15:46 11次下载

    如何利用SPI模块进行双DSP同步串行通信设计

    随着数字信号处理器(DSP)在系统控制领域中的广泛应用,控制各系统的DSP 之间 通信问题也越来越突出。利用DSP 本身的高速同步串行接口(SPI
    的头像 发表于 02-06 08:56 7483次阅读
    如何利用<b class='flag-5'>SPI</b>模块进行双<b class='flag-5'>DSP</b>同步串行<b class='flag-5'>通信</b>设计

    基于FPGA与MCU通信SPI协议设计

    typora-copy-images-to: typora_picture基于FPGA与MCU通信SPI协议设计1. SPI总线协议介绍及硬件设计1.1
    发表于 11-05 15:35 14次下载
    基于FPGA与<b class='flag-5'>MCU</b><b class='flag-5'>通信</b>的<b class='flag-5'>SPI</b>协议设计

    DSP与FPGA间SPI通信(DSP为主、FPGA为从)

    DSP芯片(master):TMS320F28069FPGA芯片(slave):Spartan-xc6slx25-2ftg256SPI协议:SCK:5MHz数据长度:8ByteFalling
    发表于 12-05 17:21 42次下载
    <b class='flag-5'>DSP</b>与FPGA间<b class='flag-5'>SPI</b><b class='flag-5'>通信</b>(<b class='flag-5'>DSP</b>为主、FPGA为从)

    SPI通信笔记

    ,I输入)片选线CS(主机用于选择参与通信的从机)2、通信特点: 同步、串行、全双工一般情况下,MCU与某个功能模块之间用SPI通信时,
    发表于 12-09 17:21 5次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>通信</b>笔记

    基于DSP28035的模拟SPI

    基于DSP28035的模拟SPI————你真的理解SPI通信吗?​ 你真的理解SPI是怎么通信
    发表于 12-22 19:16 8次下载
    基于<b class='flag-5'>DSP</b>28035的模拟<b class='flag-5'>SPI</b>

    MCU SPI接口访问非标准SPI ADC的方法

    当前许多精密模数转换器(ADC)具有串行外设接口(SPI)或某种串行接口,用以与包括微控制器单元(MCU)、DSP和FPGA在内的控制器进行通信。控制器写入或读取ADC内部寄存器并读取
    发表于 02-09 11:28 5次下载
    <b class='flag-5'>MCU</b> <b class='flag-5'>SPI</b>接口访问非标准<b class='flag-5'>SPI</b> ADC的方法

    车载T-BOX中MCU和SoC通信方案(SPI通信方式)

    在车载T-BOX中,MCU和SoC之间必然存在数据通信,本篇博文将分享一种基于SPI方式的通信方案。
    的头像 发表于 01-03 11:26 3809次阅读
    车载T-BOX中<b class='flag-5'>MCU</b>和SoC<b class='flag-5'>通信</b>方案(<b class='flag-5'>SPI</b><b class='flag-5'>通信</b>方式)

    基于MSP430单片机MCUDSPSPI通信设计

    电子发烧友网站提供《基于MSP430单片机MCUDSPSPI通信设计.pdf》资料免费下载
    发表于 10-30 10:14 6次下载
    基于MSP430单片机<b class='flag-5'>MCU</b>与<b class='flag-5'>DSP</b>的<b class='flag-5'>SPI</b><b class='flag-5'>通信</b>设计