LCD Display area cut off

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • LCD Display area cut off

    Hello,

    Hopefully someone can provide me with some info on a problem I am having...

    I am changing the display of the STM32F429 Discovery board (240x320) to a NewHaven display (480x272):

    NHD‐4.3‐480272EF‐ATXL#‐T


    The new display lists the driver as the Himax HX8257‐A, which is connected straight by RGB and sync signals (using internal controller of STM32F429 only). The issue I have is that the full area of the display is not used, the display works, I can run the emWin demos but they don't quite fit the screen properly. As far as I can tell the hardware is being initialised correctly, I can get a test pattern filling the whole LCD when I initialise the on board controller... the problem is when I use emWin the windows is not the size it should be.

    I have attached a photo so you can see, does anyone have any ideas what this is most likely to be?

    Best Regards,

    Ant
    Images
    • IMG_20150525_131931.jpg

      773.93 kB, 1,920×1,080, viewed 921 times
  • Also just to add some more information...

    I tried the simple "Hello world!" code, the output is at the top left corner but misses off the first word, it's as though the windows is shifted left and up slightly for some reason but I can't see why it should be. Photo attached for the Hello World using emWin and the test pattern I can get when I initialise the STM32F429 controller. This is using GUIDRV_LIN_16 and GUICC_M565.

    If I make calls to LCDGetXSize() & LCDGetYSize() then it does bring back the correct dimensions. The pixel clock rate is OK, as are the LCD timings, they are the same as the 480x272 LCD on the STM32429I-EVAL.

    Any comments / help appreciated.

    Ant
    Images
    • IMG_20150525_203847.jpg

      434.84 kB, 1,920×1,080, viewed 598 times
    • Test_Pattern.jpg

      650.07 kB, 1,920×1,080, viewed 548 times

    The post was edited 1 time, last by Ant ().

  • Hello Ant,

    I would recommend you to check the initialization of your display. Since the GUIDRV_Lin actually just manages the frame buffer without communicating with the display controller at all, you should likely find the cause of the problem in the initialization sequence of your display controller. Otherwise please contact your display vendor.

    Best regards,
    Adrian
  • Hello Ant,

    I recommed to you to check your LCD timming. Look at

    GUIDRV_stm32f429i_discovery.c file:

    C Source Code

    1. /*********************************************************************
    2. *
    3. * H/V front/backporch and synchronization width/height
    4. */
    5. #define HBP 216
    6. #define VBP 35
    7. #define HSW 800
    8. #define VSW 480
    9. #define HFP 40
    10. #define VFP 10
    Display All


    and stm32f429i_discovery_ldc.c
    (here the values are accumulated see page 481 of RM0090 IAR)

    C Source Code

    1. /* Timing configuration */
    2. /* Configure horizontal synchronization width */
    3. LTDC_InitStruct.LTDC_HorizontalSync = 128;
    4. /* Configure vertical synchronization height */
    5. LTDC_InitStruct.LTDC_VerticalSync = 2;
    6. /* Configure accumulated horizontal back porch */
    7. LTDC_InitStruct.LTDC_AccumulatedHBP = 216;
    8. /* Configure accumulated vertical back porch */
    9. LTDC_InitStruct.LTDC_AccumulatedVBP = 35;
    10. /* Configure accumulated active width */
    11. LTDC_InitStruct.LTDC_AccumulatedActiveW = 1016;
    12. /* Configure accumulated active height */
    13. LTDC_InitStruct.LTDC_AccumulatedActiveH = 515;
    14. /* Configure total width */
    15. LTDC_InitStruct.LTDC_TotalWidth = 1056;
    16. /* Configure total height */
    17. LTDC_InitStruct.LTDC_TotalHeigh = 525;
    18. LTDC_Init(&LTDC_InitStruct);
    Display All


    Best regards.

    The post was edited 2 times, last by UniDev ().

  • Hi guys,

    I managed to figure it out after coming to the same conclusion, you are both correct :) I had to adjust the HBP and VBP values in the GUIDRV file, it seems to work fine now.

    Many thanks!

    Ant