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.

TM4C1297NCZAD: errata LCD#01

Part Number: TM4C1297NCZAD

According to errata LCD#01:

"Whenever a LIDD-mode DMA transaction is requested by setting the DMAEN bit of the LCD LIDD Control (LCDLIDDCTL) register, after setting the LCD DMA frame buffer n base and ceiling addresses in the LCDDMABAFB and LCDDMACAFB registers,respectively, the next attempt to access any LCD controller register causes the microcontroller and the JTAG connection to become unresponsive. A power-on reset recovers the device."

The recommended work-around is to insert code that resets the DMA engine prior to each DMA transaction and also to reconfigure the CS line as GPIO temporarily during this reset.

I am using LIDD-mode DMA transactions using API from lcd.c from TivaWare peripheral library 2.1.4 as shown below. It seems that errata LCD#01 applies. However,  I have never observed any problems with the controller becoming unresponsive when writing to the LCD. I am currently not using the recommended work-around. I have 2 questions:

1. If the errata applied to my code would I be seeing the error each time? Or can this be a dormant issue that rears its ugly head once in a blue moon? 

2. Should I apply the work-around? I'm a bit suspicious of this work-around.. why didn't it get implemented inside of lcd.c  LCDIDDDMAWrite() if it is necessary?

My code example follow:

// Send dirty rectangle row by row 

for( int y = top;  y <= bottom; y++)
{

// Point to the nex display row; 

// Set up start and length of DMA

...

         // Start DMA transfer
         uint32_t mask = (LCD_INT_EOF0 | LCD_INT_DMA_DONE);
         LCDIntClear(LCD0_BASE, mask );
         LCDIDDDMAWrite(LCD0_BASE, 0, dmaStart, dmaLength );
              
         // Wait for DMA to complete
         while ( ( LCDIntStatus(LCD0_BASE, false) & mask ) != mask ) {}
         LCDIDDDMADisable(LCD0_BASE);

}

  • Hi Silke,
    If the errata applies to your mode of operation in the application then I will strongly suggest you apply the workaround even though you have not run into the problem yet.
  • Thanks Charles.

    Do you know if the problem is reproducible? If so could you provide source code that induces this problem?

  • Hi Silke,
    Unfortunately, I don't have a testcase to reproduce the problem. The erratum was there for the past few silicon revisions. So it has been there for a while way before I started to support this MCU. My advice is still to take the workaround. Is there any issue with the workaround?
  • Hi Silke,
    A colleague of mine explained that when the DMA is enabled then certain registers for the LCD Controller cannot be accessed. These have been mentioned in the Register description. These registers are required to access the LIDD panel’s controller. So to access the LIDD panel when an active DMA has been scheduled, it is required to disable the DMA controller of the LCD by resetting it. However doing so would also reset the control pins to the LIDD panel. Hence the workaround. The workaround is not a part of TivaWare. Also as long you do not access these registers (LIDDCS0ADDR, LIDDCS0DATA, LIDDCS1ADDR and LIDDCS1DATA), there should not be an issue