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.

TMS320F28377S: Cold Temperature Operation

Part Number: TMS320F28377S
Other Parts Discussed in Thread: C2000WARE

This is continuation of the problem we discussed under thread 

e2e.ti.com/.../3284749

Since the last posting we have built new control boards but we still have the same problem described in the thread above, where MCU would stop operating at around -18°C. Following troubleshooting was done to try and determine the root cause of the problem:

We proceeded to test a couple of new boards with emulator connected while running the boards inside the chamber at low temperatures. The MCU TMS320F28377S was loaded with a test application that was created based on the c2000\C2000Ware_3_03_00_00\device_support\f2837xs\examples\cpu1\launchxl_f28377s application. The changes were made to the clock setup to use external 20MHz clock oscillator, GPIO initialization, using the SCI port A for the console port. Another change is that the GPIO107 and 152 are used to control the two LEDs (the TI example was using GPIO12 and 13). 

This application provides a "heart beat" signal at GPIO109 which toggles at 200ms intervals. While running the test, we captured oscilloscope traces of the GPIO109 output and 20MHz external clock oscillator signal at X1 (G19). We noticed that for both boards we tested, at around -18°C chamber temperature the "heart beat" signal changes from 200ms to 8s toggling period with no noticeable change in the external clock oscillator. In addition a CLOCK Fail Interrupt Flag (CLOCKFAIL bit) was set in NMIFLG byte of NMI Interrupt Registers even though external clock oscillator frequency was stable at 20MHz.

We can share the test application and captured oscilloscope traces to help in troubleshooting.

Igor Rudic

  • Igor,

                  I suggest we simplify the test case run on the device to one that merely outputs SYSCLKOUT to XCLKOUT. i.e. we route the system clock to the XCLKOUT pin. Nothing more. 

    From the datasheet:

    External clock output. This pin outputs a divided-down version of a chosen clock signal from within the device. The clock signal is chosen using the

    CLKSRCCTL3.XCLKOUTSEL bit field while the divide ratio is chosen using the XCLKOUTDIVSEL.XCLKOUTDIV bit field. 

    From the TRM:

    It is sometimes necessary to observe a clock directly for debug and testing purposes. The external clock output (XCLKOUT) feature supports this by connecting a clock to an external pin, GPIO73. The available clock sources are PLLSYSCLK, PLLRAWCLK, CPU1.SYSCLK, AUXPLLRAWCLK, INTOSC1, and INTOSC2. To use XCLKOUT, first select the clock source via the CLKSRCCTL3 register. Next, select the desired output divider via the XCLKOUTDIVSEL register. Finally, connect GPIO73 to mux channel 3 using the GPIO configuration registers. 

    Considering it is possible to route different clocks from within the device to the XCLKOUT pin, we should be able to determine which clock stage suffers at low temperature. It is evident that your code is still executing, albeit at a much lower frequency. It is also evident that your external oscillator is not impacted in any way, so I suspect some issue along the clock path.

  • Hareesh,

    This is what we did so far:

    TEST 1

    • Run the application with our standard configuration where external 20MHz oscillator clock is used at X1 pin to generate 200MHz PLLSYSCLK.
    • PLLSYSCLK was divided by 8 and routed as 25MHz signal to XCLKOUT (GPIO73)  
    • We had oscilloscope probes on both X1 and XCLKOUT (GPIO73)
    • As the chamber temperature was being reduced we observed that at around -18°C the XCLKOUT (GPIO73) signal frequency changed from 25MHz down to 374kHz within 4ms. Blue trace below is external clock signal, while pink trace is XCLKOUT (GPIO73).

    • CLOCKFAIL flag was set in NMIFLG register

    TEST 2

    • Run the application with internal clock used to generate 190MHz PLLSYSCLK.
    • PLLSYSCLK was divided by 8 and routed as 23.75MHz signal to XCLKOUT (GPIO73) 
    • We had oscilloscope probe on XCLKOUT (GPIO73) and GPIO109 (TP93) which is a "hart beat" 2.5Hz signal that our application generates.

    • We were able to run down to below -30°C without any change to the XCLKOUT (GPIO73) signal frequency.

    What do you think is going on in the first test described above? Anny comments would be appreciated.

    Thanks,

    Igor

  • Igor,

              So if you limit the PLLSYSCLK to 190 MHz, device appears to work fine to -30’C, but running at 200 MHz shows an issue around -18’C?

     

    Could you repeat the experiment with INTOSC1 as the clock source?

     

    BTW, the figures didn’t come through in your previous post. Please re-post or put them in a file and attach the file.

  • Hareesh,

    I have attached a PDF file of my previous posting that contains all of the missing figures. As you will see, while running on external 20MHz clock and with PLLSYSCLK set at 200MHz, we were experiencing issues while operating at low temperatures (around -18°C).

    When we changed to INTOSC2 our PLLSYSCLK was set to 190MHz because of the MCU limitation (If INTOSC1 or INTOSC2 is used as the clock source, then the maximum frequency is 194 MHz). We did not limit the PLLSYSCLK to 190MHz while running from external 20MHz clock. 

    As this issue is holding off our mass production, and since refactoring our code to use internal clock with 194MHz limitation is not an option, I would appreciate a response that would be your best guess as to what would be causing the cold temperature operation issue that I described.

    Thanks,

    Igor

    TMS320F28377S Cold Temperature Operation.pdf

  • Can you try these experiments:

    1. Run device at 190 MHz with external 20 MHz clock
    2. Run device at 200 MHz with INTOSC2

    I am trying to understand if the issue is one of external Vs internal clock source (or) the max value of SYSCLKOUT. 

    These devices are designed/tested for -40'C operation, so what you are seeing intrigues me. If we are unable to zero in on the issue, you may need to send a few failing devices for analysis.

  • Hi Hareesh,

    Using our test application (GPIO73 frequency = PLLSYSCLK / 8.) I was able to confirm following today:

    1. Operating at PLLSYSCLK=190MHz using INTOSC1 - no issues down to -30°C verified by observing GPIO73 oscillating at 23.75MHz
    2. Operating at PLLSYSCLK=193.75MHz using INTOSC2  -no issues down to -30°C verified by observing GPIO73 oscillating at 24.22MHz
    3. Operating at PLLSYSCLK=200MHz using INTOSC2 - no issues down to -30°C verified by observing GPIO73 oscillating at 25MHz
    4. Operating at PLLSYSCLK=200MHz using EXTERNAL 20MHz oscillator - GPIO73 frequency dropped from 25MHz down to 625kHz at around -10°C
    5. Operating at PLLSYSCLK=190MHz using EXTERNAL 20MHz oscillator - GPIO73 frequency dropped from 23.75MHz down to 625kHz at around -10°C

    Looking at the TMS320F2837xS Microcontrollers Technical Reference Manual (SPRUHX5G, August 2014–Revised September 2019) when operating with external oscillator it seems that at some low temperature (with some board to board variations starting from -10°C to -20°C) a missing system clock is detected and system clocks get connected to INTOSC1.

    3.7.1.2 Backup Internal Oscillator (INTOSC1)
    The device also includes a redundant on-chip 10 MHz oscillator (INTOSC1). INTOSC1 is a backup clock source that normally only clocks the watchdog timers and missing clock detection circuit (MCD). If MCD is enabled and a missing system clock is detected, the system PLL is bypassed and all system clocks are connected to INTOSC1 automatically. INTOSC1 may also be manually selected as the system and auxiliary clock source for debug purposes.

    As I mentioned in one of the previous posts, we were monitoring external oscillator connecting to X1 and we did not see any evidence of oscillator failing at low temperatures - we observed stable 20MHz oscillations down to -30°C.

    I would like to send a couple of boards to you for analysis. Please let me know how  to proceed.

    Thanks,

    Igor Rudić

    P.S. code snippet from our basic test application

    #ifdef _LAUNCHXL_F28377S
    InitSysPll(XTAL_OSC,IMULT_40,FMULT_0,PLLCLK_BY_2);
    #else
    // External oscillator 200 MHz 
    InitSysPll(XTAL_OSC,IMULT_20,FMULT_0,PLLCLK_BY_2);
    // External oscillator 190 MHz 
    // InitSysPll(XTAL_OSC,IMULT_19,FMULT_0,PLLCLK_BY_2);
    // Internal oscillator 1 @ 190 MHz 
    // InitSysPll(INT_OSC1,IMULT_38,FMULT_0,PLLCLK_BY_2);
    // Internal oscillator 2 PLL @ 193.75 MHz 
    // InitSysPll(INT_OSC2,IMULT_38,FMULT_0pt75,PLLCLK_BY_2);
    // Internal oscillator 2 PLL @ 200 MHz 
    // InitSysPll(INT_OSC2,IMULT_40,FMULT_0,PLLCLK_BY_2);
    #endif

  • Igor,

    You will need to de-solder the devices and ship them. Please contact the distributor for the return process. Please send a friendship request to me, if there are details you'd like to share offline.