stm32驱动w25q程序(m127m128驱动不支持xp)

1、W25Q128是华邦公司推出的一款SPI接口的NORFlash芯片,其存储空间为128Mbit,相当于16M字节。W25Q128可以支持SPI的模式0和模式3,也就是CPOL=0/CPHA=0和CPOL=1/CPHA=1这两种模式。2、写入数据时,需要注意以下两个重要问题:①、Flash写入数据时和EEPROM类似,不能跨页写入,一次最多写入一页,W25Q128的一页是256字节。写入数据一旦跨页,必须在…

大家好,又见面了,我是你们的朋友全栈君。

1、W25Q128 是华邦公司推出的一款 SPI 接口的 NOR Flash 芯片,其存储空间为 128Mbit,相当于 16M 字节。
W25Q128 可以支持 SPI 的模式 0 和模式 3,也就是 CPOL=0/CPHA=0 和CPOL=1/CPHA=1 这两种模式。

2、写入数据时,需要注意以下两个重要问题:

①、Flash 写入数据时和 EEPROM 类似,不能跨页写入,一次最多写入一页,W25Q128的一页是 256 字节。
写入数据一旦跨页,必须在写满上一页的时候,等待 Flash 将数据从缓存搬移到非易失区,重新再次往里写。

②、Flash 有一个特点,就是可以将 1 写成 0,但是不能将 0 写成 1,要想将 0 写成 1,必
须进行擦除操作。因此通常要改写某部分空间的数据,必须首先进行一定物理存储空间擦除,
最小的擦除空间,通常称之为扇区,扇区擦除就是将这整个扇区每个字节全部变成 0xFF。

每款 Flash 的扇区大小不一定相同,W25Q128 的一个扇区是 4096 字节。为了提高擦除效率,
使用不同的擦除指令还可以一次性进行 32K(8 个扇区)、64K(16 个扇区)以及整片擦除。

3、W25Q128 内部有一个“SPI Command & Control Logic”,可以通过 SPI 接口向其发送指
令,从而执行相应操作。

指令的长度是不定的,有单字节的,也有多字节的,W25Qxx 一共
具有 34 个操作指令,在此只列举常用的 12 个。

这里写图片描述
————————————————
版权声明:本文为CSDN博主「ReCclay」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ReCclay/article/details/81272268


Read Manufacturer / Device ID(90h) 

stm32驱动w25q程序(m127m128驱动不支持xp)

 

Sector Erase (20h)

stm32驱动w25q程序(m127m128驱动不支持xp)stm32驱动w25q程序(m127m128驱动不支持xp)

Read Data (03h)

stm32驱动w25q程序(m127m128驱动不支持xp)

 


1、硬件连接
W25Q128 将 16M 的容量分为 256 个块(Block),每个块大小为 64K 字节,每个块又分为 16个扇区(Sector),每个扇区 4K 个字节。 W25Q128 的最少擦除单位为一个扇区,也就是每次必须擦除 4K 个字节。操作需要给 W25Q128 开辟一个至少 4K 的缓存区,对 SRAM 要求比较高,要求芯片必须有 4K 以上 SRAM 才能很好的操作。

这里写图片描述

W25Q128 的擦写周期多达 10W 次,具有 20 年的数据保存期限,支持电压为 2.7~3.6V,W25Q128 支持标准的 SPI,还支持双输出/四输出的 SPI,最大 SPI 时钟可以到 80Mhz(双输出时相当于 160Mhz,四输出时相当于 320M)。
1.1 硬件连接

与 STM32 的引脚连接如下:这里是使用SPI1配置。

这里写图片描述

STM32引脚    对应SPI功能
  PB14             片选CS
  PB3               时钟SCK
  PB4               MISO
  PB5               MOSI
STM32 的 SPI 功能很强大, SPI 时钟最多可以到 18Mhz,支持 DMA,可以配置为 SPI 协议或者 I2S 协议(仅大容量型号支持)。

1.2 SPI通讯的通讯时序

SPI协议定义了通讯的起始和停止信号、数据有效性、时钟同步等环节。

这里写图片描述
这是一个主机的通讯时序。NSS、SCK、MOSI 信号都由主机控制产生,而 MISO 的信号由从机产生,主机通过该信号线读取从机的数据。MOSI 与 MISO 的信号只在 NSS 为低电平的时候才有效,在 SCK的每个时钟周期 MOSI和 MISO传输一位数据。

1.通讯的起始和停止信号

在图中的标号1处,NSS 信号线由高变低,是 SPI 通讯的起始信号。NSS 是每个从机各自独占的信号线,当从机在自己的 NSS 线检测到起始信号后,就知道自己被主机选中了,开始准备与主机通讯。在图中的标号6处,NSS 信号由低变高,是 SPI 通讯的停止信号,表示本次通讯结束,从机的选中状态被取消。

2.数据有效性

SPI使用 MOSI及 MISO信号线来传输数据,使用 SCK信号线进行数据同步。MOSI及MISO 数据线在 SCK 的每个时钟周期传输一位数据,且数据输入输出是同时进行的。数据传输时,MSB 先行或 LSB 先行并没有作硬性规定,但要保证两个 SPI通讯设备之间使用同样的协定,一般都会采用图中的 MSB先行模式。

