FlexColor: how to disable reading for parallel lcd without RD signal?

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

    • Hi,

      What kind of parallel interface are you using?

      If you are reffering to a parallel RGB interface, the GUIDRV_FlexColor is most likely the wrong driver.

      To disable reading simply do not set the function pointer for reading. But, this requires a cache. To enable the cache for the GUIDRV_FlexColor use one of the modes with C1 in their name. C1 indicates that a cache is enabled. Like:

      Please note that this cache requires additional memory which gets allocated from the GUI_MEMORY pool (set in GUI_X_Config()).
      The requirement is xSize * ySize * byte per pixel.

    • I use stm32's FSMC to control ili9486 lcd.
      My board don't have enough memory for cache.

      I tryed to run emwin demo on my board, seing flickering and artefacts without WM_SetCreateFlags(WM_CF_MEMDEV). With it, flickering dissapears, but lcd shows more artefacts.

      Is there a way to disable lcd reading and make emwin redrawing all screen instead of it parts? (performance now is not critical)
    • Hi,

      for some operations it is required for emWin to 'know' the content of the display. To get these information emWin either reads the content from the display, which would require a set of read functions, or reads the information from a cache. Of course, the cache requires memory to mirror the display content.

      If you are using memory devices it works most likely because emWin 'knows' the content of the device and doesn't need to read the display content.

      You could try to call WM_InvalidateArea(&Rect) where Rect is:
      Rect.x0 = 0;
      Rect.y0 = 0;
      Rect.x1 = LCD_GetXSize();
      Rect.y1 = LCD_GetYSize();

      This causes the Window Manager to redraw the complete screen content. I'm not sure if this will work properly and I guess there will be issues with transparency.