SPI读写串行FLASH(W25Q64)

      最后更新:2022-04-01 07:56:13 手机定位技术交流文章

      文章目录

        • 1、SPI协议
          • 1、硬件连接
          • 2、通讯时序
          • 3、不同的通信模式
        • W25Q64:概览
        • 3. SPI 阅读和写作动力
        • 4、源码

      1、SPI协议

      摩托罗拉提出了SPI协议,这是一项通信协议(连续近距离接口)。这是连环外围设备接口。这是辆全时高速通讯巴士它通常在ADC、LCD和其他装置以及MCU之间使用。= 要求采用高通信率。这就是冰冷的对比。iic的速率较低,通信往往是低速装置之间的通信。

      1、硬件连接

      以下是共同的SPI硬件连接图:
      在这里插入图片描述
      相关引脚说明如下:

      • SS( 奴隶选择 ) : 选择设备的信号线, 也称为片段线 。NSS和CS是同一件事的其他名称。,NSS指出如下。当设备中不止一个 SPI 连接到 SPI 主机时,该装置的其他信号线是SCK、MOSI和MISO,它们都连接到同一个SPI总线。换句话说,不管设备产生多少设备,所有三条公共汽车线路都同时使用;每条线路都有来自该装置的自己的NSS信号线。光是这个信号线就取回主机的脚有多少来自设备,有多少被选用于信号线。I2C 协议使用一个设备地址来定位地址,在公共汽车上选择一个设备,并与它互动;另一方面, SPI 协议使用NSS 信号线来定位地址。当主机从设备中选择时, 将设备 NSS 的信号线设为低水平, 表明该部件是合法的, 然后主机开始与设备所选的 SPI 进行互动 。因此,SPI的连接从低水平的NSS线开始,最后是NSS线推升。 IC和IC的区别在于IC要求我们用手写来启动和停止信号。
      • SCK( 序列时钟) : 用于同步通信数据的时钟信号线 。它由通信主机创建,并决定通信速度。由不同装置支持的时钟的最大频率各有不同;例如,由STM32支持的SPI时钟的最大频率为fpclk/2。当两个装置互相连接的时候,低速通信设备限制了通信速度。
      • MOSI(主输出,奴隶投入):初级设备产出/来自初级设备投入的指导。主机的数据从信号线导出,然后由主机的数据读取,即连接数据指向主机和离机。
      • MISO(主输入,奴隶输出):设备输出的主要设备输入/制导。此信号行的数据由主机读取,数据从此信号线导出至主机。也就是说,这条线上的数据 预定给电脑到主机

      2、通讯时序

      标准 SPI 时间序列看起来是这样的:

      在这里插入图片描述
      以下是对本协定程序的说明:

      • 在一个地点,NSS信号线是SPI从高到低通信的初始信号。NSS是每架飞机独有的信号线,当它从自己的NSS信号线探测到初始信号时,显然它是由主机选择的,并准备与它互动。
      • 第六,NSS信号是SPI通信停止信号,表明通信已经结束,机器的选择状态被取消。
      • 以下是数据线和计时器,以及选定信号的信号配置。事实上,在地图上可以看到这一点。在运输数据方面,SPI使用MOSI和MISO信号线。数据通过 SCK 信号线同步 。在SCK,MOSI和MISO数据线路每个时钟周期发送一个数据包。数据输入输出同时进行数据传输时,无需首先使用最低运作安保标准或最低运作安保标准。但是,为了确保同一协议被两台SPI通讯设备使用,MSB或MSB是正确的答案。LSB或LSB都是正确的。

      下图说明从逻辑分析器和LSB第一线数据中收集MSB第一线数据与LSB第一线数据之间的差别:
      在这里插入图片描述
      下面为MSB先行:
      在这里插入图片描述

      • 图表中的标注2、3、4和5在SCK升级的整个期间,MOSI和MISO数据改变输出,并沿SCK下降情况进行抽样。就是说 SCK在路上的衰落MOSI 和 ISO 数据是正确的。 在高纬度时间, 数据是“ 1 ”, 而低纬度时间, 数据是“ 0 ” 。有时数据无效,MOSI和MISO为下一个数据表达式做准备。

      我也使用Logo Analyzer的数据来描述这种情况,数据从开始和结束的信号开始。当时钟信号降到某一阈值以下时,该工具即启动并准备进行通讯!
      在这里插入图片描述
      现在,关注我们的数据比特, 我们可以看到, 恒定线每8个数据变化 与我们的数据对应一个字节, 数据随着上升开始变化, 数据在下降时被读取, 这就是我们在通信过程中获得和接收的数据!
      在这里插入图片描述
      当然,在 SPI 下, 每个数据传输单位可以是 8 位或 16 位, 每个传输单位的数量无限。 这是我们必须准备的 。 我们只是以最传统的方法为例!

      3、不同的通信模式

      当然,SPI只是一种通信方法,有四种通信方式,关键区别在于CSK的时钟状况,即公共汽车是免费的,以及数据取样的时间。CPOL 时钟和时钟钟对配对的概念。

      • 这在CUBEMX设置页面上显而易见,
        在这里插入图片描述

      • 虽然SPI通讯装置闲置,但CDOL是SCK信号线的平面信号。也就是SCK条件 当NSS线高 和SPI通信开始时对不起,但我不知道。CPOL=0,SCK是低的,平的, 当CPOL=1,SCK是高的,平的。

      • CPHA的时钟阶段表示数据抽样的时间。根据CHP=0,MOSI或MISO数据线上的信号在SCK时钟线的“奇缘”取样。当CPH=1时,数据线在SCK时钟线的“偶边缘”取样。

      CPHA = 0,由于时钟两极变化,数据传输各异

      在这里插入图片描述
      我们不在乎是CPOL=0还是1 因为我们设定了时钟 CPHA=0如图所示,样本时间在SCK奇特边缘。。注意当当时钟等于零时,时钟的奇特边缘上升,而时钟的奇特边缘则沿着时钟的奇特边缘下降,时钟的奇特边缘等于1时。。因此,SPI的取样时间不受上下轴的制约。在SCK的奇特边缘 MOSI和MOISO数据线的有效信号保持恒定数据信号将在SCK奇特边缘进行取样。在非采样时刻,MOSI和MOISO的有效信号被交换。

      CPHA=1,由于时钟两极差异,数据传输各异

      在这里插入图片描述
      上图还显示,当CHP=1不受CPUL影响时,在SCK的平面周围对数据信号进行取样。

      我要把它输入逻辑分析器 这样我就能直观地想象这个过程

      在这里插入图片描述
      如下表所示,由于两个地点之间存在差异,人口价格指数将有四个模式:

      SPI模式 CPOL CPHA 空闲时SCK时钟 采样时刻
      0 0 0 低电平 奇数边沿
      1 0 1 低电平 偶数边沿
      2 1 0 高电平 奇数边沿
      3 1 1 高电平 偶数边沿

      STM32是微型控制器的例子。它基本上转移了所有SPI的能力然后,我完成了一些辅助工作。例如,我们并不总是需要它来阅读数据。你要做的就是写数据什么的相反,你只需要得到数据。这样的,Stm32 的硬件spi 已被修改以适应此功能 。下文简要叙述每项职能。
      在这里插入图片描述

      W25Q64:概览

      现在,我们学会了使用或无缘无故使用的东西, 这里有一个典型的SPI设备的例子, W25Q64 微处理器, 在一个标准的开发板上。

      这里可以看到FLASH芯片。FLSAH内存也称为闪存库。它有EPROM和EPROM,这是一种记忆,在停电期间不会丢失数据。然而,FLASH的储存能力往往大于EPROM,而EPROM是世界上最大的。其地位基本上已被取代。在存储控制上,EPROM和FLASH芯片之间的根本区别是,EPROM只能写在一块巨大的土地上。EEPROM也可能在单字节上擦擦。

      让我们看看标准的W25Q64指令

      在这里插入图片描述
      例如,根据上面的订单表,读取设备标识,发送了9FH,表示他需要设备标识:
      在这里插入图片描述
      当他返回时,他说:
      在这里插入图片描述
      主机 FLASH 芯片将第一个字节数据传输到“ 9F h ”, 当 FLASH 芯片获得数据时, 它被视为向它发布“ JDEC 命令” 的主机, 它回应 :将供应商身份(M7-M0)和芯片类型(ID15-0)发送给东道主。,主机会收到可核实的指令响应。

      3. SPI 阅读和写作动力

      让我们先看一看他的图表,如下表所示。
      在这里插入图片描述
      在立方体中,适当的安排如下:
      在这里插入图片描述
      我们会根据这里的示意图 构建一个构件
      在这里插入图片描述
      这就是我们基本设置的结束。 这里就是代码的来源。 让我们来看一下上面提到的 I. D. 读数。 这是视频是如何被选中的。 如果您使用软件, 您必须每次阅读或写作时都减少它, 然后举起它 。
      在这里插入图片描述
      下次我们检查闪存芯片是否繁忙, 我们特别关心他的号码0, 当这是"1"时, 它表明FLASH芯片是活跃的, 可能正在“清理”或“数据写入”内部存储矩阵。
      在这里插入图片描述
      之后,有一个读写功能。它很可能是一个清洁, 然后是一个地址, 然后是写下来的, 最后我们读了它, 在我们最初指定的地址。
      在这里插入图片描述
      接下来,我们将在主函数初始化中添加下面的代码。
      在这里插入图片描述
      将软件下载到开发委员会,其效果如下:
      在这里插入图片描述

      4、源码

      w25q64.c

      w25q64.h

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/21288.html

          热门文章

          文章分类