Other Parts Discussed in Thread: SYSCONFIG
Hello experts,
I'm developing support for custom flash device "MX25L12833FM2I-10G".
I'm having troubles using the flash in 1S-1S-4S.
I managed to configure correctly the flash in the 1S-1S-4S protocol. After configuration the bit6 (QE, quad enable) of the status word is set correctly and the amount of dummy cycles is set to 10 (bit6/7 of configuration register), as shown in the image, where cfgReg = configuration register and statReg = status register.
The problem occurs when I execute a QREAD command (0x6B):
I'm using the ospi_flash_io example provided by the SDK, where it writes an array of values to the flash (from 0 to 255 in crescent order) and then reads back this values.
In the read buffer I'm getting this values instead:
This response from the flash makes me wonder if all the 4 spi pins (D0,D1,D2,D3) are actually being used or if I'm missing something the the peripheral configuration.
Here you can find the sysconfig file from my project
/** * These arguments were used when this file was generated. They will be automatically applied on subsequent loads * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments. * @cliArgs --device "AM243x_ALX_beta" --package "ALX" --part "ALX" --context "r5fss0-0" --product "MCU_PLUS_SDK_AM243x@09.00.00" * @versions {"tool":"1.18.0+3266"} */ /** * Import the modules used in this configuration. */ const flash = scripting.addModule("/board/flash/flash", {}, false); const flash1 = flash.addInstance(); const clock = scripting.addModule("/kernel/dpl/clock"); const debug_log = scripting.addModule("/kernel/dpl/debug_log"); const mpu_armv7 = scripting.addModule("/kernel/dpl/mpu_armv7", {}, false); const mpu_armv71 = mpu_armv7.addInstance(); const mpu_armv72 = mpu_armv7.addInstance(); const mpu_armv73 = mpu_armv7.addInstance(); const mpu_armv74 = mpu_armv7.addInstance(); /** * Write custom configuration values to the imported modules. */ flash1.$name = "CONFIG_FLASH0"; flash1.device = "CUSTOM_FLASH"; flash1.flashSize = 16777216; flash1.flashBlockSize = 65536; flash1.dummy_isAddrReg = false; flash1.dummy_cfgReg = "0x00000000"; flash1.addressByteSupport = "0"; flash1.idNumBytes = 5; flash1.modeClksRd = 0; flash1.fourByteEnableSeq = "0x80"; flash1.flash444Seq = "0x00"; flash1.flashManfId = "0xC2"; flash1.flashDeviceId = "0x2018"; flash1.cmdBlockErase4B = "0xFF"; flash1.cmdSectorErase4B = "0xFF"; flash1.flashQeType = "2"; flash1.protocol = "1s_1s_4s"; flash1.dummy_cmdRegRd = "0x15"; flash1.dummy_cmdRegWr = "0x01"; flash1.dummy_mask = "0xC0"; flash1.dummyClksRd = 10; flash1.dummy_shift = 6; flash1.dummy_bitP = 3; flash1.fname = "MX25L128"; flash1.enable4BAddr = false; flash1.cmdRd = "0x6B"; flash1.quirks = "NULL"; flash1.peripheralDriver.$name = "CONFIG_OSPI0"; flash1.peripheralDriver.inputClkFreq = 100000000; debug_log.enableUartLog = true; debug_log.uartLog.$name = "CONFIG_UART_LOG"; debug_log.uartLog.UART.$assign = "USART0"; mpu_armv71.$name = "CONFIG_MPU_REGION0"; mpu_armv71.size = 31; mpu_armv71.attributes = "Device"; mpu_armv71.accessPermissions = "Supervisor RD+WR, User RD"; mpu_armv71.allowExecute = false; mpu_armv72.$name = "CONFIG_MPU_REGION1"; mpu_armv72.size = 15; mpu_armv72.accessPermissions = "Supervisor RD+WR, User RD"; mpu_armv73.$name = "CONFIG_MPU_REGION2"; mpu_armv73.baseAddr = 0x41010000; mpu_armv73.size = 15; mpu_armv73.accessPermissions = "Supervisor RD+WR, User RD"; mpu_armv74.$name = "CONFIG_MPU_REGION3"; mpu_armv74.baseAddr = 0x70000000; mpu_armv74.size = 21; mpu_armv74.accessPermissions = "Supervisor RD+WR, User RD"; /** * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future * version of the tool will not impact the pinmux you originally saw. These lines can be completely deleted in order to * re-solve from scratch. */ flash1.peripheralDriver.OSPI.$suggestSolution = "OSPI0"; flash1.peripheralDriver.OSPI.CLK.$suggestSolution = "OSPI0_CLK"; flash1.peripheralDriver.OSPI.CSn0.$suggestSolution = "OSPI0_CSn0"; flash1.peripheralDriver.OSPI.D3.$suggestSolution = "OSPI0_D3"; flash1.peripheralDriver.OSPI.D2.$suggestSolution = "OSPI0_D2"; flash1.peripheralDriver.OSPI.D1.$suggestSolution = "OSPI0_D1"; flash1.peripheralDriver.OSPI.D0.$suggestSolution = "OSPI0_D0"; debug_log.uartLog.UART.RXD.$suggestSolution = "UART0_RXD"; debug_log.uartLog.UART.TXD.$suggestSolution = "UART0_TXD";
Thank you in advance,
Best Regards,
Andrea F,