Flash芯片W25Q系列驱动注意事项以及跨页读写操作

一、硬件 

二、W25Q64简介与API函数 

1)

W25Q有很多系列,其区别就是存储容量不一样

以我现在使用的举例W25Q64

64指的是64Mbit,不是64M字节要区分清楚

64Mbit = 8Mbyte,所以总的容量能存储8MByte

2)

W25q64的存储分为块、扇区、页

一页:256Byte  一个扇区:16页 = 4096Byte  一块:16个扇区;总共是32块

3)写注意事项

Flash的写的有个特性跟EEPROM一样,就是它的一页是256个Byte,也就是在写入的时候,一次最多可以写入256个字节的数据,超过了需要自行在代码中处理,一次最多编程256字节,写超的话会对当前页的前面数据进行覆盖。

4)读

读有没有像写这样我没去研究过,我直接使用跟写一样的方法,一旦跨页进行判断处理

5)檫除注意事项

由图片可知,檫除最小单位是扇区檫除,不能单独檫除页,所以你在使用时要合理分配空间,将相同数据分配在同一个扇区,如果跨扇区你在檫除就比较麻烦,因为它不能以页檫除

综上就是我使用遇到值得注意的问题,至于驱动代码时序我没记录了,很多博主开源了很多 

下面是我在读写中做的跨页代码

#define PAGE_SIZE   256u//页空间256Byte
void WriteParamBlock(uint32_t pBlock,uint8_t *pData,uint16_t Len)
{
      uint16_t j,temp;
        
      int num = (pBlock%PAGE_SIZE)+Len;
       num = num - PAGE_SIZE;//是否需要“跨”页写
        
        if(num<1)    //当页可以写完
        {
            FlashSpiPageProgram(pBlock,pData,Len);
        }
        else //跨页
        {
            while(Len)
            {
                temp = PAGE_SIZE-(pBlock%PAGE_SIZE);//确定当页可写的数量,最大256字节
                if(Len>=temp)
                {
                    FlashSpiPageProgram(pBlock,pData,temp);
                    pData += temp;
                    Len -= temp;
                    pBlock += temp;
                }
                else if(Len<temp)
                {
                    FlashSpiPageProgram(pBlock,pData,Len);
                    pData += Len;
                    Len -= Len;
                    pBlock += Len;
                }
            }
        }    
}

