学习STM32第十三天

SPI通信

一、简介

SPI是由Motorola公司开发的一种通用数据总线,四根通信线:SCK(Serial Clock)、MOSI(Master Output Slave Input)、MISO(Master Input Slave Output)、SS(Slave Select),同步全双工。

  • SS
    从设备选择信号线 ,常称为片选信号线,也记为NSS、CS。当有多个SPI从设备与SPI主机相连时,共用SCK、MOSI和MISO三条总线,每个从设备都有独立的CS线,SPI协议通过CS信号寻址,当主机要选择从设备时把该从设备的CS信号设置为低电平,即片选有效,CS为高电平结束通信。
  • SCK
    时钟信号线,用于数据同步。由主机产生,决定了通讯的速率。
  • MISO
    主设备输入/从设备输出引脚 ,主机从这条信号线读入数据。当从机的SS引脚为高电平时,MISO引脚必须切换为高阻态
  • MOSI
    主设备输出/从设备输入引脚,主机从这条信号线输出数据。

在STM32F4XXX中,SPI接口有两种主要功能,SPI通信I2S音频通信协议 ,默认是SPI通信功能。I2C协议最大通信速率可达到400KHz,而SPI协议通信速率没有上限,由芯片厂商决定。虽然SPI协议能实现全双工通信,但在单工通信时另一条线会有通信资源的浪费。SPI没有应答机制 ,但是SPI协议的引脚在通信中不会产生冲突,输出引脚只作输出、输入引脚只作输入,因此需要配置为推挽输出。SPI一般都是高位先行,主从机内部有移位寄存器实现数据的转换。

二、工作原理

  1. 时序基本单元
  • 起始条件:CS从高电平切换到低电平
  • 终止条件:CS从低电平切换到高电平

    在从机被选中期间,CS要保持低电平。
  1. 数据传输基本单元
    SPI协议数据是通过交换字节的形式进行的,数据传输没有规定死 ,极大给予了用户自由度,为适配不同SPI芯片总共有4个模式,通过两个位的值进行配置:时钟极性(Clock Polarity, CPOL)和时钟相位(Clock Phase, CPHA)。
  • 模式0

  • 模式1

  • 模式2

  • 模式3

  1. SPI时序
    SPI协议中通常采用指令码+读写数据的模型,不同的指令会有不同的数据个数。这里以W25Q64芯片为例
  • 发送指令
    在CS信号起始后,第一个交换发送给从记的数据记为指令码,从机会有相应的指令集,根据所对应的指令进行响应。
  • 指定地址写
    在CS信号起始后,向CS指定的设备发送写指令,随后在指定地址下写入指定数据,SPI协议中同样有地址指针,每写一个数据,指针自增。每当发送完一帧数据时,"状态寄存器SR"的TXE标志位会被置1,表示传输完一帧。
  • 指定地址读
    在CS信号起始后,发送读指令,随后在指定地址下读取从机数据。每当接收完一帧数据时,"状态寄存器SR"的RXNE标志位会被置1,表示传输完一帧。

三、W25Qxx

W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器,常用于数据存储、字库存储和固件程序等。这里给出该芯片的框图

一整块存储空间,先划分为若干块的Block,每一块再划分为若干块的扇区Sector,每个扇区又可划分为Page。MCU通过SPI协议把指令和数据发送给从机控制逻辑,控制逻辑会自动操作内部电路。

四、Flash操作注意事项

写入操作时:

• 写入操作前,必须先进行写使能

• 每个数据位只能由1改写为0,不能由0改写为1

• 写入数据前必须先擦除,擦除后,所有数据位变为1

• 擦除必须按最小擦除单元进行

• 连续写入多字节时,最多写入一页的数据,超过页尾位置的数

据,会回到页首覆盖写入

• 写入操作结束后,芯片进入忙状态,不响应新的读写操作

读取操作时:

• 直接调用读取时序,无需使能,无需额外操作,没有页的限制,

读取操作结束后不会进入忙状态,但不能在忙状态时读取

相关推荐
大龄程序员狗哥3 小时前
第25篇:Q-Learning算法解析——强化学习中的经典“价值”学习(原理解析)
人工智能·学习·算法
南境十里·墨染春水3 小时前
linux学习进展 线程同步——互斥锁
java·linux·学习
balance_rui4 小时前
FreeRTOS
笔记·stm32
LCG元4 小时前
STM32实战案例:基于HC-SR04的超声波测距与倒车雷达系统
stm32·单片机·嵌入式硬件
nashane4 小时前
HarmonyOS 6学习:旋转动画优化与长截图性能调优——打造丝滑交互体验的深度实践
学习·交互·harmonyos·harmonyos 5
华清远见IT开放实验室5 小时前
智能手表完整项目实现,比赛求职双向加分,基于嵌入式大赛推荐开发板(STM32U5)
stm32·单片机·嵌入式硬件·学习·智能手表·嵌入式大赛
BackCatK Chen5 小时前
STM32保姆级入门教程|第8章:PT100高精度测温实战 + ADS1232驱动 + 24位ADC数据解析(功能超详细+CubeIDE手把手)
stm32·stm32cubeide·高精度测温·ads1232·pt100·24位adc·工业实战
危桥带雨5 小时前
FLASH理论基础
stm32·单片机·嵌入式硬件
炽烈小老头5 小时前
【 每天学习一点算法 2026/04/22】四数相加 II
学习·算法
uncle_ll5 小时前
LangChain基础学习笔记
笔记·学习·langchain·llm·rag