• 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进行通讯了。

  • 相关阅读:
    4 Apr 18 软件开发目录 logging模块的使用 序列化(Json, Pickle) os模块
    3 Apr 18 内置函数 列表生成式与生成器表达式 模块的使用之import 模块的使用之from…import…
    2 Apr 18 三元表达式 函数递归 匿名函数 内置函数
    30 Mar 18 迭代器 生成器 面向过程的编程
    29 Mar 18 函数 有参、无参装饰器
    28 Mar 18 函数
    27 Mar 18 函数的参数
    26 Mar 18 函数介绍
    23 Mar 18 文件处理
    22 Mar 18 补充数据类型+字符编码+文件处理
  • 原文地址:https://www.cnblogs.com/beiyhs/p/12362190.html
Copyright © 2020-2023  润新知