江协科技stm32————11-4 SPI通信协议

目录

SPI外设简介

SPI框图

波特率控制

SPE(SPI使能)

配置主从模式

四种模式的选择

发送和接收数据缓冲区状态

I2C基本结构

[1. SPI模式选择](#1. SPI模式选择)

[2. 时钟极性和相位(CPOL和CPHA)](#2. 时钟极性和相位(CPOL和CPHA))

[3. 波特率设置](#3. 波特率设置)

[4. 数据帧格式](#4. 数据帧格式)

[5. NSS引脚管理](#5. NSS引脚管理)

[6. 全双工/半双工模式](#6. 全双工/半双工模式)

[7. 多主模式](#7. 多主模式)

[8. 中断和DMA配置](#8. 中断和DMA配置)

[9. 启动SPI外设](#9. 启动SPI外设)

[10. 配置GPIO引脚](#10. 配置GPIO引脚)

[11. 错误处理机制](#11. 错误处理机制)

主模式全双工连续传输

非连续传输

SPI外设简介

SPI1挂载在APB2是,PCLK是72M

SPI2挂载在APB1是,PCLK是36M

只了解SPI做主机的情况,一般采样全双工

可以使用DMA自动搬运数据

I2S(音频传输)

  • 全双工通信:SPI可以同时发送和接收数据。
  • 主从模式:设备可以配置为主模式(提供时钟信号)或从模式(接收时钟信号)。
  • 时钟极性和相位:通过配置时钟极性(CPOL)和相位(CPHA),用户可以选择何时进行数据采样和发送。
  • 数据帧格式:数据帧可以配置为8位或16位,并且可以选择MSB(最高有效位)优先或LSB(最低有效位)优先发送数据。

SPI框图

移位寄存器(低位先行的话)右边的数据低位,一位一位的从MOSI移出去,MISO的数据一位一位的移入左边的数据高位 (LSBFIRST控制位可以控制0:高位先行或1:低位先行)

可以参考之前的移位示意图

连续数据流实现过程:

当移位寄存器没有数据要移位时,发送缓存区TDR中的数据立刻转入移位寄存器开始移位,置TXE为1(发送寄存器空),下一个数据转入TDR等候,移位寄存器中有数据时,产生时钟信号,通过MOSI移出数据,同时,MISO移入数据,移出和移入的数据同时完成,将移入的数据转入接收缓存区RDR,置RXNE为1(接收寄存器非空),然后在下个数据到来前尽快读取RDR的数据,可以实现连续输出

波特率控制

SPE(SPI使能)

配置主从模式

四种模式的选择

发送和接收数据缓冲区状态

I2C基本结构

1. SPI模式选择

  • 主从模式(Master/Slave)
    • 选择SPI作为主机(Master)或从机(Slave)。
    • 在主模式下,SPI生成时钟信号(SCK);在从模式下,SPI接收时钟信号。

2. 时钟极性和相位(CPOL和CPHA)

  • 时钟极性(CPOL)
    • 决定空闲状态下时钟线(SCK)的电平(高或低)。
  • 时钟相位(CPHA)
    • 决定数据采样的时间点,即在时钟的上升沿或下降沿采样数据。
  • 模式配置
    • 四种模式组合(CPOL = 0/1 和 CPHA = 0/1),决定数据和时钟之间的关系。

3. 波特率设置

  • 选择SPI通信的时钟速率,通常由主设备通过波特率预分频器来设置。
  • 设置的速率必须适合所连接的从设备,以确保正确的数据传输。

4. 数据帧格式

  • 数据位长度
    • 选择数据帧的长度,通常为8位或16位。
  • 字节顺序
    • 配置数据帧的传输顺序,可以选择MSB(最高有效位)优先或LSB(最低有效位)优先。

5. NSS引脚管理

  • 硬件管理
    • 在硬件模式下,由SPI控制NSS引脚自动选择从设备。
  • 软件管理
    • 在软件模式下,NSS引脚由软件手动控制,主设备通过软件命令选择从设备。
  • 从设备选择
    • 只有NSS引脚为低电平时,从设备才会响应主设备的指令。

6. 全双工/半双工模式

  • 全双工模式
    • SPI可以同时发送和接收数据。
  • 半双工模式
    • SPI只能在同一时刻发送或接收数据,而不是同时进行。

7. 多主模式

  • 如果SPI总线上可能存在多个主设备,则需要配置多主模式以避免总线冲突。
  • 采用总线仲裁机制来处理多个主设备的竞争。

8. 中断和DMA配置

  • 中断配置
    • 可以配置SPI的传输完成、接收完成等中断,以提高通信效率。
  • DMA配置
    • 若数据量较大,可以使用DMA控制器来自动传输数据,减轻CPU的负担。

9. 启动SPI外设

  • 在所有配置完成后,通过设置SPI控制寄存器中的使能位(SPE)来启动SPI外设,开始通信。

10. 配置GPIO引脚

  • 配置用于SPI通信的GPIO引脚,包括SCK、MOSI、MISO和NSS。
  • 将这些引脚配置为合适的模式(如复用功能模式),并设置正确的电气特性(如推挽输出、开漏输出、上拉/下拉电阻等)。

11. 错误处理机制

  • 配置SPI错误处理功能,如溢出错误、帧格式错误等,并定义相应的错误处理流程。

主模式全双工连续传输

发送数据1,发送数据2,接收数据1,发送数据3,接收数据2,发送数据4,接收数据3

非连续传输

配置SPI3,SCK默认高电平

在想发送数据时,若TXE=1,TDR空,则由软件写入0xF1至SPI_DR,此时TXE变为0,TDR的值为0xF1,会立即向移位寄存器进行传输,TXE置回1,等待接收完成,RXNE置1,再写入下一个数据............

相关推荐
湘-枫叶情缘2 小时前
解构认知边界:论万能方法的本体论批判与方法论重构——基于跨学科视阈的哲学-科学辩证
科技·学习·重构·生活·学习方法
康谋自动驾驶3 小时前
康谋分享 | 自动驾驶仿真进入“标准时代”:aiSim全面对接ASAM OpenX
人工智能·科技·算法·机器学习·自动驾驶·汽车
Yesheldon3 小时前
Cadence 高速系统设计流程及工具使用三
嵌入式硬件·fpga开发·硬件架构·硬件工程·智能硬件
inputA4 小时前
【LwIP源码学习6】UDP部分源码分析
c语言·stm32·单片机·嵌入式硬件·网络协议·学习·udp
思考的味道4 小时前
SVM在医疗设备故障维修服务决策中的应用:策略、技术与实践
嵌入式硬件
GCKJ_08245 小时前
观成科技:加密C2框架Vshell流量分析
网络·科技·信息与通信
真的想上岸啊5 小时前
学习51单片机01(安装开发环境)
嵌入式硬件·学习·51单片机
云卓SKYDROID5 小时前
无人机数据处理与特征提取技术分析!
人工智能·科技·无人机·科普·云卓科技
7yewh6 小时前
MCU程序加密保护(二)ID 验证法 加密与解密
单片机·嵌入式硬件·安全
YOYO--小天6 小时前
RS485和RS232 通信配置
linux·嵌入式硬件