https://blog.csdn.net/qq_41126242/article/details/145050324

Nor Flash和Nand Flash

特性 Nor Flash Nand Flash
读写速度 高速,支持随机读写(类似于RAM) 较慢,按块顺序读写
写入速度 较慢 快速
擦除速度 较慢,擦除整个块(约5秒) 快速,擦除块(约4毫秒)
擦除次数 较少,一般为10000次左右 较多,可达100万次以上
可靠性 高,不易发生位反转 一般,易发生位反转,需使用ECC/DCC算法
容量 较小,通常在1MB到32MB之间 较大,通常在8GB到512GB之间
成本 较高 较低
接口 类似SRAM,有独立地址和数据总线 使用I/O总线串行访问
擦除方式 按字节擦除 按块擦除
应用领域 存储代码、关键数据、嵌入式系统等 存储大量数据,如固态硬盘、U盘等
执行方式 支持片上执行(XIP) 需要先将数据读入RAM再执行

硬件连线

Flash Pin MCU--FLash方向 作用
SCK M-->F 串行时钟, 确定Flash工作频率
CS M-->F 片选, 需要交互的时候打开(拉高),用完关闭(拉低)
MOSI M-->F MCU输出/串行输入, 有时候简称SI
MISO M<--F MCU输入/串行输出, 有时候简称SO

此外Flash还有VCC和GND自然不用说, 还有WP(写保护)和 HOLD/RESET(暂停/复位), 这两个一般就拉高处于可写、可用状态, 加起来就8个脚.
还有一种四线SPI的用法加快读的速度(Flash写比较慢也快不了), 叫做QSPI, 此时SI/SO/WP/HOLD都将作为双向IO口与MCU连接. 但多数情况单线就够了.

与Flash的交互通道: SPI的3个寄存器

SPI寄存器 MCU--Flash写入方向 作用
CR M-->F 控制寄存器1~2Byte, 控制Master模式, SPI使能能
DR M<->F 数据寄存器 1Byte, 双向的, 读写都通过这一个. 通常是一串数据包括 1B命令 + 3B地址 + nB数据.
SR M<--F 状态寄存器 1Byte, 读取Flash发来的状态, 主要是看Flash处理完上一条发过去的数据没有

Flash读/擦/写结构

Flash都是必须先擦再写的,否则就写不进去。英文里,为了与普通的写 Write区别, Flash的写叫做Program,所以普通的Write = Erase + Program.
Flash从小到大的结构单位依次是 Page < Sector < Block < Device. Page是Program的最小单位, Sector是Erase的=最小单位. 所以每次写操作是要先在内存中读取并合并至少一个Sector的新旧数据, 擦除并写入的.

标签: none 阅读量: 7

添加新评论