Skip to main content
Scotty55
Associate III
October 15, 2026
Question

LevelX problem with OctoSPI in QuadSPI mode

Our board contains a STM32H523 and a W25Q256JV connected to OctoSPI1 configured for Quad SPI mode. FileX/LevelX should handle the external memory.

LevelX OSPI Component is configured for “Custom”. After generating the code with CubeMX (6.18.1), Filex/Target/lx_stm32_ospi_driver_glue.c contains several functions with wrong code, e.g:

 

INT lx_stm32_ospi_get_status(UINT instance) {

…

/* Initialize the read status register command */

s_command.OperationType = HAL_XSPI_OPTYPE_COMMON_CFG;

s_command.IOSelect = HAL_XSPI_SELECT_IO_7_0;

s_command.Instruction = LX_STM32_OSPI_OCTAL_READ_STATUS_REG_CMD;

s_command.InstructionMode = HAL_XSPI_INSTRUCTION_8_LINES;

s_command.InstructionWidth = HAL_XSPI_INSTRUCTION_16_BITS;

s_command.Address = 0;

s_command.AddressMode = HAL_XSPI_ADDRESS_8_LINES;

s_command.AddressWidth = HAL_XSPI_ADDRESS_32_BITS;

s_command.AlternateBytesMode = HAL_XSPI_ALT_BYTES_NONE;

s_command.DataMode = HAL_XSPI_DATA_8_LINES;

s_command.DataLength = 2;

s_command.DummyCycles = LX_STM32_OSPI_DUMMY_CYCLES_READ_OCTAL;

s_command.SIOOMode = HAL_XSPI_SIOO_INST_EVERY_CMD;

/* DTR mode is enabled */

s_command.InstructionDTRMode = HAL_XSPI_INSTRUCTION_DTR_ENABLE;

s_command.AddressDTRMode = HAL_XSPI_ADDRESS_DTR_ENABLE;

s_command.DataDTRMode = HAL_XSPI_DATA_DTR_ENABLE;

s_command.DQSMode = HAL_XSPI_DQS_ENABLE;

…

}

W25Q256JV works with IO 3..0, 4 Lines, Instruction 8 Bits, DTR disabled and so on.

What is going on here? Did I miss something? Where can I find a working example for a similar configuration?