你好、冠军、
我对 SDK API 'QSPIFlashReadSFDP'有疑问。 输入参数 dataLen 为8、这意味着读取8字节 SFDP 参数。 为什么我们使用 dataLen + 3作为 SFDP 命令来写入数据长度、dataLen + 2作为地址最短长度、而 dataLen + 1作为虚拟周期长度? 我查看了 Cyoress Flash 的数据表、但找不到任何相关要求。
静态空 QSPIFlashReadSFDP (QSPI_Handle QSPIHandle、uint32_t addr、uint32_t dataLen、uint8_t * receiveData)
{
uint8_t 索引;
uint32_t status;
/*写入 SFDP 命令*/
QSPIFlashWriteCmd (QSPIHandle、FLASH_CMD_SFDP、dataLen + 3U);
/*写入地址偏移量*/
QSPIFlashWriteAddr (QSPIHandle、addr、dataLen + 2U);
/* 8个虚拟周期- 1个字节*/
QSPI_cfgWrite (QSPIHandle、QSPI_CMD_4PIN_WRITE_SINGLE、QSPI_WORDLEN_8位、0x0、dataLen + 1U);
/*读取字节*/
for (index = 0U;index < dataLen;index++)
{
receiveData[索引]= QSPIFlashReadByte (QSPIHandle);
}
/*检查忙标志*/
操作
{
状态= QSPIFlashGetStatus (QSPIHandle、FLASH_CMD_RDSR1);
}while (((status & 0x1U)!= 0x0U);
}