| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> ESP32 硬件开发指北 -- 外接FLASH使用指北 -> 正文阅读 |
|
[嵌入式]ESP32 硬件开发指北 -- 外接FLASH使用指北 |
ESP32 硬件开发指北 ----外接FLASH权威指北硬件环境:
软件环境:
一、选型ESP32选型:??ESP32 将 External Flash 与 External SRAM 作为片外存储器。图1 列出了两个 CPU 的数据总线与指令总线中 的各段地址通过 Cache 与 MMU 所能访问的片外存储器。两个 CPU 通过 Cache 与 MMU 对片外存储器进行访 问时,Cache 将根据 MMU 中的设置把 CPU 的地址变换为 External Flash 与 External SRAM 的实地址。经过变换之后的实地址最大支持 16 MB 的 External Flash 与 8 MB 的 External SRAM。 片外存储器 -额外的补充:??片外存储器 对片外闪存和片外 SPI RAM 的访问通过 Cache 实现,并且由 MMU 管理。根据进程的 PID 以及运行该进程的 CPU,Cache MMU 可以实现不同的映射,做法类似于片上存储器 MMU。即,对于存储器的每个虚地址页,都 有对应寄存器详细说明该虚地址页应映射到哪一个实地址页。但管理片上存储器的 MMU 和 Cache MMU 之间 存在差异。首先,Cache MMU 具有固定的页面大小(片外闪存页大小为 64 KB,片外 RAM 页大小为 32 KB); 其次,Cache MMU 具有用于每个 PID 和处理器内核的显式映射表,不通过 MMU 配置项来控制访问权限。在下 文中,MMU 映射配置寄存器将被统称为“配置项”。这些寄存器只能由 PID 为 0 或 1 的进程访问;PID 为 2 到 7 的进程必须通过 PID 为 0 或 1 的进程来改变它们的 MMU 设置。 如上所述,MMU 配置项用于将对存储器虚地址页的访问映射到对存储器实地址页的访问。MMU 控制虚地址空间的五个区域,详见图2。地址范围 V Addr1 到 V Addr4 用于访问片外闪存,V AddrRAM 用于访问片外 RAM。注意 V Addr4 是 V Addr0 的子集。 ??总的来说ESP32选择时如果需要2MB以上的FLASH大小,我建议的是选择ESP32-D0WDV3/D0WD的型号主要是封装小的前提下还能保持双核的性能。 FLASH选型: FLASH选择时我们往往注意这几个问题就可以了。
工作电压:以W25Q系列为例子: 如果能直接找到其 DATASHEET 可以在封面上看到: ??红色框住的就是工作电压1.8V,蓝色就是其大小32M-bit约等于4MB的flash,绿色框的就是其工作模式支持双线、四线模式也就是QIO\DIO模式。 这里要提醒的是:ESP32支持3.3V或者1.8V的FLASH当使用1.8V的FLASH的时候应通过设置Strapping的电平来改变LDO的输出值。 如果你找不到他的FLASH手册,可以参考一下其型号代码来进行更具体的识别。 当然了这里还是以Winbond为例子: 这里再给一个我常用的FLASH的厂商型号代码: 可以看到的是每一家厂商编码代表意思都是差不多的主要差别就在于封装上,这一点多注意就好了。 容量:??在ESP32的开发过程中我们很少的选择很大的FLASH,类似于4MB以上都已经很大了,随着容量的增大FLASH的封装体积、价格也逐渐增大。 这一部分需要注意的是有些单位是 M-bit ,但是我们常用的时M-byte 对应的就是8倍 的关系这一点尤其需要注意。 工作模式:Flash 常用的工作模式有 4 种:DOUT/DIO/QOUT/QIO
用户如果需要使用 QIO 模式,则需要在选择 Flash 时确认该 Flash 是否支持 QIO 模式。 这里需要注意的是,QIO模式在40mhz工作的时候相当于两倍的DIO模式等价速度相当于普通SPI的4倍就是160MHZ. 封装体积:对于一些特殊场景下的flash使用体积显得尤为重要,这里实际给大家举两个例子: P25Q32H-UXH-IR 和 W25Q32JVSSIQ ??可以看到不同的FLASH 大小相同封装的方式有很大的差别,当然小的封装也是牺牲了烧写速度等来实现较小封装的,对于但是对于读取有很大要求的FLASH来说这些牺牲也是值得的。 二、Layout注意事项:??说来惭愧,自己在第一次画的时候竟然画错了,疯狂报错找不到FLASH,原因是这样的: ESP32对PAD的名命有些直接用用途来命名例如: ??这里的6个PAD就是其外置FLASH的连接引脚,我们知道QSPI下有四个数据脚分别对应SD_DATA_0 到SD_DATA_3 ??问题就出在这里:SD_DATA的名命方式其实是遵循SDIO协议的,并不是QSPI的对应引脚,最开始我直接就按编号顺序连接了,其中各个引脚对应的如图9所示,效果就是图10这样: 就是将SIO0——SD_DATA0,SIO1——SD_DATA1,这样一 一对应连接起来。 焊接上去烧录就会报错: Timed out waiting for packet content,后来我将FLASH拆下来,发现还报这个错误确定就是FLASH没有被检测到。 ??仔细阅读了ESP32的Datasheet后发现其实链接并不是按号码顺序的,我才想起来这可能是针对SDIO的标号,这里实在无法理解为什么这样设计引脚标号:
??但是我已经打板子了。。。这怎么办呢?四处查找找到了解决方案。 ??原文地址:ESP32-D0WD FLASH PROBLEM,在这里我找到了可以通过烧写efues来REMAP这些引脚,如果你和我一样,按顺序连接了FLASH的引脚,你可以通过这样来改变
??这样就实现了交换引脚,正常完成下载。 ??你以为这样就完成了吗?当然不是,下载完成后我想开启QIO模式怎么办? 三、ESP32到底如何开启QIO模式:首先!你要确认你的连接正确且FLASH支持QIO模式,打开IDF的设置。 ??将红框部分改为QIO模式,频率依照你的FLASH参数来改变,我这里选择了40MHZ。下边就是大小也是依照你的FLASH参数来改。 修改完后编译,如果没有报错那好恭喜你已经成功开启QIOmode,如果有报错别急继续往下看: ??qio_mode: Failed to set QIE bit, not enabling QIO mode,如果你的报错是这个,就说明你的ESP32光放并没有对你所选用的FLASH进行支持,当然你可以自己添加支持,具体如何添加可以参考这个:只看添加驱动部分 ??我在这里简单说一说如何添加,打开你FLASH的手册找两个寄存器的位置: ??这里说明你的FLASH生产商ID和设备ID,就是图中的 Manufacturer ID:0X85 FLASH ID:0X6016 找到后写入对应位置
Status Register: ??需要看的就是QE位是第几位,结合引用文章写入对应位置。 ??值得注意的是,许多厂商会存在双八位寄存器,或者单16位的情况,如果调用正确的函数将无法读取到正确的QE位信息,导致无法使用,如何识别自己厂商是什么情况的呢?就需要去看其对应的命令表: ??可以看到虽然Status Register一共有16位但是是分开访问的,所以我这里使用的是 read_status_8b_rdsr2,值得注意的是虽然他在途中是S9这也代表着他是下一个寄存器的第2位。 还有你修改后重新编译一下,你以为就好了吗?当然不是此时你会发现你的ESP32虽然开启了QSPI模式但是还会报错: ??竟然找不到分区表了。。。当然这个问题只会存在于被强制修改过QSPI引脚的ESP32,正常连接顺序是不会报错的。那这样怎么办呢? ??其实在上边的时候你就能发现少REMAP了一个脚 ——>WP。 ??它并不是在efues里面更改的而是在配置里面设定的,如下图所示。 按照更改后再次编译烧写,就可以成功。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/9 1:17:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |