是的,可以通过sfud同时访问两个flash。sfud支持多个SPI或QSPI闪存设备的并行访问,只需在初始化过程中为每个设备分配不同的实例并选择正确的片选引脚即可。例如,可以使用以下代码创建两个W25Q64设备的sfud实例:
sfud_flash_t w25q64_1;
sfud_flash_t w25q64_2;
sfud_qspi_port_init();
sfud_spi_port_init();
sfud_w25qxx_init_instance(&w25q64_1, 0, SFUD_W25Q64_CAPACITY, SFUD_W25QXX_HIGH_SPEED_QUAD_IO, SFUD_W25QXX_DEFAULT_PAGE_SIZE, 0, 0);
sfud_w25qxx_init_instance(&w25q64_2, 1, SFUD_W25Q64_CAPACITY, SFUD_W25QXX_HIGH_SPEED_QUAD_IO, SFUD_W25QXX_DEFAULT_PAGE_SIZE, 0, 0);
其中,第一个参数表示实例编号,第二个参数为片选引脚编号,第三个参数为芯片容量,第四个参数为访问模式,第五个参数为页大小,最后两个参数为保留用途,一般设置为0即可。
之后可以通过类似以下代码的方式访问两个flash:
sfud_read(&w25q64_1, address, size, buffer);
sfud_read(&w25q64_2, address, size, buffer);
其中,第一个参数为要访问的设备实例,后面的参数依次为起始地址、读取长度和读取缓冲区。
需要注意的是,使用多个flash时需要确保不同设备的片选引脚互不干扰,否则可能会出现数据冲突或读写失败的情况。
是的,可以通过sfud同时访问两个flash。sfud支持多个SPI或QSPI闪存设备的并行访问,只需在初始化过程中为每个设备分配不同的实例并选择正确的片选引脚即可。例如,可以使用以下代码创建两个W25Q64设备的sfud实例:
sfud_flash_t w25q64_1;
sfud_flash_t w25q64_2;
sfud_qspi_port_init();
sfud_spi_port_init();
sfud_w25qxx_init_instance(&w25q64_1, 0, SFUD_W25Q64_CAPACITY, SFUD_W25QXX_HIGH_SPEED_QUAD_IO, SFUD_W25QXX_DEFAULT_PAGE_SIZE, 0, 0);
sfud_w25qxx_init_instance(&w25q64_2, 1, SFUD_W25Q64_CAPACITY, SFUD_W25QXX_HIGH_SPEED_QUAD_IO, SFUD_W25QXX_DEFAULT_PAGE_SIZE, 0, 0);
其中,第一个参数表示实例编号,第二个参数为片选引脚编号,第三个参数为芯片容量,第四个参数为访问模式,第五个参数为页大小,最后两个参数为保留用途,一般设置为0即可。
之后可以通过类似以下代码的方式访问两个flash:
sfud_read(&w25q64_1, address, size, buffer);
sfud_read(&w25q64_2, address, size, buffer);
其中,第一个参数为要访问的设备实例,后面的参数依次为起始地址、读取长度和读取缓冲区。
需要注意的是,使用多个flash时需要确保不同设备的片选引脚互不干扰,否则可能会出现数据冲突或读写失败的情况。
举报