SPI 串行Flash闪存W25Q128FV 的使用(STM32F407)_基础篇

         SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一 种同步串行接口技

术,是一种高速的,全双工,同步的通信总线。SPI接口没有指定的流控制,没有应答机制确认是否接收到数

据。通常有以下4条通讯线。 同I2C接口相比,SPI器件支持更高的时钟频率。

       时钟(SPI CLK, SCLK)

       片选(CS)

       主机输出、从机输入(MOSI)

       主机输入、从机输出(MISO)

       MOSI和MISO是数据线。MOSI将数据从主机发送到从机,MISO将数据从从机发送到主机。

数据传输

       主从设备之间通过SPI进行通讯,主机必须发送时钟信号,并通过使能CS信号选择从机,而且两者之

间时钟SCLK要特性要匹配。SPI中的特性指的就是时钟的极性Polarity和相位Phase。

最常见的有以下写法:

(1) CKPOL (Clock Polarity) = CPOL = POL = Polarity = (时钟)极性

(2) CKPHA (Clock Phase)  =  CPHA = PHA = Phase  = (时钟)相位

   SCK、SCLK、CLK指的是时钟脉冲, Edge指的是时钟脉冲的边沿,即时钟电平变化的时刻,即上升

沿(risingedge) 或者下降沿(falling edge)。

CPOL设置 

      CPOL可以软件设置为0或1,什么意思尼?我们知道当要有数据传输时才有CLK时钟脉冲输出,内么

没有CLK时钟输出时,MCU的CLK脚是个神马状态尼?这个是可以软件设定的:

    设 CPOL=0   效果是没有CLK时钟输出时MCU的CLK脚为低电平

    设  CPOL=1  效果是没有CLK时钟输出时MCU的CLK脚为高电平

    如下图:

                 

  

 CPHA设置

       数据相位CPHA说的是时钟的有效的时刻。在时钟的神马时刻去读写数据是有效的。我们知道一个脉冲

有2个边沿和中间保持区,那么数据采样是在第几个边沿(edge)是有效的就用到CPHA设置。于是乎就龟腚:

      设 CPHA=0   表示第1个边沿采集、下个沿移出数据。

      设 CPHA=1   表示第2个边沿采集、下个沿移出数据。

      结合上面CPOL的设置来说。

     当CPOL=0:  起始电平为低,那么第1沿个肯定是上升沿,然后保持高、接着第2个沿是下降沿、然后保持低,

                         再接着第3个沿又是上升沿,然后周而复始。

                         这样对于CPHA=0,采集用的第1沿是上升沿、移出数据用的第2沿是下降沿,龟腚为SPI的模式0

                                       CPHA=1,采集用的第2沿是下降沿、移出数据用的第3沿是上升沿,龟腚为SPI的模式1

                        可以看出SPI的模式0比模式1早一个相位(脉冲)。

     当CPOL=1:  起始电平为高,那么第1沿个肯定是下降沿,然后保持低、接着第2个沿是上升沿、然后保持高,

                         再接着第3个沿又是下降沿,然后周而复始。

                         这样对于CPHA=0,采集用的第1沿是下降沿、移出数据用的第2沿是上升沿,龟腚为SPI的模式2

                                       CPHA=1,采集用的第2沿是上升沿、移出数据用的第3沿是下降沿,龟腚为SPI的模式3

                        可以看出SPI的模式2比模式3早一个相位(脉冲)。

来个图说明下:

                                       

     再举个例子:

     以SPI模式0为例看下图,数据显示在MOSI和MISO线上。传输的开始和结束用绿色虚线表示,采样

边沿用橙色虚线表示,移位边沿用蓝色虚线表示。

 

       可以看出模式0  CPOL = 0,CPHA = 0:CLK空闲状态为 低电平,数据在B处上升沿采样,并在C处下降

沿移出。注意上图的采样和移出,说的是:

     主机MCU在MISO线发出数据,从机设备在MISO线采样和移出数据

     主机MCU在MOSI线采样和移出数据,从机设备在MOSI线发出数据

     所谓采样、移出并不是说删除数据,而应理解为读取可以看到在A、B处的MOSI、MISO数据都是处于持续

稳定的一个状态。SPI模式1、SPI模式2、SPI模式3的时序图以此类推。

     划重点:无论设置SPI模式0、1、2、3的哪一种,主从设备必须设为同一种模式。

     对于从设备也是MCU自然可以软件设置SPI模式,但对于像W25Q128FV这种内部没有处理器,脚位又少的

简单外设又怎么来设置SPI模式尼? 

     是这样滴,W25Q128FV通过芯片内部逻辑可以自动识别SPI模式0、3,模式1、2是不支持滴。

逻辑的判断条件是:

                            在/CS上升沿和下降沿时刻,CLK是低电平,判断为模式0;

                            在/CS上升沿和下降沿时刻,CLK是高电平,判断为模式3;

      这样我们在MCU设置好SPI模式0或3后,就可以直接和W25Q128FV进行通讯了。

原文地址:https://www.cnblogs.com/beiyhs/p/12362190.html