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.

DLPDLCR160CPEVM: Read/Write the splash-screens stored in flash via UART

Part Number: DLPDLCR160CPEVM
Other Parts Discussed in Thread: DLPC3421

Tool/software:

Hello,

I want to display custom 640x320 images with the DLPDLCR160CPEVM.

(Use case: load ~8 images on the EVM internal flash memory, send request every few seconds to display one of those image)

Following the DLPDLCR160CPEVM User's Guide (DLPU131A.pdf), i was guided to use the UART (aka serial) port as main communication interface.

After reading the DLPDLCR160CPEVM Software Programmer's Guide (DLPU134.pdf), I had a good understanding of how to build UART frames to convey commands to the DLPC3421.

While reading DLPC3421 Software Programmer's Guide (DLPU115B.pdf) I could understands and successfully implement some commands such as Read Short Status (D0h), Read Splash Screen Header (0Fh) or display one of the 8 pre-loaded splash-screen (Write Splash Screen Select 0Dh+ Write Input Source Select 05h + Write Splash Screen Execute 35h).

I want now to be able to read (and re-write) the splash-screens that are pre-loaded in the flash (I estimate it will take about 1min to write a 640x320 16bit image in the flash via UART)

But I am not how to read/write the flash.

From what I understand the process would be to:

  1. Put the "flash read/write pointer" at the good address via Write Flash Data Type Select (DEh)
    • The parameters for this command should be 4 bytes:
      • 1st byte: "Partial user splash screen set", but it is not listed in Table 3-125... What value should i use?
      • 2nd byte: "Splash number", so between 00h and 07h, I guess
      • 3rd and 4th byte: "N/A". Should I put 00h for both or just use 2 parameters bytes instead of 4?
  2. Specify the length of the data that will be written to or read from the flash via Write Flash Data Length (DFh)
    • The UART frame is not limited to 32 byte total (29 bytes payload) for read/write flash operation: right? so I could ask for 256 bytes per transaction?
  3. Read the Splash-screen-image: Read Flash Start (E3h) and Read Flash Continue (E4h), by block of 256 bytes
  4. Write a new Splash-screen-image:
    • Erase all sectors of the selected splash-screen via a single Write Erase Flash Data (E0h)
    • Write Flash Start (E1h) and Write Flash Continue (E2h), by block of 256 bytes

In addition of those "procedural" questions, I wonder about the way the flash is partitioned to store the flash screen. Indeed, beside splash-screens number 01h and 03h (that are Uncompressed, and therefore have a fixed size of 460 800 bytes) all the other splash-screen are RLE compressed  (and have variable size, some as low as 35 152 bytes).

  • Is the memory size associated to each splash-screen fixed by their current size or by the maximum size (460 800 bytes for a 16bit/pixel, 640x320pixel image)
  • should I re-write the splash-screen header after modifying a splash-screen? What is the Write Splash Screen Header command?
  • Can we store more than 8 splash-screens in the flash?

We are particularly interested in displaying binary (aka Black and White) images (meaning the u-mirror stay fixed for each image). Would there be a firmware that would allow for binary (pixel format) images? This way we could store more (16x more) "binary" splash-screen and it would take only a few seconds to transfer each one via UART.

Thank you a lot for your help!

  • Hello User,

    Please allow us some time to look through and answer the questions asked here.

    The controller is strict on image size for splash image, so 640x360 should be used. There may be image artifacts if the image does not match that resolution.

    Memory size for each splash image, will need to confirm.

    There should not be a Write Splash Screen Header command in the SWPG. Can you share where this was seen?

    The amount of splash images that can be stored should depend on the capacity of the SPI Flash memory.

    Best,

    John

  • Hello John,

    Thank you for your answer.

    Yes, sorry it was a typo. I meant 640x360 (NOT 640x320).

    I didn't saw a " Write Splash Screen Header ". I was just wandering if there was one or if the header where automatically generated; but in this case how/where do we specify the pixel format, chroma_order,...

    Maybe it is hard-coded in the  splash-screen data itself. In which case it will become clear once I can read a splash-screen and "imitate" its encoding with our own images.

    I am using the default DLPDLCR160CPEVM hardware (including flash chip), with the default pre-programmed flash-memory. I am not sure how big is the flash nor how much of it is currently used...

  • Kind reminder :)

  • Hello John,

    Would you have any rough timeline for a possible answer?

    Thanks a lot for your support,

    Best regards,

    Mejdi.