一、SPI通信基本原理
如图,SPI采用一主多从的方式进行数据传输,其中SPI主机为控制器(例如STM32等),SPI从机为主机下的从机(例如存储器,传感器,无线传输等),除SS控制线从机单独各一条外,其他数据线均为共用一根,SS控制线低电平控制从机且只允许控制一个从机,其余SS为高电平状态。
其中主机通过MISO输入,从机通过MOSI输入(理解为M主S从),输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入,SCK为时钟输入,提供时钟源来进行高低电平信号的传输变化。
而SPI通信的基本原理是以移位寄存器为基础进行的,通过MOSI和MISO两根通信线将主机从机连接成循环,高电平发送,低电平接受,主机中的寄存器值移位到从机中的寄存器,从机同理。
二、W25Q64基本时序单元
SPI的起始条件触发:
起始条件:SS从高电平切换到低电平
终止条件:SS从低电平切换到高电平
交换1个字节:
设置多模式是为了提高模块适配性和兼容性应对不同状况。(其中CPOL为时钟电平,CPHA为时钟相位)
模式0:
模式1:
模式2:
模式3:
三,基于W25Q64实现SPI通信协议
3.1W25Q64简介
W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器常应用于数据存储、字库存储、固件程序存储等场景。
存储介质: Nor Flash(闪存)
时钟频率:80MHz/160MHz (Dual SPI)/320MHz (Quad SPI)
引脚说明:
VCC,GND:电源(2.7~3.6V)
CS(SS):SPI片选
CLK(SCK):SPI时钟
DI(MOSI):SPI主机输出从机输入
DO(MISO):SPI主机输入从机输出
WP:写保护
HOLD:数据保持(在发生中断的时候,通过对该引脚置低电平使芯片保持原来总线的状态)
在不需要使用WP,HOLD时将其置位VCC即可。
W25Q64框图: