STM32学习笔记(11_2)- W25Q64简介和工作原理

无人问津也好,技不如人也罢,都应静下心来,去做该做的事。

最近在学STM32,所以也开贴记录一下主要内容,省的过目即忘。视频教程为江科大(改名江协科技),网站jiangxiekeji.com

本期学习另一个通信协议SPI,和I2C差不多,都是实现主控芯片和各种外挂芯片之间的数据交流。学习流程也是一样,先学习SPI协议的软硬件规定。先用软件模拟的SPl,实现读写这个W25Q64 Flash存储器,之后再学习STM32中的SPI外设,再用硬件SPI实现一样的功能。

W25Q64是一个flash存储器芯片,内部可存8M,并且掉电不丢失。

I2C可以在消耗最低硬件资源的情况下,实现最多的功能,但是时序复杂,通信速度慢(标准模式下100KHz)。高位先行,只有在SCL高电平时才会读取SDA的电平。

SPI传输速度快,最大传输速率取决于芯片厂商的设计,比如W25Q64,手册里写的SPI时钟频率,最大可达80MHz;其次设计简单,没有I2C那么复杂;最后,硬件开销比较大,占用的通信线多。高位先行,数据位的输入和输出都是在SCK的上升沿或下降沿进行的。

在SPI中通常采用指令码加读写数据的模型,即SPI的通信流程是起始后+第一个字节(指令码里面的指令)+读/写指令。在SPI从机的芯片手册上,都会定义好对应的指令集。

本期主要介绍W25Q64

W25Q64简介

W25Qxx的硬件电路和底层驱动文件都是一样,只是容量大小区别。

W25Q64硬件电路

3.3V供电,CS左边有/或上面有个横线表示低电平有效,

WP接低电平会保护住芯片,不让写。

括号里的IO0、IO1表示SPI双重模式下这两个引脚的作用。

原理图上把HOLD和WP引脚直接接到VCC,表示不用这两个引脚的功能。

 W25Q64框图

因为内部有8M的空间,为了易于管理,就进行分区。整个地址空间从0x00 00 00到0x7F FF FF,在整个地址空间里以64KB为一个基本单元,划分为若干块Block,并从前往后分为块0、块1、块2....块127。然后对每一块进行以4KB为一个基本单元的划分Sector(扇区),每一块里又分为扇区0、1...直到扇区15。当然我们写程序时,会对扇区再进行一个划分,也就是页(Page),页的大小是256个字节,所以一个扇区又可分为16页。右边的框图中每一行就是一页,在一页中的地址的变化范围是0x xx xx 00到0x xx xx FF。

 Flash操作注意事项

读取一般会比较快;写入的步骤多,所以速度会慢一点。

因为Flash数据位只能1改写为0,所以在写入前必须擦除(即把数据位都变为1).

在Flash中,0xFF代表空白,而不是0x00。

擦除时可选择整个Flash擦除或按块擦除或按扇区擦除,最小的擦除单元是一个扇区(4KB或4096个字节)。比如想改动一个字节的数据,只能先把同一个扇区的其他数据都读出去,然后整个扇区擦除,再把改动的一个字节和同个扇区的其他数据写进去。

一个写入时序,最多只能写一页的数据,即256字节。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是ECMAScript

ECMAScript (缩写为ES) 是一种由 Ecma 国际组织标准化的脚本语言。它最初是为了在网页浏览器中提供动态交互功能而设计的,现在已经广泛应用于客户端和服务器端开发等各种领域。 ECMAScript 定义了语法、类型、语句、关键字和操作符等基本元素,还提供了许…

Golang Gin框架

1、这篇文章我们简要讨论一些Gin框架 主要是给大家一个基本概念 1、Gin主要是分为路由和中间件部分。 Gin底层使用的是net/http的逻辑,net/http主要是说,当来一个网络请求时,go func开启另一个协程去处理后续(类似epoll)。 然后主协程持续…

蓝桥杯物联网竞赛_STM32L071_15_ADC/脉冲模块

ADC模块用的是RP1不用多说了,主要是脉冲模块,这个模块没考过 这个脉冲模块放出脉冲,主要能用TIM捕获到这个脉冲的高电平持续时间即可 CubMx配置: 脉冲模块的引脚与PB0相连,所以用PB0读取上升沿记的数和下降沿记的数&am…

Day29|回溯算法part05:491.递增子序列、46.全排列、 47.全排列 II

491. 递增子序列 leetcode上本题叫做非递减子序列&#xff0c;点名序列存在重复元素的情况。 class Solution {private List<Integer> path new ArrayList<>();private List<List<Integer>> res new ArrayList<>();public List<List<I…

openshift和k8s的差别

OpenShift 是一种基于 Kubernetes 的完整的容器应用平台&#xff0c;支持多种自动化功能&#xff0c;如自动升级、自动扩展、负载均衡、监控和日志记录等。 相比之下&#xff0c;Kubernetes 只是一个容器编排和编排平台&#xff0c;它为容器化应用程序提供自动化部署、扩展、故…

C语言——字符函数和字符串函数(下)

引言 在上一篇中&#xff0c;我们介绍了字符函数和一些字符串函数&#xff0c;在这一篇章中&#xff0c;我们会继续学习字符串函数&#xff0c;那我们现在就开始学习吧&#xff01;&#xff01;&#xff01; 字符串函数 strncpy 1.strncpy的用法 strncpy是一个在C语言中常用…

炫我科技:云渲染领域的佼佼者

随着数字化时代的来临&#xff0c;云渲染技术正逐渐成为影视、游戏、动画等创意产业的重要支柱。在这一领域中&#xff0c;炫我科技凭借其卓越的技术实力、优质的服务以及不断创新的精神&#xff0c;已然成为了云渲染行业的佼佼者。 炫我科技自成立之初&#xff0c;便以打造高…

全排列问题(回溯算法和深搜)

题目&#xff1a;P1706 全排列问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<bits/stdc.h> using namespace std;int n,pd[110];//用来标记数字是否被使用过 int a[10]; void print(){for(int i1;i<n;i) cout<<setw(5)<<a[i];cout<<…

tkinter实现通用对账文件解析软件

软件需求 和银行等金融机构合作过程中&#xff0c;经常会有还款计划、放款文件等定时推送的文件&#xff0c;以常见的分隔符进行分隔开&#xff0c;为了在系统出现问题时&#xff0c;快速查找异常数据&#xff0c;写了一个小工具解析这些文件并写入到excel中。 软件功能 将常…

Elasticsearch-桶聚合查询详解

前言 在之前我们详细面熟了es的查询用法&#xff0c;但是es还拥有强大的聚合查询功能&#xff0c;可以得到类似分组&#xff0c;直方图&#xff0c;折线图等数据组合。类似SQL的SUM、AVG、COUNT、GROUP BY Elasticsearch-02-es的restapi使用 概念 1&#xff1a;ES聚合查询流…

是什麼讓WhatsApp行銷如此有效?

還記得在幾年前&#xff0c;WhatsAPP還是個用作於溝通的聊天工具。 但如今&#xff0c;它已轉變為強大的行銷管道&#xff0c;在全球擁有超過20億活躍使用者&#xff0c;為企業以直接、個人化和高度參與的方式與受眾建立聯繫提供了巨大的潛力。 WhatsApp 行銷和電子郵件行銷的…

Maven入门指南:构建与管理Java项目的利器

引言 在Java开发领域&#xff0c;项目构建和管理是一个至关重要的环节。随着项目规模和复杂度的不断增加&#xff0c;有效地管理项目的依赖、构建过程以及部署流程变得尤为关键。在这样的背景下&#xff0c;Apache Maven作为一款优秀的项目管理工具应运而生&#xff0c;成为了…

ChatGPT智能辅助:让学术论文写作更从容自如

ChatGPT无限次数:点击直达 html ChatGPT智能辅助&#xff1a;让学术论文写作更从容自如 引言 学术论文写作一直是许多研究者和学生头疼的问题。无论是构思文章框架、寻找合适的文献资料&#xff0c;还是整合思路、撰写论文正文&#xff0c;都是考验耐心与专业知识的过程。…

浅谈HTTP

浅谈HTTP 要通过netty实现HTTP服务器(或者客户端)&#xff0c;首先你要了解HTTP协议。 HTTP在客户端 - 服务器计算模型中用作请求 - 响应协议。 例如&#xff0c;web浏览器可以是客户端&#xff0c;并且在托管网站的计算机上运行的应用程序可以是服务器。 客户端向服务器提交…

Vue ElementPlus Input 输入框

Input 输入框 通过鼠标或键盘输入字符 input 为受控组件&#xff0c;它总会显示 Vue 绑定值。 通常情况下&#xff0c;应当处理 input 事件&#xff0c;并更新组件的绑定值&#xff08;或使用v-model&#xff09;。否则&#xff0c;输入框内显示的值将不会改变&#xff0c;不支…

异构加速GPU服务器设计方案:904-全国产化异构加速GPU服务器

全国产化异构加速GPU服务器 一、产品介绍 X7340H0是中科可控基于HYGON系列处理器开发的一款全新高端2U双路GPU服务器。X7340H0采用优异的可扩展架构设计&#xff0c;支持高密度扩展GPU加速卡&#xff0c;为深度学习推理场景提供更加安全可靠、高性价比的解决方案。 性能卓越 ●…

全志A40i android7.1 移植wifi驱动的一般流程

一&#xff0c;问题分析 一般情况下移植一款模组&#xff0c;会涉及到驱动&#xff0c;firmware, hal层&#xff0c;方案端的适配。 下面以RTL8723ds为例详细列出移植的通用步骤。 二&#xff0c;移植步骤 1. 移植Wi-Fi驱动 从RTL原厂或者已经支持的其他把内核版本中获取驱动…

C++中string容器的字符串操作

目录 1.c_str() 返回C常量字符串 2.date() 返回C常量字符串 3.substr() 构造子串 4.find() 正向查找&#xff08;查找失败返回npos&#xff09; 5.rfind() 逆向查找&#xff08;查找失败返回npos&#xff09; 6.find_first_of() 正向查找匹配的字符 7.find_last_of() 逆向…

HTML面试题:get和post的区别

get和post都是HTTP中的两种请求方式 区别一&#xff0c;参数位置&#xff1a;GET请求把参数包含在URL中&#xff0c;POST将参数包含在请求体request body中。 区别二&#xff0c;回退&#xff1a;GET在浏览器回退时是无害的&#xff0c;而POST会再次提交请求。 区别三&#…

经典文献阅读之--LOG-LIO(高效局部几何信息估计的激光雷达惯性里程计)

0. 简介 局部几何信息即法线和点分布在基于激光雷达的同时定位与地图构建&#xff08;SLAM&#xff09;中是至关重要&#xff0c;因为它为数据关联提供了约束&#xff0c;进一步确定了优化方向&#xff0c;最终影响姿态的准确性。然而即使在使用KD树或体素图的辅助下&#xff…