冯俊波 发表于 2018-10-7 14:13:26

ESP8266下载固件时候对于SPI flash倍速的选择问题

鉴于有的人英文不好,做一下翻译
英文翻译
Select the SPI fiash read mode (选择SPI flash的读写模式)QIO: Quad read and write mode(4倍读写模式)

[*]QOUT: Quad read mode(4倍读模式)
[*]DIO: Dual read and write mode(2倍读写模式)
[*]DOUT: Dual read mode (2倍读模式)
Check your flash datasheet and decided the correct mode that flash support(查看flash数据表,确定你的Flash支持那种模式)
Wifi performance might be better with higher flash r/w speed.(高速flash模式下WiFi性能可能会更好)


为了方便介绍,此处我用W25Q32芯片作为介绍,W25Q32采用的是SPI的通讯方式,
从W25Q32的数据手册之中我们可以看到以下内容:
W25Q32支持标准串行**接口(SPI),和高速的双倍/四倍输出,双倍/四倍用的引脚:串行时钟、片选端、串行数据I/O0(DI)、I/O1(DO)、I/O2(WP)和I/O3(HOLD)。SPI最高支持104MHz,双倍速是208MHz,四倍速是416MHz。这个传输速率比得上8位和16位的并行Flash存储器。连续读模式允许利用少至8-clocks指令去读取24-bit 地址来实现高效的存储访问,允许真正的XIP(execute in place)操作。
10.1.1 标准SPI指令
该w25q32是通过一个SPI兼容总线组成的四访问:串行时钟信号(CLK),芯片选择(/ CS),串行数据输入(DI)和串行数据输出(DO)。标准的SPI指令使用DI引脚输入串行写入指令,地址或数据到设备上的上升沿时钟。DO输出引脚是用来读取数据或状态的装置,在下降沿时钟。SPI总线操作模式0(0,0)和3(1,1)的支持。模式0和之间的主要差异模式3是时钟信号的正常状态时,SPI总线主备用数据没有被转移到串行闪存。对于模式0,时钟信号在的下降沿和上升沿,通常是低电平。对于模式3,时钟信号在的下降沿和上升沿,通常是高电平。

10.1.2 双倍SPI指令
   W25Q32使用”Fast Read Dual Output and Dual I/O(3B和BBhex)”指令支持双倍速SPI操作。这些指令允许数据以正常速度的两到三倍的在设备间传输。双倍读指令适用于 上电时快速加载代码到RAM 或者 直接从SPI总线上执行代码(XIP) 的情形。当使用双倍速SPI指令时,DI和DO引脚将充当 IO 0和IO 1.

10.1.3 四倍速SPI指令
   W25Q32使用”Fast Read Quad Output”、” Fast Read Quad I/O” 、”Word Read Quad I/O” 和 “Octal Word Quad I/O”指令(6B、EB、E7、E3)支持四倍速SPI操作。这些指令允许数据以正常速度的四到六倍的在设备间传输。四倍读指令显著提升连续和随机访问传输速度,这速度满足将代码快速加载到RAM或者直接在SPI总线上执行(XIP)。使用四倍速SPI指令时,DI和DO引脚将充当 IO 0和IO 1 ,WP和HOLD充当IO2 和IO3。四倍速SPI指令要求状态寄存器2中的QE功能位打开。


从ESP8266EX的数据手册之中我们可以看到以下内容:

3.1.1. 外置 Flash
ESP8266EX 使用外置 SPI Flash 存储用户程
建议按照如下所示来分配 SPI Flash 容量量。
• 不支持 OTA:最少支持 512 kB
• 可支持 OTA:最少支持 1 MB
⚠ 注意:
支持的 SPI 模式:Standard SPI、Dual SPI 和 Quad
式,否则下载的固件/程序可能无法正常工作。


从以上可以得出,要想ESP8266EX能够稳定正常的工作,正确的选择模式极为重要。


从ESP8266EX模块设计原理图层面上来做区分,
原理图如下:



通过原理图中R3 R4R5R6四个电阻来决定flash的模式,
当 R3=NC,R4=NC,R5=0R,R6=0R的时候是QIO 模式;
当 R3=0R,R4=0R,R5=NC,R6=NC的时候是DIO 模式;
对于自己手中不知道是什么模式的模块,如果有多的,拆一个铁盖开,用个万用表一打就知道,在此处我说一点个人使用的经验,目前市面上ESP8266生产的参加很多,因为有的厂家为了节约成本,可能会在flash的选择上面下功夫。多半就是减小容量或者选择质量差的,此处我不说明,自己拆开看,外壳很好拆,自己没事可以拆开看看。特别是新买的模块,可以选择拆开一个,然后分析模式和内存的大小,拆开之后还能使用,但是拆开了使用要远离干扰源。如果下载结束过后一直打印mode,注意以下几个导致原因

[*]1.下载固件超过内存,或者下载地址不正确
[*]2.下载器电源不稳定也会导致下载的时候丢包,尽量使用外接稳定的电源
[*]3.下载软件,下载波特率不能太低也不能太高





harvardx 发表于 2018-10-29 15:51:52

mark一下.
页: [1]
查看完整版本: ESP8266下载固件时候对于SPI flash倍速的选择问题