STM32驱动W25Q64---笔记

news2024/11/24 12:07:57

这次来分享最近经常用到的知识点----FLASH

初学者会疑惑,有了EEPROM为什么还要用W25Q64呢?(笔者一开始就百思不得其解)

答:

EEPROM和W25Q64都是用于数据存储的存储器,它们各有优缺点,需要根据具体应用场景选择适合的存储器。

EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种非易失性存储器,可以实现对少量数据的读写,例如存储一些配置参数、校准系数等。EEPROM的主要优点在于:

  1. 低功耗:EEPROM的进行数据读写时消耗的功耗比较低。

  2. 容量小:EEPROM的容量相对较小,一般在几千字节到几十KB之间。

  3. 随机访问:EEPROM可以随机访问任意地址的数据。

  4. 数据可靠性高:由于EEPROM是非易失性存储器,所以它的数据可以长时间保持,并且不会因为断电或者其它故障导致数据丢失。

而W25Q64是一种闪存存储器,它主要用于存储大量数据,例如程序代码、文件系统等。W25Q64的主要优点在于:

  1. 大容量:W25Q64的容量通常达到数MB甚至数十MB。

  2. 快速读写:W25Q64的读写速度比EEPROM快很多,能够满足更高速度的数据存储需求。

  3. 顺序读写:W25Q64的操作基于页面(page)而不是字节,所以它的读写速度比EEPROM更快。

因此,如果您需要存储大量数据或者实现更高速度的数据存取,那么W25Q64是一个更好的选择。反之,如果您只需要存储少量数据并且需要随机访问这些数据,那么EEPROM可能会更适合。

注:上面的问Chatgpt的回答。

下面来大致的认识一下它,我们看下 SPI 内部结构简易图,如下图所示:

SPI 接口一般使用 4 条线通信,事实上只需 3 条线也可以进行 SPI 通信(单向传输时),其中 3 条为 SPI 总线(MISO、MOSI、SCLK),一条为 SPI 片选信号线(CS)。它们的作用如下:

MISO:主设备输入/从设备输出引脚。主机从这条信号线读入数据,从机的数据由这条信号线输出到主机,即在这条线上数据的方向为从机到主机。


MOSI:主设备输出/从设备输入引脚。主机的数据从这条信号线输出,从机由这条信号线读入主机发送的数据,即这条线上数据的方向为主机到从机。


SCLK:时钟信号线,用于通信数据同步。它由主机产生,决定了通信的速率,不同的设备支持的最高时钟频率不一样,如 STM32 的 SPI 时钟频率最大为fpclk/2,两个设备之间通讯时,通讯速率受限于低速设备。


CS:从设备选择信号线,常称为片选信号线,也称为 NSS 或 CS。

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

SPI 主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。

与 I2C 总线相比它的缺点是:没有指定的流控制,没有应答机制确认是否接收到数据。

待续...

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

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

相关文章

chatgpt赋能python:Python的修改及其对SEO的影响

Python的修改及其对SEO的影响 介绍 Python是一种高级编程语言,以其简单易学和功能强大而闻名。它被广泛用于开发各种应用程序,从网站到机器学习和大数据分析。Python不断更新和改进,新版本带来了许多新功能和改进,这些修改对SEO…

如何读取带空格的字符串?

scanf()函数在读取字符时,识别到空格就会终止读取,那么如何读取带空格的字符串呢? 一、gets()(gets_s()) 从标准输入(stdin)(指的是键盘输入)读取字符,并将它们作为 C 字符串存储到…

1688详情 sign签名分析

本文仅供学习交流,只提供关键思路不会给出完整代码,严禁用于非法用途,若有侵权请联系我删除! 网站地址:aHR0cHM6Ly9kZXRhaWwuMTY4OC5jb20vb2ZmZXIvNzEzNDMzMDYyOTUzLmh0bWw 接口:aHR0cHM6Ly9oNWFwaS5tLjE…

软件工程学复习笔记

目录 软件工程学概述软件危机的典型表现、产生原因、消除途径软件的构成:程序、数据、文档软件工程的七点特性软件工程的七条基本原理软件工程方法:传统方法学,面向对象方法学软件的生命周期:三个时期,软件定义&#x…

MMPose学习笔记1

文章目录 摘要什么是人体姿态估计3D 姿态估计人体参数化模型下游任务2D姿态估计多人姿态估计:自顶向下方法基于回归的自顶向下方法基于热力图的自顶向下方法 多人姿态估计:自底向上方法单阶段方法基于Transformer的方法小结 3D姿态估计评估指标 Dense Po…

面向对象特征之一:封装和隐藏

为什么要引入封装性? ●我们程序设计追求“高内聚,低耦合” ➢高内聚:类的内部数据操作细节自己完成,不允许外部干涉; ➢低耦合:仅对外暴露少量的方法用于使用。 ●隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用&am…

ISIS路由渗透实验

1)拓扑 2)需求:ISIS全网互联互通 3)原因分析: 因为,L1/2 路由器(R4、R8)学习到L1类型路由信息会装进L2-LSP,在泛洪给其他区域的L2和L1/2路由器,所以&#x…

【socket】从计算机网络基础到socket编程——Windows Linux C语言 + Python实现(TCP+UDP)

一、部分基础知识1.1 计算机网络的体系结构1.11 互联网简介1.12 计算机网络的分类1.13 协议与网络的分层体系结构▶ 协议▶ 网络的分层体系结构 1.14 OSI 七层模型(重要)▶ OSI 模型的结构▶ OSI 模型各层的功能 1.15 TCP/IP 的体系结构(重要…

linux服务器彻底清除xmrig挖矿病毒

不想看前面的内容可直接进入第三点看解决方案。 一,事件起因 二,检查过程 三,解决方案 1,找到病毒文件 2 ,杀死病毒进程,删除病毒文件 3,查看linux服务器上的定时任务 4,最后&…

【MySQL新手到通关】第七章 聚合函数使用详解

文章目录 0. 前置1. 聚合函数介绍1.1 AVG 和 SUM 函数1.2 MIN 和 MAX 函数1.3 COUNT函数 2. GROUP BY2.1 基本使用 3. HAVING3.1 基本使用3.2 WHERE和HAVING的对比 0. 前置 为了方便测试,我们导入一些数据 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ------…

编程(39)----------多线程中的锁

假设一个这样的场景: 在多线程的代码中, 需要在不同的线程中对同一个变量进行操作. 那此时就会出现问题: 多线程是并发进行的, 也就是说代码运行的时候, 俩个线程会同时对一个变量进行操作, 这样就会涉及到多线程的安全问题: class Counter{public int count;public void add…

RPC核心原理(整体架构/调用过程)

Server: Provider ,暴露服务,服务提供方 Client: Consumer ,服务消费,调用远程服务 Registry:服务注册与发现 RPC的调用过程如下: 第一步:server会将他需要暴露的服务以及他的地址信息注册到Registry这一注册中心。 第二步:client通过注册…

【VScode】ESLint :warning Delete `CR` prettier/prettier

一. ESLint 作用 检查 Javascript 编程时的语法错误。 新建或修改文件时报错 原因 Windows系统 ,clone的代码会自动把换行符 LF转为回车符CRLF,这时本地的代码都是回车符。可在prettier.config.js中查看到 检查配置(ESLint中是…

linux(system V标准)信号量

目录: 1.什么是信号量 2.信号量的本质 1.什么是信号量 2.信号量的本质 什么是临界资源呢?? 凡是倍多个执行流同时访问的资源就是临界资源!!! 我们看一个问题,我们fork()之后创建一个子进程&a…

redis----缓存穿透、击穿、雪崩问题解决

缓存 缓存更新方式 这是决定在使用缓存时就该考虑的问题。 设置缓存数据的TTL,当缓存数据失效后,如果有系统要请求,则会查询数据库并插入缓存(被动更新) 不友好在各类会往mysql写入数据的系统中,植入更新…

360天御滑块

又来水文章?当然,闲着无聊,走过路过,不要错过,点进来多看看。 两种类型。滑块,文字点选。此案例就以网友投稿的滑块来说。 怎么说呢,名字好听,本次难点,js混淆&#xff…

图文并茂教你快速入门React系列02-state

State 在React中,什么是state? 在 React 中,随时间变化的数据被称为状态(state)。你可以向任何组件添加状态,并按需进行更新。 如何添加使用state? 点击获取教程代码关于此框架–More docs 使用 useSt…

记一次Redis版本新特性导致的主从切换故障

背景 最近一组业务redis数据不断增长需要扩容内存,而扩容内存则需要重启云主机,在按计划扩容升级执行主从切换时意外发生了数据丢失与master进入只读状态的故障,这里记录分享一下。 业务redis高可用架构 该组业务redis使用的是一主一从&am…

基于卷积神经网络和连接性时序分类的语音识别系统,含核心Python工程源代码(深度学习)个人可二次开发

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 特征提取2. 声学模型3. CTC 解码4. 语言模型 系统测试工程源代码下载其它资料下载 前言 本项目基于卷积神经网络和连接性时序分类方法,采用中文语音数据集进行训练,实现声音转录为中文拼…

Java枚举中定义属性

文章目录 1、复习枚举2、自定义属性3、自定义属性枚举类和常量的对比4、常用方法5、枚举自定义属性在开发中的应用:字典表6、补充:入参校验 刚接触枚举时的例子太简单,就一个Season枚举类,里面四个常量值,后来开发中看…