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.

TM4C123GH6PM: Possibility of TM4C123GH6PM Corrupt During GPIO Operation

Part Number: TM4C123GH6PM
Other Parts Discussed in Thread: DRV8811

Hello, 

I'm new here so first let me introduce the background of this issue.

  • I need to perform some test with the product.
  • This product needs to drive 3 motors. (Not the same time)
  • U1 Which is TM4C123GH6PM use to control by sending PWM signal to motor drive IC (DRV8811).
  • While starting Motor test sequence the unit will not respond and after taking the unit out it cannot be re-programmed also 
    CAN communication will be lost even after power sequence.
  • Note that this design is use since 2018 and no issues. But this issue was started to happen on TM4C123G with marking "26C3D6W". 
    Which is June of 2022, and this issue is continue since then.
  • First, I suspect the test system and have measure supply voltage and connection which everything is ok.
  • Next is checking test sequence which is also ok. and I also try to unlock the microcontroller using LM Flash Programmer and nothing happen.
  • Now we're suspect the TM4C batch and firmware that another team is using.

So, Now I'm in middle of investigations . and see Sysctl_API document. Document mention that needs to take 5 Clock cycles after enable the GPIO to avoid bus fault.
 https://software-dl.ti.com/simplelink/esd/simplelink_msp432e4_sdk/2.30.00.14/docs/driverlib/msp432e4/html/group__sysctl__api.html#ga2fbae61db465e1d861a62785d28e3ad6

Here are the code sample

	ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
	ROM_GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);
	ROM_GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, 0x04);

	ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
	ROM_GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_6);
	ROM_GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_6 , 0x00);

	ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
	ROM_GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_7);

Which is likely to be exact 5 5lock cycles. refer from this site "Programming the Cortex-M4 in Assembly - Circuit Cellar" and "Cortex-M4 Technical Reference Manual r0p0 (arm.com)"

Is this possible to cause TM4C to spoil?

Next, I just want an information that is anything of TM4C123GH6PM change in batch "26C3D6W" and after?

  • Hi,

    • I need to perform some test with the product.
    • This product needs to drive 3 motors. (Not the same time)
    • U1 Which is TM4C123GH6PM use to control by sending PWM signal to motor drive IC (DRV8811).
    • While starting Motor test sequence the unit will not respond and after taking the unit out it cannot be re-programmed also 
      CAN communication will be lost even after power sequence.
    • Note that this design is use since 2018 and no issues. But this issue was started to happen on TM4C123G with marking "26C3D6W". 
      Which is June of 2022, and this issue is continue since then.
    • First, I suspect the test system and have measure supply voltage and connection which everything is ok.
    • Next is checking test sequence which is also ok. and I also try to unlock the microcontroller using LM Flash Programmer and nothing happen.
    • Now we're suspect the TM4C batch and firmware that another team is using.

    Thank you for providing the information. If you are running the same software since 2018 and it didn't have issue until 2022 then I don't think the software is the issue. Please confirm if you have changed the firmware. 

    I will suggest you perform a ABA swap test. Swap out the failure until to a known good board. If the failure continues to the good board then it is a MCU issue. In addition, swap in a known good unit to the failure board. Will the good unit continue to work? If it continues to work, then we can rule out a board level issue. 

    Here are the code sample

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
    ROM_GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);
    ROM_GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3, 0x04);
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
    ROM_GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_6);
    ROM_GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_6 , 0x00);
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
    ROM_GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_7);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    I don't see an issue with your code. 

    Next, I just want an information that is anything of TM4C123GH6PM change in batch "26C3D6W" and after?

    There is no change to the silicon. The marking indicates it was manufactured in 2016 February.  

    Once you have performed ABA swap test and proved that it is a MCU issue, please contact your local TI sales office for customer return process. 

  • Hi Charles Thanks for the answers. 

    For the firmware, there is no changed.
    I will perform ABA test and get back to you again.