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 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 【S32K3学习笔记】LPSPI -> 正文阅读

[嵌入式]【S32K3学习笔记】LPSPI


前言

通过前面的学习,已经可以实现最基础的引脚配置功能了,并实现了点亮LED的程序。下面将记录一下,S32K3的SPI模块的配置方法,以及注意事项。

一、LPSPI介绍

**LPSPI:LOW POWER Serial Peripheral Interface**

1.概述

  • 所有LPSPI支持最大数据速率15 MHz的附加板和7.5MHz的标准版。
  • LPSPI0实例在loopback模式下支持20MHz,在normal模式下支持15MHZ;
  • 所有6个LPSPI模块Tx和Rx支持DMA访问。
  • 可配置时钟极性和时钟相位。
  • 每个SPI 具有 2 个 4 字深度的 FIFO 分别缓冲 TX 与 RX 信息。
  • 每个LPSPI实例支持多个芯片选择。
  • 在主模式下灵活定时,包括SCK频率,占空比和PCS与SCK边缘之间的延迟。
  • TXMASK和RXMSK为半双工或匹配功能。
  • 支持半双工传输,支持在每个时钟边缘上发送或接收1/2/4/8位。

在这里插入图片描述
每个SPI均具有多个片选信号线,其中SPI0具有8个外部片选信号线。

2.时钟配置

在这里插入图片描述
高性能的SPI0以外设桥平台时钟AIPS_PLAT_CLK为总线时钟源,其他SPI以外设桥时钟作为总线时钟源。总线时钟源输入SPI 后,根据 SPI 预分频值得到用于度量时序参数的功能时钟,最后由功能时钟分频得到输出的 SPI 同步时钟信号 SCK根据时钟源的配置SPI0 回环模式下支持 20M 波特率,普通引脚下 15M ;其他 SPI 模块回环模式下 15M ,普通模式下 7.5M。

3.功能框图

在这里插入图片描述

1.控制逻辑:负责管理模块工作参数与通信参数,通过配置寄存器与 TXFIFO写入参数;
2.移位寄存器:将传输数据移出到总线与将数据移入 RXFIFO
3.FIFO:分为两类,发送 FIFO 与接收 FIFO ,总共 4 字深度。其中传输命令字也通过TXFIFO 写入控制逻辑;
4.SPI外部接口:连接引脚与 IO 信号;

二、使用步骤

1.引脚配置

在这里插入图片描述
例程使用的是LPSPI0,参数选择默认即可。

2.外设配置

SPI配置界面将 SPI 模块抽象化为三个功能部分,分别为 Name SpiDriver
SpiGeneral 。其中 Name 模块用于更上层的抽象定义 如 MCAL)MCAL),保持默认即可;我们主要讨论 SpiDriver SpiGeneral 两个模块的配置;
SpiGeneral界面主要负责配置 SPI 物理模块参数的配置(即硬件参数),如全局 DMA支持,同步传输定时器的选择, SPI 模块号与主从模式的配置, DMA 通道的选择等。有多少个 SPI 模块就需要在 SpiPhyUnit 中加入对应项数。
在这里插入图片描述

SPI Driver 配置界面主要负责配置 SPI 通信参数与传输命令字,由于通信参数与连接
的外设芯片相关,所以也被称为 externalDevice 配置。该界面主要可配置波特率,
PCS 片选信号线的选择,时钟极性与时钟相位,帧数据长度与格式、时钟延迟参数以及是否使能连续传输功能等。当配置完成后,通过SpiHwUnit 参数将此 externalDevice 配置映射到前面提到物理模块项。这种将物理模块与外设通信参数分离的设计思路可以很方便地应对 1 个 SPI 连接多个外设的情况。
在这里插入图片描述
值得注意的是SpiHwUnit中的选项就对应着SpiGeneral栏中的SpiphyUnit。这样我们就可以配置多个SPI芯片,对应一个SPI模块。

3.时钟配置

在这里插入图片描述
在这里插入图片描述

4.常用API

Lpspi_Ip_StatusType Lpspi_Ip_Init(const Lpspi_Ip_ConfigType *PhyUnitConfigPtr)
初始化指定的SPI HW实例。应该在调用所有其他API函数之前调用它。
Lpspi_Ip_StatusType Lpspi_Ip_UpdateTransferMode(uint8 Instance, Lpspi_Ip_ModeType Mode)
此函数更新指定SPI硬件微控制器外设的异步机制模式。
Lpspi_Ip_HwStatusType Lpspi_Ip_GetStatus(uint8 Instance)
这个函数返回指定SPI硬件微控制器外设的状态。
Lpspi_Ip_StatusType Lpspi_Ip_SyncTransmit(
                                            const Lpspi_Ip_ExternalDeviceType *ExternalDevice,
                                            uint8 *TxBuffer,
                                            uint8 *RxBuffer,
                                            uint16 Length,
                                            uint32 TimeOut
                                         )
调用SyncTransmit 函数执行一次同步传输,在函数内部获取计数器值进行计时,并
将数据依次推入 TDR 寄存器中发送。

5.Demo

应用程序使用SPI驱动程序以半双工模式传输数据
-通过LPSPI0(MASTER)传输10帧8位,通过LPSPI2(SLAVE)传输10帧8位
在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:35:52  更:2022-05-05 11:38:37 
 
开发: 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:22:31-

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