This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TM4c129X LCD controller Raster Mode



Hi TI, 

I have the Development Board with BGA packaged TM4C129x.. From Tivaware 2.1 i see a basic example for Using the LCD Driver in Raster Mode. Do you have a more advanced tutorial that I can follow to connect a driverless display with RGB,HSYNC,VSYNC, Enable ?

Thanks!

  • Hello Joel,

    If the question is about connectivity then the connection of the RGB, HSYNC, VSYNC and Enable is given in the Signal Description and Raster Mode description of the LCD Controller chapter of the Data Sheet.

    If you have the LCD Panel data sheet we can help construct the connectivity.

    Regards

    Amit

  • Amit Ashara said:
    If you have the LCD Panel data sheet we can help construct the connectivity.

     Hi Amit, frmo when I bought DK-TM4c129x I never figured why this board use a standard 3.5 LCD TI has used still on low pin count than mounting a Raster mode?

     Non controller use a majority 40 pin connector appear to be same on a large model/manufacturer, Again on an LCD based device a controller demonstration I think was better than driving a parallel GPIO based example.

     Controller on board lcd brand use some kind of 30 40 50 60 pin not all signal level pin to pin compatible...

     Can be in the future this demo can be near to one similar to elektronica demonstrating LCD controller than GPIO?

     Thank

     Ps: this is my LCD ;)

    http://www.tianma-europe.com/downloads/tm050nbh01-00_prelininary_v0-1.pdf

  • Hi Roberto,

    The 3.5" LCD is something that can use a lower memory footprint as the pixel is stored in the Panel. On the other hand having a Raster Display would mean fetching the data continously calling for a larger SRAM or possibly an external SDRAM.

    We can move it "Conversations"...

    Regards

    Amit

  • Amit Ashara said:
    The 3.5" LCD is something that can use a lower memory footprint as the pixel is stored in the Panel. On the other hand having a Raster Display would mean fetching the data continously calling for a larger SRAM or possibly an external SDRAM.

     Ram can be attached to EPI, some example on how to use maybe of some help to who enter this way.

      When an external ram is connected and an FPGA is in place did you think may be shareable with same ram channel?

    Amit Ashara said:

    We can move it "Conversations"...

     Maybe a pleasure to do, I don't need information in particular, I was just planning what can happen preparing FAQ to leave here as for other issue. I like a lot Sue sticky about "GPIO common issue".

     How can we organize some troubleshooting and or guide to to reduce struggling all the day trying extract reluctant information from?

     I just hope not come back ask information on how to try troubleshoot panel when it arrives. :)

  • Hello Roberto,

    Based on the refresh rate and the size of the panel it is always preferable to use SDRAM than to use SRAM. Bandwidth may become a problem with Asynchronous memories running at lower speeds.

    Regards

    Amit

  • Dear Amit,


    i tried to integrate an 4.3 inch lcd screen (PH480272T-006-I-Q) with DK- tm4c129x (drawn  cables from pins and externally connecting to Display) for that raster example code  and 16bpp raster driver were used and  all 24 pins awereused for lcd data . updated the raster timings in  raster_display.c  but for intialization i couldnt understand how to procced.
    In lcd datasheet power on sequence was given but  parameters like  VGH,VGL  are not available DK-tm4c129X can you help me out how to proceed as well correct the hardware connections any missing concepts

  • Hello Parvesh,

    Did you remove the existing LCD Panel from the DK-TM4C129 before drawing cables. You would need to be check the Vertical Back-Front Porch setting of the LCD Panel before programming the same in Raster Mode.

    You need to make sure that

    1. The wiring is rock-solid. Since raster panel are high frequency connecting such wires is not a good idea. I have had tons of trouble with such topology of connection

    2. Do make sure that the Pixel Clock, Vertical and Horizontal Sync pulses are clean (w/o reflections).

    Unfortunately I haven't used this panel so digging up such information can be painstaking slow for me w/o having something to test it again.

    Regards

    Amit

  • Dear amit,

    thanks for the reply

    1)  yes from DK - tm4c129x  i have drawn the cables out .i have used the typical values from panel data sheet directly.

    my lcd panel is of 24 data bits below mentioned the pins and the code pls. check it very urgent

    code taken from raster example :

    display intialization funciton --- i have enabled 565 format or do i have to all 24 pins ?

    main function i commented sdram call as it was not connected jus taken a variable

    Pls check and reply its very urgent as we have an order

  • parvesh kumar chaudhary1 said:
    Pls check and reply its very urgent as we have an order

     Please also develop all code remaining on my project!! I got order for 100 pieces two year ago!!!!

    parvesh kumar chaudhary1 said:
    display intialization funciton --- i have enabled 565 format or do i have to all 24 pins ?

     So you don't have idea of how to connect a 24bit when just 16 bit come from controller?

     Good bye mon ami...

  • "Mon ami" is not pleased with this comparison/designation...

    And just whom is at fault for accepting such an "order" - w/out the required experience & skill-set to honor it - in a timely manner?

  • cb1_mobile said:
    And just whom is at fault for accepting such an "order" - w/out the required experience & skill-set to honor it - in a timely manner?

     I posed question of split level many time ago...

     Again and forever we encounter these threat losing up our time and lowering the chance of reading something useful..

     I bet professional in this area are no more than 100 and I can risk to lower that number too, if we remove occasional professional bet for me ;) ...

     I read new post seldom and when entitlement seems addressing something but too many are wasting my time as I think for every professional developer come here.

  • Will your, "split level" include a section for, "Do my homework" posters?  (very thinly disguised as "order")

    After all - its (most always) URGENT!  (i.e. Stop all paid work - jump right on poster's design - complete/verify - for Free!)

    In general agreement - proposed a workable/detailed poster "template" (rejected despite 800+ hits) - vendor (surely) knows best.

  • Hi Amit,
    I've integrated a 7" TFT panel to my TIVAc129 but I'm encountering same problemm with LCD controller.

    After configuration (frame buffer size, pixel clock, etc) I've to re-enable the LCD controller as my LCD is blank. After re-enable LCD will show my GUI but after a while it will became again blank.

    Which parameter I need to check to avoid and fix this issue?

    Frame buffer location is on SDRAM.

    Thanks
  • Hello Marco,

    Which 7" panel is it? Raster or LIDD, specification for the panel, code for configuration!!!! I am clueless without such data

    Regards
    Amit
  • Hi Amit,

    This poster has far exceeded the usual, "Does not work!"   Yet still - you/I (and I'm in display biz) remain clueless.

    Does this not speak - loudly - to the need for some, "TM129/EPI/Display Forum Guideline?"

    Simple 4-5 item, "fill in the blanks" would do so much to raise understanding.  (of course - suggestion is "NIH" - will be "duly noted" then tossed!)

    Excelsior...

  • #define

    The panel is TX18D46VM2BPA (product from KOE).

    It's a raster one.

    Below my configuration:
    ui32PixelClock = ui32SysClock / 5;

    LCDModeSet(LCD0_BASE, LCD_MODE_RASTER | LCD_MODE_AUTO_UFLOW_RESTART, ui32PixelClock, ui32SysClock);

    LCDRasterConfigSet(LCD0_BASE, RASTER_FMT_ACTIVE_24BPP_UNPACKED | RASTER_LOAD_DATA_ONLY, 0);

    sTimings.ui32Flags = RASTER_TIMING_SYNCS_ON_RISING_PIXCLK | RASTER_TIMING_ACTIVE_HIGH_OE |
    RASTER_TIMING_ACTIVE_HIGH_PIXCLK | RASTER_TIMING_ACTIVE_HIGH_HSYNC | RASTER_TIMING_ACTIVE_HIGH_VSYNC;

    sTimings.ui16PanelWidth = XSIZE_PHYS;
    sTimings.ui16PanelHeight = YSIZE_PHYS;

    sTimings.ui16HFrontPorch = 20;
    sTimings.ui16HBackPorch = 216;
    sTimings.ui16HSyncWidth = 1;

    sTimings.ui8VFrontPorch = 5;
    sTimings.ui8VBackPorch = 35;
    sTimings.ui8VSyncWidth = 1;

    sTimings.ui8ACBiasLineCount = 0;
    LCDRasterTimingSet(LCD0_BASE, &sTimings);

    LCDDMAConfigSet(LCD0_BASE, LCD_DMA_PRIORITY_7 | LCD_DMA_FIFORDY_512_WORDS | LCD_DMA_BURST_16 | LCD_DMA_BYTE_ORDER_0123 );

    LCDRasterFrameBufferSet( LCD0_BASE, 0, (uint32_t *)( LCD_FRAME_BUFFER_PTR), LCD_FRAME_BUFFER_SIZE );

    ui32FrameBuffer = (uint32_t *)(LCD_FRAME_BUFFER_PTR);
    for(ui32Count = 0; ui32Count < (XSIZE_PHYS * YSIZE_PHYS); ui32Count++)
    {
    *ui32FrameBuffer = 0x0000000;
    ui32FrameBuffer++;
    }

    LCDRasterEnable( LCD0_BASE );


    where:
    #define LCD_FRAME_BUFFER_SIZE ( 800 * 480 * 4 )
    #define LCD_FRAME_BUFFER_PTR 0x60000000
    #define XSIZE_PHYS 800
    #define YSIZE_PHYS 480


    and for test I'm using:
    // fill up with red rectangular
    for( ui32Count = 0; ui32Count < (XSIZE_PHYS * 100); ui32Count++)
    {
    *ui32FrameBuffer = 0x000000FF;
    ui32FrameBuffer++;
    }

    // fill up with green rectangular
    ui32FrameBuffer = (uint32_t *)(LCD_FRAME_BUFFER_PTR + (800 * 220 * 4) );
    for( ui32Count = 0; ui32Count < (XSIZE_PHYS * 100); ui32Count++)
    {
    *ui32FrameBuffer = 0x0000FF00;
    ui32FrameBuffer++;
    }

    // fill up with blue rectangular
    ui32FrameBuffer = (uint32_t *)(LCD_FRAME_BUFFER_PTR + (800 * 380 * 4) );
    for( ui32Count = 0; ui32Count < (XSIZE_PHYS * 100); ui32Count++)
    {
    *ui32FrameBuffer = 0x00FF0000;
    ui32FrameBuffer++;
    }


    My best regards
  • Marco Crivellari said:
    after a while it will became again blank.

    Pardon - but I believe it will assist Amit (or moi) if you better describe, "after a while."

    Are you continuing to write to the panel during this, "while?"   Do you clear the screen (CLS)?

    What constitutes a, "while?"  seconds, minutes, hours, days...   (all may qualify - do they not?)

    If you write a stable image - and then do nothing futher - will the display still, "become blank?"   Have you (really) tested under this condition?

    Are you - in addition to the LCD - making other accesses to the EPI after a stable display image is presented?   Have you tried halting these - in case these prove the culprit?

  • Hi,

    The while means about 10 sec.

    The test consist of :
    - initialize the LCD controller
    - fill up the frame buffer with a well known pattern
    - then put the task on while(1);

    During the task activities I don't clear the frame buffer, just leave the content I set.

    All the code is running with TI-RTOS.

    If you need I can send you also my full code. Please let me known if I can give you in a separate context.

    Thanks in advance.
  • Marco Crivellari said:
    then put the task on while(1);

    Does that while loop continue to regularly:

    a) re-initialize the LCD Controller

    b) fill the frame buffer w/known pattern?

    or - once (a & b) complete - no further access to the Lcd occur?

    Do you access the EPI - at all - during the time period post (a & b)?

    If you regularly re-initialize & reframe the buffer - I'd look for "pointer corruption."   If "Lcd init. & buffer load" occur just once - I'd (really) monitor the EPI bus for (illegal) activity.

    While you report "blanking of the Lcd" I'd suggest that you create a regular/observable pattern of Led flashes - outside of EPI usage - to see if this (failure) condition is more general than you report...   (i.e. impacts more than just the Lcd - as presently explained - how would you/we know?)

    As always - single board anomalies eat time/money/effort!   Have you a 2nd board - and 2nd Lcd?   If so - repeat the test & report.   Hardware & interconnects always are suspect.

    Should that "10 seconds" (prior to image departure) prove precise - and repeatable - such may indicate some pointer "corrupting" - you then may restrict/better focus  your search for that 10 second illegal, "roll-over."

  • Once a) and b) complete no further access to the LCD occur.

    The SDRAM is mapped to contain .bss section and .data, i don't directly access to SDRAM in thi context.

    Currently I'm using UART access to CPU and not led flashes in order to understand if CPU get stucked.

    I'm doing a reduced version of my project in order to reproduce the issue, may I send you in a private session?

    Thanks
    MC
  • My conversation button is always enabled - you may attach via that means.

    I'm moments from a, "most of the day" tech meeting - may be awhile before I can read/review.

    You're silent as to "2nd board, 2nd display - does this behavior continue then? (I added to my earlier post)
  • Sorry for the missing part.

    I've a 2nd board (not a 2nd display) to do more test.

    I'll try and post you.

    Thanks in advance
  • You'll have to "enable conversations or private messages" which is an option during your set-up for this e2e forum.
  • Let the record show that poster successfully "conversed" and I've responded.    As this resolves I'll be sure to update so that others may benefit.