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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • VC6的SDK:Microsoft Platform SDK February 2003下载地址「建议收藏」

    VC6的SDK:Microsoft Platform SDK February 2003下载地址「建议收藏」据说是最后一个支持VC6R的SDK,我在项目中出现如下错误:errorLNK2001:unresolvedexternalsymbol_CLSID_ConnectionManager明明包含了这些头文件,也链接了LIB。。。#include//启用、禁用网卡#pragmacomment(lib,”ole32.lib”)VC6使用WMI

    2022年6月4日
    130
  • 百度快照更新是什么意思啊_百度快照和百度推广的区别

    百度快照更新是什么意思啊_百度快照和百度推广的区别百度快照更新是什么意思?    最近发现有很多刚入SEO行业的新手对网站seo的技巧有很多的误区,比如网站快照不更新就代表网站被惩罚。关于这个观点我们先看看什么是百度快照?百度快照的作用是什么?我们有该如何让百度快照持续更新呢?        一、百度快照是什么?    快照即为WebCache,可以翻译为网页缓存,当搜索引擎派出蜘蛛去对网站进行索

    2022年9月28日
    2
  • 数据分析实战项目_Android项目汇报

    数据分析实战项目_Android项目汇报#QzsWanAndroid-[基于wanandroid.com开发的MVP+Retrofit2+RxJava2+okhttp3开发的AndroidAPP](https:/

    2022年8月2日
    8
  • 900万!!!!!!!!这也太强了吧!!!我的老天!!!!!!!!!!

    900万!!!!!!!!这也太强了吧!!!我的老天!!!!!!!!!!大家好,我是二哥呀!之前在送书的时候做了一个小调查,问题是:“你是怎么认识二哥的?”我以为从知乎上了解的多一些,没想到,CSDN上的最多,看来二哥还是在CSDN上更有影响力一些,这个结果多少让我感到有些意外,因为我最近在知乎上更新得更勤快一些。写这篇文章的时候,我去CSDN上看了一眼我的主页。访问量突破了900万!按照目前的增长速度来看,年底突破1000万访问量应该没啥大问题。另外还有一些数据我觉得也挺牛逼的:原创文章数量957篇;作者总榜第12名;作者周榜第

    2022年6月7日
    28
  • source insight3.5注册码_source insight3.5注册码

    source insight3.5注册码_source insight3.5注册码安装程序下载在官网上下载SourceInsight4.0的安装程序.30天的试用安装首次启动选择授权方式,这里选择第二个选项,30天试用。image.png点击下一步,输入名称、公司或组织名称、邮箱信息,申请30天的试用。输入完成后,点击下一步,直到安装完成。修改sourceinsight4.exe用16进制编辑器(sublimetext)打开sour…

    2022年10月4日
    2
  • java静态内部类和非静态内部类的区别_静态内部类有什么问题

    java静态内部类和非静态内部类的区别_静态内部类有什么问题一、非静态内部类:1、变量和方法不能声明为静态的。(类的编译顺序:外部类–静态方法或属性–内部类,如果内部类声明为静态的,造成编译顺序冲突。个人理解)2、实例化的时候需要依附在外部类上面。比如:B是A的非静态内部类,实例化B,则:A.Bb=newA().newB();3、内部类可以引用外部类的静态或者非静态属性或者方法。二、静态内部类:1、属性和方法可以声明为静态的或者非静态的…

    2022年10月11日
    3

发表回复

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

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