This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BOOST-LP5569EVM: Sequence of I2C commands to start SRAM program on LP5569 directly from low-level code

Part Number: BOOST-LP5569EVM
Other Parts Discussed in Thread: LP5569
I am controlling LP5569 from ESP32. I can connect and configure the chip, I could also control LEDs and charge pump directly - no issues whatsoever. It also confirms that my I2C setup and general addressing are working.
However, when I try to upload a test program into SRAM and try to run it - nothing is happening. No error, but PC is not advancing. This is the startup sequence I am using now. I am using Engine 1 only.
  1. Load program into first memory bank (set PROG_MEM_PAGE_SELECT to 0, then write 50 bytes starting at  PROGRAM_MEM_0 paginating as nessesary and filling the rest with zeroes)
  2. Read program back and compare (to verify it was written correctly)
  3. Enable charge pump and onboard clock (write 0x59 to MISC @ 0x2F)
  4. Enable chip (write 0x40 to CONFIG @ 0x00)
  5. Clear interrupts (write 0x07 to ENGINE_STATUS @ 0x3C)
  6. Set Engine 1 program starting address (write 0 to  ENGINE1_PROG_START@0x4B  ) - belts and braces, as it is already 0
  7. Set Engine 1 PC ( write 0 to ENGINE1_PC@0x30h ) - belts and braces, as it is already 0
  8. Set Engine 1 execution control as Free Run (write 0x80 to  LED_ENGINE_CONTROL1 @ 0x01)
  9. Start Engine 1 (write 0x80 to  LED_ENGINE_CONTROL2 @ 0x02)
What am I missing/doing wrong?

  • Ok, figured it out. I had several LED mapping definitions in the beginning of engine coding. Of course, there is no way for engine to figure those out, so the engine program starting address and initial PC (steps 6 and 7) must be set to the address of the actual first executable instruction. This is the number which is conveniently expressed in HEX file, in my case 9. Now everything is working.