void ReadParamBlock(uint32_t pBlock,uint8_t *pData,uint16_t Len)
{
    uint16_t j,temp;
        
      int num = (pBlock%PAGE_SIZE)+Len;
       num = num - PAGE_SIZE;//是否需要“跨”页读
        
        if(num<1)    //当页可以读取完
        {
            FlashSpiRead(pBlock,pData,Len);
            pData += Len;
        }
        else //跨页
        {
            while(Len)
            {
                temp = PAGE_SIZE-(pBlock%PAGE_SIZE);//确定当页可读的数量,最大256字节
                if(Len>=temp)
                {
                    FlashSpiRead(pBlock,pData,temp);//将此页读取完
                    pData += temp;
                    Len -= temp;
                    pBlock += temp;
                }
                else if(Len<temp)
                {
                    FlashSpiRead(pBlock,pData,Len);//将此页读取完
                    pData += Len;
                    Len -= Len;
                    pBlock += Len;
                }
            }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/273783.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

人类偏好导向:DPO技术重塑SDXL-1.0图像生成

引言 在AI领域&#xff0c;适应和理解人类偏好一直是技术发展的重要方向。斯坦福大学研究团队最近提出的Diffusion-DPO方法&#xff0c;旨在将这一理念应用于图像生成模型&#xff0c;特别是在文本到图像的转换领域。 Huggingface模型下载: https://huggingface.co/mhdang/ A…

windows搭建MySQL 8.25主从配置

1.本次搭建的版本 mysql-8.0.25-win-x64 2.在解压完成后的文件内并没有对应的my.ini的配置文件这个my.ini是需要的主配置文件需要自行创建。 注&#xff1a;安装路径及数据存放路径需根据实际安装情况进行修改&#xff08;其它配置信息可结合实际情况进行修改&#xff09; 3.在…

【Vue】响应式中数组的特殊处理

Vue 响应式中对数组的处理 前两节的内容&#xff1a; Vue 数据劫持 Vue 响应式初步 0. 为什么需要对数组特殊处理&#xff1f; 在响应式初步那一篇文章的最后&#xff0c;我们提到过&#xff0c;需要对数组进行特殊的处理&#xff0c;为什么&#xff1f; 如果仍然用我们之…

vue3(六)-基础入门之自定义组件与插槽、ref通信

一、全局组件 html: <div id"app"><mytemplace></mytemplace> </div>javascript: <script>const { createApp } Vueconst app createApp({})app.component(mytemplace, {template: <div><button>返回</button>…

Resnet

是什么样的原因导致更深的网络导致的训练效果更差呢&#xff1f; 梯度消失和梯度爆炸 随着网络层数的不断加深&#xff0c;梯度消失和梯度爆炸的现象会越来越明显&#xff0c; 梯度消失&#xff1a;假设每一层的误差梯度是一个小于1的数&#xff0c;那么在我们反向传播过程中…

<软考高项备考>《论文专题 - 26 整合管理(4) 》

6 过程5-监控项目工作 6.1 问题 4W1H过程1-制定项目章程做什么跟踪、审查和报告整体项目进展&#xff0c;以实现项目管理计划中确定的绩效目标的过程&#xff1b;作用&#xff1a;①让干系人了解项目的当前状态并认可为处理绩效问题而采取的行动;②通过成本和进度预测&#x…

Docker 高级网络 - 自定义网桥实现容器间通信

目录 一、容器间容通信 1.1、解释 1.2、网络相关操作指令 1.2.1、查看 docker 的网络列表 1.2.2、创建网络自定义桥 1.2.3、删除某一个网络 1.2.4、查看某一个网络细节 1.2.5、运行多个容器在指定的网络中 一、容器间容通信 1.1、解释 简单来讲就是&#xff1a;容器间通…

华为Auth-HTTP服务器任意文件读取漏洞

华为Auth-Http Server 1.0存在任意文件读取&#xff0c;攻击者可通过该漏洞读取任意文件。 1.漏洞级别 高危 2.漏洞搜索 fofa server"Huawei Auth-Http Server 1.0"3.漏洞复现 构造 GET /umweb/passwd HTTP/1.1 Host: User-Agent: Mozilla/5.0 (Macintosh; I…

APP开发详解:数字药店系统源码

数字药店系统的兴起&#xff0c;不仅为消费者提供了更加便捷的购药体验&#xff0c;也为药店管理和药品销售带来了全新的机遇。 一、明确系统的基本功能&#xff1a; 1.用户注册与登录 2.药品浏览与搜索 3.购物车与结算。 4.在线支付与订单管理 二、开发环境与技术栈选择 …

blackbox黑盒监控部署(k8s内)tensuns专用

一、前言 部署在k8s中需要用到deployment、configmap、service服务 二、部署 创建存放yaml的目录 mkdir /opt/blackbox-exporter && cd /opt/blackbox-exporter 编辑blackbox配置文件&#xff0c;使用configmap挂在这 vi configmap.yaml apiVersion: v1 kind: Confi…

c语言-表达式求值

目录 前言一、隐式类型转换1.1 整型提升 二、算术转换三、操作符的属性四、问题表达式总结 前言 表达式求值的顺序一部分由操作符的优先级和结合性决定。 有些表达式的操作数在求值的过程中可能需要转换为其他类型 一、隐式类型转换 隐式类型转换是在编译器自动进行的类型转换…

TYPE C 接口知识

1、Type C 概述 Type-C口有4对TX/RX分线&#xff0c;2对USBD/D-&#xff0c;一对SBU&#xff0c;2个CC&#xff0c;另外还有4个VBUS和4个地线。 当Type-C接口仅用作传输DP信号时&#xff0c;则可利用4对TX/RX&#xff0c;从而实现4Lane传输&#xff0c;这种模式称为DPonly模式…

手持机定制_手持终端_rfid手持终端设备开发解决方案

智物通讯PDA手持终端方案以联发科64位八核MT6771芯片为核心&#xff0c;配备Android 10系统&#xff0c;以提供更高的运行速度和更低的功耗。存储器方面&#xff0c;则有2GB LPDDR332GB eMMC&#xff0c;同时也可选择4GB64GB、8GB128GB的配置&#xff0c;以确保设备的顺畅运行。…

PYTHON基础:python-plotly模拟随机过程

python-plotly模拟掷骰子随机过程 虽然投掷骰子看起来是随机事件&#xff0c;但只要使用正确的算法进行模拟&#xff0c;实际上它可以被精确地预测和分析。在数学领域&#xff0c;人们常常使用概率论和统计学知识来解释各种随机事件的规律和特征。而在赌场等场合&#xff0c;骰…

【教程】将Python转为C语言并编译生成二进制文件

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 本教程以DGL版本的GCN为例&#xff0c;其他也相似。 1、安装cython、gcc&#xff1a; sudo apt install cython gcc -y2、安装DGL、PyTorch&#xff1a; pip3 install torch torchvision torchaudio pip insta…

电商数据分析-03-电商数据采集

参考 最最最全数据仓库建设指南&#xff0c;速速收藏&#xff01;&#xff01; 第1章 数据仓库概念 数据仓库规划 1.1 数仓搭建 我们这里所说的数据仓库&#xff0c;是基于大数据体系的&#xff0c;里面包含标签类目&#xff0c;区别于传统的数据仓库。下面我们来将这张图分解…

信息网络协议基础-IPv6协议

文章目录 概述为什么引入IP服务模型IPv4的可扩展性问题解决方法***CIDR(Classless Inter-Domain Routing, 无类别域间寻路)前缀汇聚***前缀最长匹配***NAT(网络地址转换)存在的问题解决方案路由表配置***局限性IPv6协议头标IPv6地址表示前缀类型单播地址链路局部地址(Link-Loca…

元道经纬相机信息化赋能光伏电站运维管理

近年来&#xff0c;我国光伏产业高速发展&#xff0c;尤其以分布式光伏发电项目增长迅速&#xff0c;为更好服务新能源发电&#xff0c;大力推广电能替代。与此同时&#xff0c;电力企业亟需改变落后的管理模式&#xff0c;借助信息化软件提升管理效率。 为了进一步提升光伏电…

SpringBoot3 Web开发

注&#xff1a;SpringBoot的Web开发能力&#xff0c;由SpringMVC提供。 0. WebMvcAutoConfiguration原理 1. 生效条件 AutoConfiguration(after { DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class,ValidationAutoConfiguration.class }) …

大创项目推荐 深度学习LSTM新冠数据预测

文章目录 0 前言1 课题简介2 预测算法2.1 Logistic回归模型2.2 基于动力学SEIR模型改进的SEITR模型2.3 LSTM神经网络模型 3 预测效果3.1 Logistic回归模型3.2 SEITR模型3.3 LSTM神经网络模型 4 结论5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 …