MSP430FR5994LannchPad开发笔记之四:eUSCI之硬件SPI使用

一、 MSP430FR5994 eUSCI概述

eUSCI 模块用于串行数据通信。 eUSCI 模块支持同步SPI(3 pin或4 pin)和I2C等通信协议,以及异步通信协议,如UART、具有自动波特率检测功能的增强型 UART 和 IrDA。
eUSCI_An 模块提供对 SPI(3 针或 4 针)、UART、增强型 UART 和 IrDA 的支持。
eUSCI_Bn 模块提供对 SPI(3 针或 4 针)和 I2C 的支持。
根据封装的不同,MSP430FR5994最多可实现四个 eUSCI_A 模块和最多四个 eUSCI_B 模块。

二、 MSP430FR5994的硬件SPI

2.1 特性

  • 7 位或 8 位数据长度
  • LSB-first 或 MSB-first 数据发送和接收
  • 3 线和 4 线 SPI 操作
  • 主模式或从模式
  • 独立的发送和接收移位寄存器
  • 单独的发送和接收缓冲寄存器
  • 连续发送和接收操作
  • 可选择的时钟极性和相位控制
  • 主模式下的可编程时钟频率
  • 接收和发送的独立中断能力
  • LPM4 下的从(slave)模式操作

2.2 MSP430FR5994 launchpad SPI使用

根据(一)中所示,MSP430FR5994硬件SPI可以由eUSCI_An模块或eUSCI_Bn来实现,最多可实现8路SPI。
这里根据launchpad引脚分布,选择下图中标注“SPI”部分引脚作为硬件SPI引脚使用。

// 使用eUSCI_B1外设模块
P5.0 --------SPI.MOSI
P5.1 --------SPI.MISO
P5.2 --------SPI.SCLK
P8.3 --------SPI.CS(gpio模拟)

Launchpad引脚分布
封装引脚
SPI信号引脚
红色区域为launchpad板载5994芯片的引脚(板载LQFP80封装,代号PN80)
相关引脚功能图标

三、driverLib SPI API说明及初始化

3.1 函数集

  • EUSCI_B_SPI_changeClockPhasePolarity 时钟相位和极性设置
  • EUSCI_B_SPI_changeMasterClock 设置时钟及频率
  • EUSCI_B_SPI_clearInterrupt 清中断标志
  • EUSCI_B_SPI_disable 失能SPI外设
  • EUSCI_B_SPI_disableInterrupt 失能中断
  • EUSCI_B_SPI_enable 使能SPI
  • EUSCI_B_SPI_enableInterrupt 使能中断
  • EUSCI_B_SPI_getInterruptStatus 获取中断标志
  • EUSCI_B_SPI_getReceiveBufferAddress 获取接收缓存地址
  • EUSCI_B_SPI_getTransmitBufferAddress 获取发送缓存地址
  • EUSCI_B_SPI_initMaster 初始化SPI模块,该SPI作为master
  • EUSCI_B_SPI_initSlave 初始化SPI模块,该SPI作为slave
  • EUSCI_B_SPI_isBusy 判断是否busy
  • EUSCI_B_SPI_receiveData 接收一个字节数据
  • EUSCI_B_SPI_select4PinFunctionality 设置为4线SPI模式
  • EUSCI_B_SPI_transmitData 发送一个字节数据

3.2 SPI初始化步骤

eUSCI 由 PUC 或 UCSWRST 位复位。
在 PUC 之后,UCSWRST 位自动置位,使 eUSCI 保持在复位状态。 置位时,UCSWRST 位复位 UCRXIE、UCTXIE、UCRXIFG、UCOE 和 UCFE 位,并设置 UCTXIFG 标志。
清除 UCSWRST 会释放 eUSCI 进行操作。
配置和重新配置 eUSCI 模块时应在 UCSWRST 置位时,以避免不可预知的行为。
复位UCSWRST位,使能SPI模块;置位UCSWRST位,SPI不工作;UCSWRST置位时,进行SPI参数设置(初始化)
SPI初始化步骤

  • 1) 置位UCSWRST;
  • 2)初始化SPI相关寄存器;
  • 3)相关端口初始化;
  • 4)为了避免不可预知的操作,确保SCLK、MISO、MOSI各端口都在“最终”电平;
  • 5)复位UCSWRST(使能SPI);
  • 6)使能相关中断(如果必要的话)。
    UCSWRST位
    UCSWRST

