STemWin with write only LCD

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

  • STemWin with write only LCD

    Hi, Currently I have been developing application on the low-cost device based on the STM32F207 and LCD with the internal buffer memory. LCD is connected to the FSMC (Flexible static memory controller) and act as the external memory. Point is that the Upload to the LCD is very fast and Tearing effects is very minimal but things get change when some widgets (e.g. EditBox) request XOR operation and reads from LCD. During reading operation I need to decrease the FSMC speed dramatically due to long access time to the LCD RAM in read mode.

    So my question is: Is is possible to force all widget to redraw its content instead of reading the LCD?

    Best Regards
    Krzysztof

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

  • Hello Krzysztof,

    I assume you use the emWin display driver GUIDRV_Lin. In this case it is not possible to deactivate reading functionality. I would suggest you to try using automatic Memory Device usage by the Window Manager (WM_SetCreateFlags(WM_CF_MEMDEV)). Using Multiple Buffering might also improve performance in this case.

    Best regards,
    Adrian
  • Hi and thanks for answer. I’m using my own drivers for LDS285. According to datasheet timings for reading have to be 4,5 times longer than for writing operation. If I slowdown the interface, flickering is noticeable and this is what I want to avoid.

    Where should I put flag which you mention (WM_CF_MEMDEV)?

    C Source Code

    1. static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = { { WINDOW_CreateIndirect, "Desktop", ID_WINDOW_0, 0, 0, 320, 240, 0, 0x0, 0 },
    2. { TEXT_CreateIndirect, "Temperature", ID_TEXT_0, 5, 9, 220, 24, 0, 0x0, 0 },
    3. { TEXT_CreateIndirect, "Humidity", ID_TEXT_1, 5, 35, 220, 24, 0, 0x64, 0 },
    4. { TEXT_CreateIndirect, "Time&Date", ID_TEXT_2, 5, 66, 220, 20, 0, 0x0, 0 },
    5. { TEXT_CreateIndirect, "DimerStat", ID_TEXT_3, 0, 205, 106, 20, 0, 0x0, 0 },
    6. { TEXT_CreateIndirect, "HeaterStat", ID_TEXT_4, 106, 205, 106, 20, 0, 0x0, 0 },
    7. // USER START (Optionally insert additional widgets)
    8. { IMAGE_CreateIndirect, "Image_logo", ID_IMAGE_LOGO, 320-100, 10, 86, 69, 0, 0, 0 },
    9. { ICONVIEW_CreateIndirect, "Iconview", ID_ICONVIEW_0, 0, 100, 320, 106, 0, 0x006a006a, 0 },
    10. // USER END };


    OR

    C Source Code

    1. hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);



    How to set size of Mem device? Or it is done automatically from memory pool assigned to the driver by constant GUI_NUMBYTES?

    Best regards,
    Krzysztof
  • Hello Krzysztof,

    Calling WM_SetCreateFlags() makes the given flags being used by default for all subsequently created windows. Please note that the Window Manager automatically creates and deletes the Memory Devices for drawing windows. The parameters Flags and Para are used according to the given <WIDGET>_CreateIndirect() function. For detailed information, please refer to the chapter "The Window Manager" and "Widgets".

    Best regards,
    Adrian