|
楼主 |
发表于 2020-10-9 17:45:21
|
显示全部楼层
仔细研究了这个映射函数
void QSPI_MemoryMapped(void)
{
QSPI_CommandTypeDef sCommand={0};
QSPI_MemoryMappedTypeDef sMemMappedCfg={0};
sCommand.InstructionMode = QSPI_INSTRUCTION_1_LINE;
sCommand.AddressSize = QSPI_ADDRESS_32_BITS;
sCommand.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
sCommand.DdrMode = QSPI_DDR_MODE_DISABLE;
sCommand.DdrHoldHalfCycle = QSPI_DDR_HHC_ANALOG_DELAY;
sCommand.SIOOMode = QSPI_SIOO_INST_EVERY_CMD;
sCommand.AddressMode = QSPI_ADDRESS_4_LINES;//QSPI_ADDRESS_1_LINE;
sCommand.DataMode = QSPI_DATA_4_LINES;
sCommand.NbData = 0;
/* Reading Sequence ------------------------------------------------ */
sCommand.Instruction = QUAD_INOUT_FAST_READ_4_BYTE_ADDR_CMD;
sCommand.DummyCycles = DUMMY_CLOCK_CYCLES_READ_QUAD;
sMemMappedCfg.TimeOutActivation = QSPI_TIMEOUT_COUNTER_DISABLE;
if (HAL_QSPI_MemoryMapped(&QSPIHandle, &sCommand, &sMemMappedCfg) != HAL_OK)
{
Error_Handler(__FILE__, __LINE__);
}
}
原来定义如下:
#define DUMMY_CLOCK_CYCLES_READ_QUAD 8
按照这个定义,映射0x90000000就会少两个字节。
改为如下
#define DUMMY_CLOCK_CYCLES_READ_QUAD 6
问题就解决了。原有程序是W25Q256JV的参数,W25Q256FV的应该是6.
多谢多谢指点。
|
|