01
NOR Flash基础认知
什么是NOR Flash · NOR与NAND区别 · 浮栅晶体管结构 · SPI/Parallel接口
存储单元接口类型
02
硬件接口与引脚功能
SPI(CS/CLK/MOSI/MISO) · Parallel地址/数据/控制线 · 电源去耦 · W25Q64实战
SPI硬件设计
03
数据手册精读 (上)
器件概述 · 引脚配置 · Sector/Block/Page架构 · 指令集概览
手册存储架构
04
数据手册精读 (下)
时序图解读 · 状态寄存器 · 器件/唯一ID · 电气特性与功耗
时序寄存器
05
开发环境搭建
MCU选型(STM32) · IDE(Keil/IAR) · HAL/LL库 · GPIO模拟SPI vs 硬件SPI · 逻辑分析仪
环境调试
06
GPIO模拟SPI驱动 (上)
GPIO初始化 · 时序软件模拟(CPOL/CPHA) · 字节收发 · 示波器波形验证
模拟SPI波形
07
GPIO模拟SPI驱动 (下)
多字节读写封装 · CS优化 · 超时/错误处理 · 性能分析
封装优化
08
硬件SPI驱动开发
STM32 SPI外设初始化 · HAL库收发 · DMA传输 · 中断/轮询模式
硬件SPIDMA
09
基础读写操作实现
Read Data(0x03) · Fast Read(0x0B) · 连续读/随机读 · 性能测试
读操作指令
10
写使能与状态寄存器管理
Write Enable/Disable · 状态寄存器读写 · WIP忙等待 · 保护位BP/SRP
状态寄存器写保护
11
页编程 (Page Program) 实现
Page Program(0x02)时序 · 页缓冲区 · 跨页写策略 · 失败重试
页编程写操作
12
扇区擦除 (Sector Erase) 实现
Sector Erase(0x20) · 32KB/64KB Block Erase · Chip Erase · 擦除时间与功耗
擦除Block
13
写保护机制
Block Protect(BP) · 硬件WP#引脚 · OTP区域 · 安全寄存器锁定
保护OTP
14
驱动架构设计
分层设计(HAL/驱动/应用) · 接口抽象 · 配置结构体 · 错误码定义
架构抽象
15
驱动初始化流程
硬件初始化 · 参数配置 · 器件ID校验 · 状态机 · 失败处理
初始化状态机
16
读操作高级实现
多字节连续读优化 · Cache预读 · 超时处理 · 性能基准测试
读优化Cache
17
写操作高级实现
写缓冲区管理 · 写合并策略 · 磨损均衡初探 · 失败恢复
写优化磨损均衡
18
擦除操作高级实现
擦除进度查询 · Suspend/Resume · 优先级管理 · 性能优化
擦除暂停/恢复
19
坏块管理 (上)
NOR Flash坏块特性 · 检测方法(出厂/运行时) · BBT设计 · 替换策略
坏块BBT
20
坏块管理 (下)
坏块管理模块实现 · 运行时扫描 · 持久化存储 · 性能考量
实现持久化
21
驱动测试策略
单元测试框架(Ceedling/Unity) · Mock/桩 · 测试用例 · 自动化集成
测试单元测试
22
驱动调试技巧
日志系统(等级/格式化) · Assert · HardFault调试 · 逻辑分析仪数据分析
调试日志
23
性能优化 (上)
SPI时钟频率 · DMA与CPU负载均衡 · 循环展开/查表法 · 编译器优化
性能编译优化
24
性能优化 (下)
Cache一致性 · 指令预取 · 内存对齐 · Profiling工具
CacheProfiling
25
低功耗设计
睡眠模式Flash状态 · 唤醒恢复 · 动态频率调整 · 功耗测量
低功耗睡眠
26
多任务环境下的驱动设计
FreeRTOS集成 · 互斥锁/临界区 · 任务优先级 · 中断与任务同步
RTOS同步
27
驱动移植指南
MCU平台移植(STM32→GD32/AT32) · 引脚重映射 · 时序调整 · 移植测试清单
移植MCU
28
文件系统集成 (上)
LittleFS/FATFS简介 · 驱动接口适配(read/write/erase) · 配置挂载 · 文件读写示例
文件系统LittleFS
29
文件系统集成 (下)
磨损均衡机制 · 掉电保护/日志结构 · 性能测试 · 常见问题排查
掉电保护日志
30
实战项目:Bootloader设计
Bootloader架构 · Flash分区 · OTA固件升级 · 校验/回滚 · 项目总结
BootloaderOTA