SPIW25Q64(精华版)

article/2025/8/22 1:36:35

1. SPI总线

1.1 W25Q64

1.1 W25Q64简介

W25Q64 是一种具有SPI接口的FlASH存储器,具有32768个可编程页(Page=256B),2048个可擦除扇区(Sector=16*Page),128个可擦除块(Block=16*Sector),容量为128*16*16*256B=8MB(64bit),适用于存储声音、文本和数据(W25X64 数据手册 P1-2、W25Q64 数据手册 P5)。

1.1.2 FLASH 简介

FLASH 存储器即闪存存储器,它属于非易失性存储器。相对于 RAM 而言,它具有断电数据不丢失的特点,相对于ROM 而言它具有操作速度快的特点。市场上的 FLASH 存储器主要有 NOR 和 NAND 两大类(当然还有其他的), NOR 一般用于存储少量的代码,主要用在代码存储介质中,NAND 则是高存储密度数据的理想解决方案,适合于存储数据。FLASH的操作与 ROM 类似,主要有读、写和擦除。

1.1.3 W25Q64 管脚描述
根据 W25Q64 的 SPI 接口管脚描述, W25Q64 作为从设备时 DO(MISO)管脚下降沿输出数据, DIO(MOSI)管脚上升沿采集数据, 因此 SPI 时序模式可为模式 0(CPLO=0,CPHA=0)或模式 3(CPLO=1,CPHA=1)(25X64 数据手册 P3、 P4、 P6)。

1.2 SPI通讯原理

1.2.1 SPI 总线简介

SPI是由Motorola公司推出的一种串行外围设备接口,也是一种串行、同步、全双工的高速总线和通信协议, 采用主从模式架构,支持多从设备应用。在芯片管脚上只占用四根线,节省了芯片的管脚,同时为PCB的布局节省空间,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信接口,如 EEPROM、FLASH、AD 转换器等。

1.2.2 SPI 接口定义

(1)MOSI:主设备输出从设备输入引脚,作为主设备时发送数据,作为从设备时接收数据。
(2)MISO:主设备输入从设备输出引脚,作为主设备时接收数据,作为从设备时发送数据。
(3)SCK: 同步时钟引脚,主设备输出时钟,从设备输入时钟。
(4)NSS: 从设备使能引脚,由主设备控制(NSS的N表示低电平有效)。在点对点的通信中,SPI接口不需要进行寻址操作,在多个从器件的系统中,每个从器件需要独立的使能信号。

 

1.2.3 SPI 总线结构和工作方式

SPI是以主从方式工作的,这种模式通常有一个主设备和一个或多个从设备,各个设备必须使用 SPI 接口连接到SPI总线上。NSS 线是主设备选中从设备的片选线,只有被选中的从设备才能和主设备互相通信,这可以使总线上连接多个设备成为可能。MOSI、MISO、SCK 三根线完成数据的传输,是总线所有设备共享的(图 1)。

1.2.4 SPI 主从系统数据传输的原理

SPI的主从系统主要包含两个移位寄存器和一个主设备时钟发生器。由主设备通过将指定从设备的 NSS 引脚拉低启动一次通讯过程,主设备和从设备将需要发送的数据装入各自的移位寄存器,主设备在 SCK 引脚产生脉冲以实现数据交换,由主设备通过拉高从设备的NSS引脚结束本次通讯。

SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK时钟线存在的原因,由SCK提供时钟脉冲,SDI、SDO则基于此脉冲完成数据传输。因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出(全双工)。
SPI 还是一个数据交换协议:SPI通讯是通过数据交换完成的,主机给从机发送数据的同时,也接收到从机给它的数据。主机从从机读数据时,主机需要发一个无用的数据给从机(实际上是为了给 FLASH 提拱时钟,因为时钟只能由主机产生)。

 

      1 ) SSPBUF(Synchronous Serial Port Buffer)泛指SPI设备里面的内部缓冲区, 一般在物理上是以 FIFO 的形式, 保存传输过程中的临时数据;
    2)SSPSR(Synchronous Serial Port Register)泛指SPI设备里面的移位寄存器(Shift Regitser),它的作用是根据设置好的数据位宽(bit-width)把数据移入或者移出SSPBUF;
      3 )Controller泛指SPI设备里面的控制寄存器, 可以通过配置它们来设置SPI总线的传输模式。
    通常情况下, 我们只需要对上图所描述的四个管脚进行编程即可控制整个SPI 设备之间的数据通信:
    SPI 设备在进行通信的过程中, 主设备和从设备之间会产生一个数据链路回环(Data Loop), 就像上图所画的那样, 通过SDO和SDI管脚, SSPSR 控制数据移入移出SSPBUF, Controller 确定 SPI 总线的通信模式, SCK 传输时钟信号。

1.2.5 SPI 通信的数据模式

在SPI通讯中,SPI 接口的数据输出和数据输入(数据采样)的时间点是在一个时钟周期(SCK 周期)的不同跳变沿发生的。因此,SPI 时序中有时钟极性(CPOL)和时钟相位(CPHA)的概念。
时钟极性定义了总线空闲时时钟线(SCK)的电平状态,CPOL=0定义总线空闲时SCK=0,CPOL=1定义总线空闲时 SCK=1。时钟相位定义数据输入的采样时间点,CPHA=0定义数据采样的时间点在时钟周期的第一个跳变沿,则数据输出的时间是在时钟周期的第二个跳变沿,CPHA=1 定义数据采样的时间点在时钟周期的第二个跳变沿,则数据输出的时间是在时钟周期的第一个跳变沿。根据时钟极性和时钟相位的不同可以有四种组合,因此 SPI 的数据传输模式有四种。模式0:CPLO=0,CPHA=0;模式1:CPLO=0,CPHA=1;模式2:CPLO=1,CPHA=0;模式3:CPLO=1,CPHA=1。

STM32的SPI可以通过配置选择时钟极性和时钟相位,有四种组合,对应有四种数据传输模式。可以通过配置选择数据格式是高位在前还是低位在前,是8位数据帧还是16位数据帧格式。

 

1)空闲状态 SCLK 为低电平,第一个时钟边沿采样数据。
模式0:时钟线空闲为低电平,上升沿读取数据(00)
2)空闲状态 SCLK 为低电平,第二个时钟边沿采样数据。
模式1: 时钟线空闲为低电平,下降沿读取数据(01)
3)空闲状态 SCLK 为高电平,第一个时钟边沿采样数据。
模式2: 时钟线空闲为高电平,下降沿读取数据(10)
4)空闲状态 SCLK 为高电平,第二个时钟边沿采样数据。
模式3:时钟线空闲为高电平,上升沿读取数据(11)
注意: 模式 0 和模式 3 可兼容, 模式 1 和模式 2 可兼容 

1.3 STM32 的 SPI 接口介绍

1.3.1 SPI 接口简介

STM32的SPI是一个增强型的SPI 接口,在大容量和互联型产品上,SPI接口可以配置为支持SPI协议或I2S音频协议(SPI2和SPI3可以配置为I2S功能,SPI1无I2S功能)。SPI接口可以以全双工、半双工、单工方式工作,支持多主配置方式,支持硬件CRC校验等。

注:I2S(Inter-IC Sound)总线, 又称集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专责于音频设备之间的数据传输,广泛应用于各种多媒体系统。它采用了沿独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真,为用户节省了购买抵抗音频抖动的专业设备的费用。

1.3.2 SPI 接口框图分析

SPI接口主要由波特率发生器、 8/16的移位寄存器及其缓冲器、控制电路和相关寄存器组成(参考手册 P723, 此处只讨论SPI接口的SPI协议)。

1.3.4 SPI 接口的 NSS 管理

这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为“片选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。从设备的NSS引脚可以由主设备的一个标准I/O引脚来驱动。一旦被使能(SSOE位), NSS引脚也可以作为输出引脚,并在SPI处于主模式时拉低;此时,所有的SPI设备,如果它们的NSS引脚连接到主设备的NSS引脚,则会检测到低电平,如果它们被设置为NSS硬件模式,就会自动进入从设备状态。当配置为主设备、NSS配置为输入引脚(MSTR=1,SSOE=0)时,如果NSS被拉低,则这个SPI设备进入主模式失败状态:即MSTR位被自动清除,此设备进入从模式。