四、测试

4.1 SPI初始化

void spi_init()
{
    /*
     * Select Port 8
     * Set Pin 3 as output
     * SPI_CS
     */
    GPIO_setAsOutputPin(
        GPIO_PORT_P8,
        GPIO_PIN3
    );
    /*
    * Select Port 8
    * Set Pin 3 to output Low.
    * SPI_CS
    */
    GPIO_setOutputHighOnPin(
        GPIO_PORT_P8,
        GPIO_PIN3
    );
   
    /*
    * Select Port 5
    * Set Pin 0, 1, 2 to input Secondary Module Function, (UCB0TXD/UCB0SIMO, UCB0RXD/UCB0SOMI).
    */
    GPIO_setAsPeripheralModuleFunctionInputPin(
        GPIO_PORT_P5,
        GPIO_PIN0 + GPIO_PIN1 + GPIO_PIN2,
        GPIO_PRIMARY_MODULE_FUNCTION
    );

    //Initialize Master
    EUSCI_B_SPI_initMasterParam param = {0};
    param.selectClockSource = EUSCI_B_SPI_CLOCKSOURCE_SMCLK;
    param.clockSourceFrequency = CS_getSMCLK();
    param.desiredSpiClock = 500000;
    param.msbFirst = EUSCI_B_SPI_MSB_FIRST;
    param.clockPhase = EUSCI_B_SPI_PHASE_DATA_CHANGED_ONFIRST_CAPTURED_ON_NEXT;
    param.clockPolarity = EUSCI_B_SPI_CLOCKPOLARITY_INACTIVITY_HIGH;
    param.spiMode = EUSCI_B_SPI_3PIN;
    EUSCI_B_SPI_initMaster(EUSCI_B1_BASE, &param);

    //Enable SPI module
    EUSCI_B_SPI_enable(EUSCI_B1_BASE);
}

4.2 SPI单字节发送

void spi_put(uint8_t byte)
{
    GPIO_setOutputLowOnPin(GPIO_PORT_P8,GPIO_PIN3);
    EUSCI_B_SPI_transmitData(EUSCI_B1_BASE,byte);
    while(EUSCI_B_SPI_isBusy(EUSCI_B1_BASE));
    GPIO_setOutputHighOnPin(GPIO_PORT_P8,GPIO_PIN3);
}

4.3 结果

单字节波形图
一个字节截图
解析结果
字节流1
多字节发送波形图
字节流2
–(END)–

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MSP430是德州仪器(Texas Instruments)推出的一款微控制器家族,而LPM(Low Power Mode)则是MSP430系列芯片中的低功耗模式。 MSP430 LPM是通过设置不同的低功耗模式来实现芯片的功耗降低。MSP430系列芯片具有多种低功耗模式,包括LPM0~LPM4。 LPM0是最节能的模式,当芯片进入LPM0时,CPU停止运行,所有外设也将停止,只保留少量关键组件(如时钟模块)工作以待唤醒。这使得芯片的总功耗降到最低,非常适合需要长时间等待外部事件或触发条件的应用场景。 LPM1、LPM2、LPM3和LPM4是一些相对较高功耗的模式,适用于需要保留某些外设的应用场景。在这些模式下,CPU可能会休眠或进入低功耗运行状态,而其他外设(如通信模块、定时器等)可以继续工作。LPM1、LPM2、LPM3和LPM4之间的主要区别在于唤醒芯片需要的时间和功耗大小。 利用MSP430 LPM功能,可以实现低功耗的设计,延长电池寿命,减少功耗成本。在电池供电或对功耗要求较高的项目中,合理利用MSP430 LPM模式可以最大限度地降低芯片的功耗,提高系统效率。同时,由于MSP430系列具有丰富的外设和可编程特性,应用领域广泛,如物联网、传感器、医疗设备和电能计量等。 总之,MSP430 LPM是一种用于控制微控制器芯片功耗的低功耗模式,可以根据应用需求选择合适的模式,降低功耗,提高系统效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值