外部SPI Flash
# 简介
我们可以通过标准的SPI接口和QSPI接口来外挂flash。区别如下
1. 使用标准SPI接口外挂flash,需要自己实现flash驱动,和自己移植文件系统
1. 使用QSPI接口外挂flash,不需要自己实现flash驱动,也不需要移植文件系统 。通过mount接口挂载文件系统后,可以直接通过文件系统接口访问外部flash
# QSPI外挂flash
QSPI有2种管脚定义, 电压不同,选择flash型号需要考虑供电电压
1. 通过LCD复用的QSPI (电压域VLCD, 默认关闭,电压范围1.6125V~3.2V)
2. 通过GPIO复用的QSPI (V_GLOBAL_1V8) (仅722UG支持)
# QSPI的库由底层core实现,相关API接口如下:
|API接口| 描述|
| --- | --- |
|io.mount(flashType[,path][,size][,offset][,clkDiv])| 挂载文件系统分区|
|io.unmount(flashType[,path][,size][,offset][,clkDiv])|卸载文件系统分区|
|io.format(flashType[,path][,size][,offset][,clkDiv])|格式化文件系统分区|
> 详细的API介绍见[LuatOS-Air core API](https://doc.openluat.com/wiki/21?wiki_page_id=2248
# 常见问题
## 1. SPI外置FLASH有demo吗 最大支持多少?
qspi外挂flash参考:demo/qspi 目前有测试过最大的是 16MByte 的 qspi,超过16M不支持,是硬件限制的(QSPI地址只有24位)
标准spi外挂flash参考:demo/spiFlash,对flash容量没限制,需要自己实现驱动
## 2. 外挂flash支持nand还是nor flash?
qspi仅支持nor flash
标准spi支持nand和nor flash,完全由自己在脚本中写驱动来控制
## 3. 用demo测试qspi挂载成功,操作文件失败

先格式化一下,第一次需要格式化一下,之后就不用了

# 硬件设计
见硬件设计指南 [SPI接口 章节](https://hmi.wiki.luatos.com/doc/65042949/e6zPC3k9/3t5hqI1A)
见硬件设计指南 [QSPI接口 章节](https://hmi.wiki.luatos.com/doc/65042949/e6zPC3k9/9Zjm3eQ4)