有2种NSS模式:
1)软件NSS模式:可以通过设置SPI_CR1寄存器的SSM位来使能这种模式。在这种模式下NSS引脚可以用作它用,而内部NSS信号电平可以通过写SPI_CR1的SSI位来驱动
2)硬件NSS模式,分两种情况:
─ NSS输出被使能:当STM32F10xxx工作为主SPI,并且NSS输出已经通过SPI_CR2寄存器的SSOE位使能,这时NSS引脚被拉低,所有NSS引脚与这个主SPI的NSS引脚相连并配置为硬件NSS的SPI设备,将自动变成从SPI设备。当一个SPI设备需要发送广播数据,它必须拉低NSS信号,以通知所有其它的设备它是主设备;如果它不能拉低NSS,这意味着总线上有另外一个主设备在通信,这时将产生一个硬件失败错误(Hard Fault)。
─ NSS输出被关闭:允许操作于多主环境。

总结:

  • NSS:从器件选择(片选)
  • SSI:
    1. 0->禁止软件从器件管理,就是说不能用程序来选择从机,相当于SPI总线上只能挂载一个从器件。
    2. 1->使能软件从器件管理,可以用代码来选择从器件,把NSS这个SPI的硬件引脚设置为普通IO使用。,这个时候SPI总线可以外接多个从器件,只需要把从机的CS接口接不通IO即可。

1.3.5 SPI 接口的工作模式

STM32 的 SPI 接口可以工作在全双工模式、 半双工模式、 单工模式以及相应的主模式和从模式等(此处只讨论全双工模式下的主模式)。

1.4 W25Q64编程

W25Q64的命令和时序分析(25X64 数据手册 P7-18、 W25Q64 数据手册 P17-48)。

 

1.4.1 SPIFLASH 编程

1. 编程方法:按照不同指令的操作时序编写不同功能的函数, 最终封装出主要的函数接口。

2.主要函数接口

(1)读 ID 函数
(2)页编程函数
(3)扇区擦除函数
(4)块擦除函数
(5)芯片擦除函数
(6)读数据函数
(7)掉电函数
.....

相关函数编程下期见

 


http://chatgpt.dhexx.cn/article/lL0M8sKK.shtml

相关文章

W25Q64简介(译)

W25Q64是华邦公司推出的大容量SPI FLASH产品,其容量为64Mb。该25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件。W25Q64将8M字节的容量分为128个块,每个块大小为64K字节,每个块又分为16个扇区,每个扇区4K个字节。W25Q…

W25Q64Flash芯片

