STM32——SPI/QSPI读写串行FLASH

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

SPI物理层结构特点

 主要用到4条线SS,SCK,MOSI,MISO

 SS:从设备选择信号线,常称为片选信号线,也称为NSS,CS

每个从设备都拥有独立的这一条SS信号线,本信号线独占主机的一个引脚,即有多少个从设备,就有多少条片选信号线,I2C协议中通过设备地址来寻址,选中总线上的某个设备并与其进行通讯

而SPI协议中没有设备地址,它使用SS信号线来寻址,当主机要选择从设备时,把该从设备的SS信号线设置为低电平,该从设备即被选中,即片选有效,接着主机开始与被选中的从设备进行SPI通讯。所以SPI通讯以SS线设置低电平位开始信号,以SS线被拉高作为结束信号

SCK线:时钟信号线,用于通讯数据同步,它由通讯主机产生,并决定了通讯的速率,不同的设备主持的最高时钟频率不一样,两个设备之间通讯时,通讯速率受限于低速设备

MOSI:主设备输出,从设备输入引脚,主机的数据从这条信号线输出,从机由这条信号线读入主机发送的数据,即这条线上的数据方向位主机到从机

MISO:主设备输入,从设备输出引脚,主机信号从这条信号线读入数据,从机的数据由这条信号线输出到主机,即再这条线上数据的方向为从机到主机

SPI的协议层

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

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

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

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

 主机产生的协议要满足从设备支持的工作模式,才能进行交互

时钟极性CPOL是指SPI通讯设备处于空闲时,SCK信号线的电平信号(即SPI通讯开始前,NSS线位高电平时,SCK的状态),CPOL=0时,SCK在空闲状态时为低电平,CPOL=1时,则相反

也就是说CPOL决定SCK在空闲状态是低电平还是高电平

时钟相位CPHA是指数据的采样的时刻,CPHA=0,MOSI或MISO数据线上的信号将会在SCK时钟线的“奇数边沿”被采样,当CPHA=1,数据线在SCK的偶数边沿被采样

也就是说CPHA决定是在奇数边沿采样,还是在偶数边沿采样

因此SPI由4种模式,主机与从机需要工作在相同的模式下才可以正常通讯,实际中采用较多的是模式0和模式3

SPI模式CPOLCPHA空闲时SCK时钟采样时刻
000低电平奇数边沿
101低电平偶数边沿
210高电平奇数边沿
311高电平偶数边沿

QSPI:SPI接口的拓展,比SPI应用更广泛,在SPI协议的基础上,增加了队列传输机制,推出了队列穿行外围接口协议(即QSPI协议),QSPI是一种专用的通信接口,连接单,双或四(条数据线),SPI Flash存储介质,STM32上将这种接口称为QUADSPI接口

 SPI内部框图

 

 具体内容查阅W25Q64手册

使用CubeMX配置SPI

首先要完成时钟和系统配置,之后配置SPI

 之后可以看到引脚已经自动配置好

 代码的外设初始化模块,与CubeMX中的配置是一致的

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值