嵌入式技术论坛
直播中

其实znvm

8年用户 1187经验值
擅长:电源/新能源
私信 关注
[问答]

请问是否可以通过sfud同时访问两个flash?

如标题所说,工程中使用两个W25Q64,主控STM32H750,一个通过QSPI跑代码,一个通过SPI存储数据,不知道是否可以通过sfud同时访问两个flash

回帖(2)

剑寒九州

2023-9-8 16:35:46
可以。
举报

孙成红

2023-9-21 16:21:34
是的,可以通过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时需要确保不同设备的片选引脚互不干扰,否则可能会出现数据冲突或读写失败的情况。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分