idf会自己找到这个flash容量吗?不需要我再去手动配置SPI挂载这个FLASH吧?

这个板子应该就只有16MB的外部flash吧?我意思是idf会自己找到这个16MB 不需要我再去手动配置SPI挂载这个FLASH吧?

在烧写时 idf 是会自动检测spi flash容量,如果在menuconfig中指定了容量,那么就会使用按照配置的来;也可以在运行时覆盖之前配置的flash容量。但是如果你要将flash多余的空间作为存储设备使用,那么除了需要配置分区表,还需要将配置文件系统。

参考阅读:

  1. 配置flash: https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32s3/api-guides/flash_psram_config.html?highlight=config_esptoolpy_flashsize#configure-the-flash
  2. 文件系统: https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32s3/api-reference/storage/fatfs.html
  3. 配置分区表: https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32s3/api-guides/partition-tables.html
1 个赞

但是我在例程里没有找到在配置文件系统的时候是配置的内部flash还是外部flash?分区表配置到外置flash就会默认用外置的flash初始化文件系统么?然后外置flash一定要配置文件系统,直接写入不可以么?

esp32中所谓的芯片内置flash其实就是芯片中集成了flash而已,也就是还是相对于芯片来说属于外部的flash。 Mio的芯片是ESP32-S3R8,我们外挂了一颗flash芯片,使用时和所谓的内置flash本质上是一样。

如果你在芯片本身就集成了flash(比如ESP32-S3FN8)的情况下,再外挂了一颗flash,正常来说,当前是没有办法通过烧录的方式往这颗 Flash 上写入数据,但是可以作为应用程序的存储设备来使用

明白,比如我用的模组带flash,那么会自动识别出这个flash,那就是内部的,这个时候外面再挂一个,就算外部的了。然后分区表只能对应内部的,外部的flash必须应用层去手动加这样?

模组自带flash和mio外挂flash本质上是一样的;如果芯片本身自带了flash,比如芯片 ESP32-S3FN8 那么本质上与前面说的模组自带flash和mio外挂flash也是一样的情况。这样的情况,对于esp-idf来说,都要参考这里进行配置: https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32s3/api-guides/flash_psram_config.html?highlight=config_esptoolpy_flashsize#configure-the-flash

这个spi控制器的分配有关,esp32s3的数据中写得很清楚,你可以先看看手册:

手册在mio的资料包中可以找到,这个目录下的 README.md 有说明去哪里获取这些文档的最新官方版本: