I'm designing a custom board with RT1170.
I connect a device which has QSPI interface on FlexSPI2.
I could read the data properly from the QSPI devices when I used Normal read mode or Fast read mode.
However the first byte became 0xFF if I tried to read by fast Quad mode.
Could you help me how to read properly by fast quad?
I'm not sure how to use LUT well.
status_t status;
SDK_ALIGN( static uint8_t s_nor_read_buffer[256], 4 );
flexspi_nor_flash_init( EXAMPLE_FLEXSPI );
/* Enter quad mode. */
status = flexspi_nor_enable_quad_mode( EXAMPLE_FLEXSPI );
if (status != kStatus_Success)
{
return status;
}
status = flexspi_nor_flash_read( EXAMPLE_FLEXSPI, start_addr , (void *)s_nor_read_buffer , sizeof( s_nor_read_buffer ));
if (status != kStatus_Success)
{
return status;
}
return 0;
}
static const uint32_t flexspi_seq_cmd_lut_flash[FLEXSPI_SEQ_CMD_LUT_LENGTH] = {
// Normal read mode -SDR
[4 * NOR_CMD_LUT_SEQ_IDX_READ_NORMAL] =
FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x03, kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_1PAD, 0x18),
[4 * NOR_CMD_LUT_SEQ_IDX_READ_NORMAL + 1] =
FLEXSPI_LUT_SEQ(kFLEXSPI_Command_READ_SDR, kFLEXSPI_1PAD, 0x04, kFLEXSPI_Command_STOP, kFLEXSPI_1PAD, 0),
// Fast read mode - SDR
[4 * NOR_CMD_LUT_SEQ_IDX_READ_FAST] =
FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x0B, kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_1PAD, 0x18),
[4 * NOR_CMD_LUT_SEQ_IDX_READ_FAST + 1] =
FLEXSPI_LUT_SEQ( kFLEXSPI_Command_DUMMY_SDR, kFLEXSPI_1PAD, 0x08, kFLEXSPI_Command_READ_SDR, kFLEXSPI_1PAD, 0x04),
// Fast read quad mode - SDR
[4 * NOR_CMD_LUT_SEQ_IDX_READ_FAST_QUAD] =
FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0xEB, kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_4PAD, 0x18),
[4 * NOR_CMD_LUT_SEQ_IDX_READ_FAST_QUAD + 1] =
FLEXSPI_LUT_SEQ( kFLEXSPI_Command_DUMMY_SDR, kFLEXSPI_4PAD, 0x06, kFLEXSPI_Command_READ_SDR, kFLEXSPI_4PAD, 0x04 ), // Transmit command/address and transmit/receive data only through DATA[3:0].