cancel
Showing results for 
Search instead for 
Did you mean: 

MIPI-DSI Long Write Command error - Length sensitive

AELGH1
Associate II

Hello everyone,

Objective : Send pixel data to LCD module using DSI-HOST on APB command mode.

What I can do :

+ Read the LCD module's GRAM content ..

+ Send basic commands like Turn ON / OFF the Display, Pixels, Sleep IN / OUT ..

+ Send long write commands to update some GRAM content.

+ Update the whole GRAM content 100 pixels at a time (super slow).

The Challenge :

- I can't send long write commands with payloads of more than ~350 Bytes (350/3 pixels).

- Datasheets of both the MCU and the LCD module clearly mention that payload can be as long as 65536 bytes. But whenever I try to send a payload that's longer than 350 bytes, I get overrun flags and transmission fail until the next payload is loaded to FIFO again.

=> Does anyone know why that is ? (350 bytes = OK, more than that is NOK).

Context :

- MCU : STM32F469

- LCD module : OTM8009A

Thank you

1 ACCEPTED SOLUTION

Accepted Solutions
AELGH1
Associate II

Hello again,

Ok, I think the issue is caused by the size of the payload FIFO. I have reason to believe that its size is limited to 256 bytes.

I managed to partially solve the issue by modifying the HAL driver.

Now I force it to wait for FIFO empty flag to go up "DSI_GPSR_PWRFE" before sending the next payload. Otherwise I always get FIFO overrun interrupt.

Screen refresh is 3x faster compared to what I had before, but still not fast enough.

This made me come to the following realization : I have reached the limits of screen refresh using APB Command mode.

I'll now be moving on to the next step : Video mode through LTDC.

View solution in original post

1 REPLY 1
AELGH1
Associate II

Hello again,

Ok, I think the issue is caused by the size of the payload FIFO. I have reason to believe that its size is limited to 256 bytes.

I managed to partially solve the issue by modifying the HAL driver.

Now I force it to wait for FIFO empty flag to go up "DSI_GPSR_PWRFE" before sending the next payload. Otherwise I always get FIFO overrun interrupt.

Screen refresh is 3x faster compared to what I had before, but still not fast enough.

This made me come to the following realization : I have reached the limits of screen refresh using APB Command mode.

I'll now be moving on to the next step : Video mode through LTDC.