大家好,
RT1170 评估板的 EVKB 版本的软件开发工具包中存在错误。在当前版本 25_06_00 中仍然存在。
闪存驱动程序(mflash_drv.c)显然是从包含不同的 QSPI 闪存的 EVK 板上移植的。
写入状态寄存器的 LUT 值为
/* Enable Quad mode */
[4 * NOR_CMD_LUT_SEQ_IDX_WRITESTATUSREG] =
FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x01, kFLEXSPI_Command_WRITE_SDR, kFLEXSPI_1PAD, 0x04),启用四模式的代码为
#if !defined(XIP_EXTERNAL_FLASH) || defined(MFLASH_FORCE_QUAD_MODE)
static status_t flexspi_nor_enable_quad_mode(FLEXSPI_Type *base)
{
flexspi_transfer_t flashXfer;
status_t status;
uint32_t writeValue = 0x40;
/* Write neable */
status = flexspi_nor_write_enable(base, 0);
if (status != kStatus_Success)
{
return status;
}
/* Enable quad mode. */
flashXfer.deviceAddress = 0;
flashXfer.port = kFLEXSPI_PortA1;
flashXfer.cmdType = kFLEXSPI_Write;
flashXfer.SeqNumber = 1;
flashXfer.seqIndex = NOR_CMD_LUT_SEQ_IDX_WRITESTATUSREG;
flashXfer.data = &writeValue;
flashXfer.dataSize = 1;
status = FLEXSPI_TransferBlocking(base, &flashXfer);即:值 0x40 与 cmd 0x1 一起写入。
在较旧的 EVK 板中,闪存芯片是 ISSI IS25WP128。
在这里,cmd 0x1 向状态寄存器写入 0x40,以设置四通道使能位。
EVK-B 的闪存芯片是 Winbond W25Q512NW。
其中,四位使能位位于 S9 中,即状态寄存器 2 的第 2 位。
这里需要用 cmd 0x31 写入值 0x02。
顺祝商祺!
莱纳
嗨,@hfuhruhurr、
感谢您的报告。我将对此进行调查并上报给 SDK 团队,以便他们能够对未来版本的 RT1170-EVKB SDK 进行适当的更改。