IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> MSP430FR5994LannchPad开发笔记之四:eUSCI之硬件SPI使用 -> 正文阅读

[嵌入式]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)–

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:20:04  更:2022-05-07 11:20:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:21:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码