2021-04-28 04:58 AM
Hello,
We are struggling to implement the 1k boundary when reading/writing to a frame buffer i.e. to avoid read operation being split into single accesses
How to do this is described in the application note here:
On page 51, it shows how to set the "HAL_LTDC_SetPitch"
We have tried every possible combination of numbers for this. The application either draws incorrectly when we follow the application note. Or when it looks exactly the same as it does without using "HAL_LTDC_SetPitch", then there is absolutely no performance improvement
We are using:
16 bpp
480 height
800 width
We use an SDRAM of size 16 MB. We use 3 frame buffers. Each frame buffer has a dedicated 4MB bank of the SDRAM, so that only the frame buffer is there.
When we set this "HAL_LTDC_SetPitch" as HAL_LTDC_SetPitch(&h, 800, 0) then it works the exact same as before setting pitch. HAL_LTDC_SetPitch(&h, 1600, 0) also works exactly the same. We do not notice a performance improvement. But based on the application note (when considering our configuration: 800 x 480 display with 16 bpp) we would need to set:
HAL_LTDC_SetPitch(&h, 832, 0)
The logic is that the pitch value needs to be bigger or equal to the width value (in our case 800). And be a multiple of 64 (due to using 16 BPP i.e. 2 bytes per 1 pixel)
We are also confused about what it means "AHB/AX" "64/128". There is no clarification for this, and we have no idea where to look to know what this is.
On page 48 they show an example for "480 x 272 display with 24 bpp", but we were not able to successfully adapt this. It looks trivial, but it does not work on our Display.