Part Number: PROCESSOR-SDK-AM437X
Other Parts Discussed in Thread: AM4377
Hello e2e community,
I have a custom board with AM4377 Cortex A processor. This board has a IS25LP080D flash memory connected through QSPI.
The problem is that in Quad and Dual mode write is succesful, but read corrupts every second byte.
In a Single mode it works like expected - read and write are correct!
Here is how the the memory is connected:
Here is a PinMUX mapping:
Here is what happens in the Quad mode:
txBuf is what I write, rxBuf is what I read back immediatelly after that.
My example is based on the sources found in idkAM437x (qspi_flash.*)
I just corrected the sizes according to the chip specification (IS25LP080D):
/*! * @brief Flash device size in bytes. */ #define S25FL_FLASH_DEVICE_SIZE (1 * 1024 *1024) /*! * @brief Flash block size in bytes. */ #define S25FL_FLASH_BLOCK_SIZE (64 * 1024) /*! * @brief Flash sector size in bytes. */ #define S25FL_FLASH_SECTOR_SIZE (4 * 1024) /*! * @brief Flash device ID. */ #define S25FL_FLASH_DEVICE_ID (0x13) /*! * @brief Flash device ID. */ #define S25FL_FLASH_MFG_ID (0x9D) /*! * @brief Macro to enable quad mode. */ #define QSPI_FLASH_QUAD_ENABLE_VALUE (0x1) /*! * @brief Macro indicating the bit position of quad enable bit. */ #define QSPI_FLASH_QUAD_ENABLE_BIT (0x01U)
I'm running the "QSPI_BasicExample_idkAM437x_armExampleProject" as example (but changed the target platform to my board).
Why in Single mode it is OK? Does it mean that wiring is done in a wrong way?
Any thoughts why every second byte could be corrupted are very welcome! I'm running out of ideas what to try next to fix this issue.
Thank you very much in advance!!!