观察图中的2345标号处,MOSI及 MISO的数据在 SCK的上升沿期间变化输出,在SCK 的下降沿时被采样。即在 SCK 的下降沿时刻,MOSI 及 MISO 的数据有效,高电平时表示数据“1”,为低电平时表示数据“0”。在其它时刻,数据无效,MOSI及MISO为下一次表示数据做准备。SPI每次数据传输可以 8 位或 16 位为单位,每次传输的单位数不受限制。

1.3 STM32 SPI外设

STM32 的 SPI 外设可用作通讯的主机及从机,支持最高的 SCK 时钟频率为 f pclk /2(STM32F103型号的芯片默认 f pclk1 为 72MHz,f pclk2 为 36MHz),完全支持 SPI协议的 4种模式,数据帧长度可设置为 8 位或 16 位,可设置数据 MSB 先行或 LSB 先行。它还支持双线全双工(前面小节说明的都是这种模式)、双线单向以及单线模式。

SPI架构:

这里写图片描述
通讯引脚 :

SPI的所有硬件架构都从图中左侧 MOSI、MISO、SCK及 NSS线展开的。STM32芯片有多个SPI外设,它们的SPI通讯信号引出到不同的GPIO引脚上,使用时必须配置到这些指定的引脚。

2.软件配置

这里使用 STM32 的 SPI1 的主模式,SPI 相关的库函数和定义分布在文件 stm32f10x_spi.c 以及头文件 stm32f10x_spi.h 中。

2.1配置相关引脚的复用功能,使能 SPI1 时钟

第一步就要使能 SPI1 的时钟, SPI1 的时钟通过 APB2ENR 的第 12 位来设置。其次要设置 SPI1 的相关引脚为复用输出,这样才会连接到 SPI1 上否则这些 IO 口还是默认的状态,也就是标准输入输出口。这里我们使用的是 PB3、 4、 5 这 3 个(SCK、 MISO、 MOSI,
CS 使用软件管理方式),所以设置这三个为复用 IO。
————————————————
版权声明:本文为CSDN博主「小白来拓荒」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37141666/article/details/80738614

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/128024.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 可以对属性进行封装么_元器件封装类型

    可以对属性进行封装么_元器件封装类型1、RAII简介RAII(ResourceAcquisitionIsInitialization),也称为“资源获取就是初始化”,是C++语言的一种管理资源、避免泄漏的惯用法。C++标准保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终会被调用。简单的说,RAII的做法是使用一个对象,在其构造时获取资源,在对象生命期控制对资源的访问使之始终保持有效,最后在对象析构的时候释放资源。2、RAII分类根据RAII对资源的所有权可分为常性类型和变性类型,代表者分别是std::shared_p

    2025年5月30日
    3
  • java主要包括哪几种开发平台_成熟的java开发平台

    java主要包括哪几种开发平台_成熟的java开发平台1java都有哪些开发平台Java编程语言是流行的开发语言,也是IT行业非常火的就业方向,当然难度也是相对较大的。即使那些有计算机基础的小伙们参加java培训,不认真的学习,也会显得吃力。下面小编给大家说说java都有哪些开发平台,希望能对你有些帮助。Eclipse是最有名也最广泛使用的Java集成开发环境(IDE),允许开发者结合语言支持和其他功能到任何的默认包中,而且Eclipse市场有许多定…

    2022年8月23日
    8
  • TCP/IP TIME_WAIT状态原理 (转)

    TCP/IP TIME_WAIT状态原理 (转)

    2021年8月31日
    63
  • lcd1602按键显示不同数字_1602液晶显示屏

    lcd1602按键显示不同数字_1602液晶显示屏1.直接与Arduino相连2.通过转接板利用I2C的方式与Arduino相连1.直接与Arduino相连直接与Arduino相连的好处是不用现另外购买转接板,但这样造成的后果就是要大量占用A

    2022年8月4日
    5
  • 推荐几款好用的手机编程APP!

    推荐几款好用的手机编程APP!各位,很多人现在喜欢用手机写代码,今天小编就带大家盘点几款手机端编程软件。1C4droid【适用编程语言】C/C++【适用平台】Android2.2+【软件介绍】付费软件(国内免费,c4droid是款Android设备上的C/C++程序IDE(集成开发环境),默认以tcc(tinyccompiler)为编译器,可以选择安装gcc插件(20mb,只有root用户可以使用)。最新版为4.03(2013年7月7日更新)。贴吧已发布5.98版本,英文版及汉化版本,默认使用g++编译器,sd

    2022年5月23日
    102
  • java图书馆新地址_基于SSM的社区图书馆管理系统的设计与实现[通俗易懂]

    java图书馆新地址_基于SSM的社区图书馆管理系统的设计与实现[通俗易懂]好程序设计擅长JAVA(SSM,SSH,SPRINGBOOT)、PYTHON(DJANGO/FLASK)、THINKPHP、C#、安卓、微信小程序、MYSQL、SQLSERVER等,欢迎咨询在学习社区图书馆管理系统的设计与实现项目的时候,方便日后能及时查阅,在本平台中记录一下社区图书馆管理系统的设计与实现的开发流程。在学习时候的选用了SSM(MYECLIPSE),这个框架…

    2022年7月9日
    82

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号