摘要不是所有的flash都是spi协议。 在本节中,您将学习使用spi协议传输数据的flash
SPI是摩托罗拉公司提出的通信协议,与IIC一样是板级协议,但比IIC速度快得多。
SPI是全双工通信
在SPI物理层特性SPI中,有SCK、MOSI、MISO、信号选择线SS这3条公共总线。
SPI协议使用SS信号线指定地址,主机选择从机后,将对应的SS信号线设置为0,SS被上拉,表示结束信号。
SCK时钟信号线源自本体,时钟频率为总线的一半、18M或36M
MOSI根据英文缩写,主输出从输入变成主输出端、从输入端。 MISO正好相反。 两条总线可以同时进行,也就是说全双工,可以同时发送和接收数据。
通过NSS信号线将(单选线)设为低电平,选择从站。
在SCK时钟的控制下,可以在上升沿或下降沿进行触发和采样,同时进行输入和输出。
何时触发和何时采样由时钟的相位决定(CPHA ),并且当CPHA=0时,在时钟的奇数边缘进行采样,并且在偶数边缘触发。 CPHA=1时,在时钟的偶数边缘进行采样,在奇数边缘触发。
经上共有以下四种模式
stm32 SPI功能框图stm32 SPI外围设备概述stm32 SPI外围设备可以用作通信的主设备或从设备,支持SCK时钟的PCLK1和PCLK2的双分频。 在四种完全支持SPI的模式下,数据帧长度可以设置为8位或16位,并且可以设置数据MSB或LSB先行(高位先行或低位先行)。
时钟控制逻辑波特率寄存器由CR寄存器的3位构成
在数据控制逻辑数据寄存器DR 16位中,要被发送或接收的数据是8位或16位,因此当使用8位模式时,DR寄存器的前8位不能被使用,其强制为0。 16为传输模式时,均可使用。 接收和发送都用移位寄存器工作。 SPI选择MSB或LSB配置,一旦选择高位比特超前,就可以发送DR的最高位以开始传送,相反从DR的地位开始传送。图中的发送缓冲区就是DR寄存器
SPI初始化结构体的说明
1、SPI的单向模式: CR1寄存器的位配置
2、SPI模式:选择主机还是从机使用,配置CR1寄存器。 如果是主机,则需要产生SCK信号的定时,如果是从机,则需要接收外来的SCK定时,总之需要时序信号是由主机产生的。
3、配置数据帧长: 8位或16位,也可以是CR1寄存器配置
4、设定时钟极性CPOL :刚开始的SCK时钟的电平状态。 CR1寄存器的构成
5、设置时钟相位CPHA :时钟相位为0时,在SCK奇数边缘进行采样,偶数边缘触发。 通信中无法变更。
5、设置芯片选择信号是软件还是硬件触发:配置CR1寄存器
6、波特率控制器,设置时钟分频系数:配置CR1寄存器
7、配置CR1寄存器,设置上位先行还是下位先行(MSB、LSB ) )
8、CRC检查:麻烦、不启用、不配置
简要介绍flash的存储特性W25Q128。 换算为128 mbit、16MB,将该16M大小的空间分成几个块,每个块分为几个扇区。
flash的存储特性: 1、写入数据前必须清除
2、擦除时将所有数据位复位为1
3、写入数据只能将1更改为0
4、闪存最小擦除单位为扇区,一擦除最少为一个扇区
其实,擦除是指改变了某个位置1,然后改变了位置1