Other Parts Discussed in Thread: DLPC3421
Tool/software:
NB: my question is pretty much the same that this one: RE: DLPDLCR160CPEVM: Read/Write the splash-screens stored in flash via UART
which thread was 'locked' despite not having been answered...
I want to display custom 640x360 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 640x360 16bit image in the flash via UART)
But I am not sure how to read/write the flash.
From what I understand the process would be to:
- 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?
- The parameters for this command should be 4 bytes:
- 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?
- Read the Splash-screen-image: Read Flash Start (E3h) and Read Flash Continue (E4h), by block of 256 bytes
- 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, 640x360pixel image)
- should I re-write the splash-screen header after modifying a splash-screen? What would be the command to do so?
- Can we store more than 8 splash-screens in the flash? (using the default DLPDLCR160CPEVM hardware, with the default pre-programmed flash-memory. not sure how big the flash is nor how much of it is currently used...)
Thank you a lot for your help!