W25Q64Flash芯片STM32操作 通讯方式:SPI通讯 大小:64是bit 换算字节是8M(Byte)(128块(Block),每块16个扇区(Sector),每个扇区4K字节(…

SPI通讯介绍 以及读写W25Q64(块,扇区,页的区别)

附工程百度网盘链接 链接:https://pan.baidu.com/s/1nCgNb5OyGpABAL657-gX0A?pwd6666 提取码:6666 介绍:摩托罗拉开发的一种通用数据总线, 四根通讯线SCK(串行时钟总线),MOSI(主机输出从机输入),MISO(主机输入从机输出),SS(从机选择)而且是同步全双…

W25Q64调试

简介 W25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件。W25Q64将8M字节的容量分为128个块,每个块大小为64K字节,每个块又分为16个扇区,每个扇区4K个字节。 引脚介绍 串行数据输入、输出和 IOs(DI、DO 和 IO0、IO1、…

软件SPI读写W25Q64硬件SPI读写W25Q64

目录 软件SPI读写W25Q64 MySPI W25Q64 主函数 硬件SPI读写W25Q64 软件SPI读写W25Q64 程序整体框架: SPI模块包含通信引脚封装,初始化,SPI三个基本时序单元(起始,终止,交换一个字节) W2…

W25Q64Flash芯片STM32操作

1、W25Q64Flash芯片介绍 通讯方式:SPI通讯 大小:8M(Byte) (128块(Block),每块64K字节,每块16个扇区(Sector),每个扇区4K字节&…

STM32学习笔记(十一)丨SPI通信(W25Q64芯片简介,使用SPI读写W25Q64存储器芯片)

本篇文章包含的内容 一、SPI的通信协议及其原理1.1 SPI简介1.2 SPI通信的硬件连接1.3 SPI的时序基本单元1.3.1 起始条件和终止条件1.3.2 交换字节(模式0,先移入,再移出)1.3.3 交换字节(模式1,先移出&#x…

看单片机原理图-外部FLASHW25Q64

系列文章目录 看单片机原理图-最小系统 看单片机原理图-最小系统电源电路 看单片机原理图-输入输出电路LED指示、按键输入 看单片机原理图-红外遥控、EEPROM 看单片机原理图-FLASH 文章目录 系列文章目录前言一、FLASH 前言 硬件:百问网100ASK_STM32F103_MINI开发…

W25Q64 Flash芯片原理与应用方案(含W25Q64中文数据手册)

W25Q64是华邦公司推出的大容量SPI FLASH产品,其容量为64Mb(8MB),应用较为广泛。 W25Q系列的器件在灵活性和性能方面远远超过普通的串行闪存器件。W25Q64将8M字节的容量分为128个块,每个块大小为64K字节,每个…

cortex_m3_stm32嵌入式学习笔记(二十一):SPI实验(通信总线)

SPI 是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola首先在其 MC68HCXX 系列处理器上定义的。 SPI 接口主要应用在 EEPROM, FLASH,实时时钟, AD 转换器,还有数字信号处理器和数…

STM-32:SPI通信协议/W25Q64简介—软件SPI读写W25Q64

目录 一、SPI简介1.1电路模式1.2通信原理1.3SPI时序基本单元1.3.1起始和终止1.3.2交换字节 二、W25Q642.1W25Q64简介2.2W25Q64硬件电路2.3W25Q64框图2.4Flash操作注意事项 三、软件SPI读写W25Q643.1接线图3.2程序代码 一、SPI简介 SPI是串行外设接口(Serial Periph…

STM32CubeMx之硬件SPI驱动W25Q64

STM32CubeMx之硬件SPI驱动W25Q64 1.SPI简介 SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚&a…

SPI读写串行FLASH(W25Q64)

文章目录 1、SPI协议1、硬件连接2、通讯时序3、不同的通信模式 2、W25Q64介绍3、SPI读写驱动编写4、源码 1、SPI协议 SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地…

STM32入门开发: 介绍SPI总线、读写W25Q64(FLASH)(硬件+模拟时序)

一、环境介绍 编程软件: keil5 操作系统: win10 MCU型号: STM32F103ZET6 STM32编程方式: 寄存器开发 (方便程序移植到其他单片机) SPI总线: STM32本身支持SPI硬件时序,本文示例代码里同时采用模拟时序和硬件时序两种方式读写W25Q64。 模拟时序更加方便移植到…

树莓派系统介绍

树莓派是一个微型计算机,和普通的电脑没有什么区别,只是体积更小,只有卡片大小,存储能力和计算能力会差一点,主要用于学习,实验所用。 是电脑就要安装操作系统,树莓派官方推荐了两种系统&#…

树莓派 zero linux,树莓派 zero基本调试

回家之前就从网上购买了一堆设备,回去也不能闲着,可以利用家里相对齐全的准备安装调试。结果人还没回来,东西先到了。 购买的核心装备是树莓派zero w,虽然已经知道它比家族大哥树莓派小不少,但拿到手里还是惊奇它的小巧…

树莓派c语言访问mariadb,树莓派之MariaDB

8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 安装MariaDB MariaDB是MySQL的一个分支 直接命令行敲入:1sudo apt-get install mariadb-server 即可完成安装。 一开始安装完成后不知道是需要初始化…

python树莓派_树莓派python

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 最初拿到树莓派的时候测试过,没成功,后来发现一张华丽丽的说明图,顿时醒悟了.. 记录下来,主要学习自 :htt…

树莓派硬件介绍及配件选择

目录 树莓派Datasheet下载地址: Raspberry 4B 外观图: 技术规格书: 性能介绍: 树莓派配件选用 电源的选用: 树莓派外壳选用: 内存卡/U盘选用 树莓派Datasheet下载地址: Raspberry Pi …

树莓派Pico开发版

Pico开发版有16个PWM通道非常适合用于舵机及电机的控制[1]。 单板机(4B)、微控制器(Pico),树莓派支持Micro Python和C编程[3]。Thony是Python的开发环境。 [1]【评测】树莓派Pico开发板详细评测,到底值不值? [2] Pico树莓派中文站。 [3]一…