STM32入门(二十六)----SPI—读写串行FLASH

本文深入探讨了STM32的SPI通信协议,包括SPI的物理层特点,如SS、SCK、MOSI和MISO信号线的作用,以及CPOL和CPHA的四种通讯模式。此外,介绍了STM32的SPI外设特性,如支持的四种模式、数据帧长度和工作频率。最后,讲解了如何初始化SPI,并以读写串行FLASH W25Q128为例,阐述了SPI在嵌入式系统中的应用。
摘要由CSDN通过智能技术生成

SPI协议

记得看SPI协议的PDF文档

SPI协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在ADC、LCD等设备与MCU间,要求通讯速率较高的场合。

由于是全双工的,所以比半双工的I2C快。
比I2C快,相对低速的传感器会用I2C,相对高速的传感器会用到SPI。

SPI物理层的特点

在这里插入图片描述
SS(Slave Select):从设备选择信号线,常称为片选信号线,也称为NSS、CS。

每个从设备都有独立的这一条SS信号线,本信号线独占主机的一个引脚,即有多少个从设备,就有多少条片选信号线。I2C协议中通过设备地址来寻址、选中总线上的某个设备并与其进行通讯;而SPI协议中没有设备地址,它使用SS信号线来寻址,当主机要选择从设备时,把该从设备的SS信号线设置为低电平,该从设备即被选中,即片选有效,接着主机开始与被选中的从设备进行SPI通讯。所以SPI通讯以SS线置低电平为开始信号,以SS线被拉高作为结束信号。

SCK (Serial Clock):时钟信号线,用于通讯数据同步。

它由通讯主机产生,决定了通讯的速率,不同的设备支持的最高时钟频率不一样,如STM32的SPI时钟频率最大为fpclk/2,两个设备之间通讯时,通讯速率受限于低速设备。

MOSI (Master Output, Slave Input):主设备输出/从设备输入引脚。

主机的数据从这条信号线输出,从机由这条信号线读入主机发送的数据,即这条线上数据的方向为主机到从机。

MISO(Master Input,,Slave Output):主设备输入/从设备输出引脚。

主机从这条信号线读入数据,从机的数据由这条信号线输出到主机,即在这条线上数据的方向为从机到主机。

SPI的协议层

SPI协议定义了通讯的起始和停止信号、数据有效性、时钟同步等环节。

SPI基本通讯过程

在这里插入图片描述
要注意是高位字节先行还是低位字节先行。

通讯的起始和停止信号

MSB(Most Significant Bit)最高有效位
LSB(Least Significant Bit)最低有效位

标号①处,NSS信号线由高变低,是SPI通讯的起始信号。NSS是每个从机各自独占的信号线,当从机检在自己的NSS线检测到起始信号后,就知道自己被主机选中了,开始准备与主机通讯。

在图中的标号⑥处,NSS信号由低变高,是SPI通讯的停止信号,表示本次通讯结束,从机的选中状态被取消。

数据有效性

SPI使用MOSI及MISO信号线来传输数据,使用SCK信号线进行数据同步。MOSI及MISO数据线在SCK的每个时钟周期传输一位数据,且数据输入输出是同时进行的。

CPOL/CPHA及通讯模式

CPOL( C

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值