cancel
Showing results for 
Search instead for 
Did you mean: 

I have a project using STM32H745 processor that has network connectivity. All works awesome until the processor temp reaches about 120 F, then I start to lose connectivity. I am using RMII interface and again works perfectly at high bandwidth when < 120F

DPitt.1
Associate II

What could be the cause. I have checked the power circuitry. The rest of application still functions well. DMA, Timers, SPI, etc. Just network data is stalled. When temp goes down it resumes.

17 REPLIES 17

I will look into the VCAP capacitors and stability. The RMII pins are set to alternative selection. Not sure what you mean by tweak GPIO_MODE. If you mean to set all other output pins to input to reduce power load I have done that with a simple network test application that only runs network stack. The problem still exists.

> Not sure what you mean by tweak GPIO_MODE.

Sorry, I meant GPIO_OSPEEDR.

JW

I don't use the 'H7 but it appears it has a more complex output vs. power supply/temperature compensation than the other STM32, so you may want to look at that, too (SYSCFG_CCCSR/SYSCFG_CCVR/SYSCFG_CCCR).

JW

waclawek.jan

You most likely solved my issue. The GPIO pins were not set to GPIO_SPEED_FREQ_VERY_HIGH. I set them to that value and was able to get communication even when temp was well over 60 C.

I cannot thank you enough for your feedback and help. The peace of mind I have at this time is wonderful. I also want to thank everyone else for your feedback and support.

Double check code in SystemClock_Config(), there is frequently a block of code that is commented out.

/*
  Note : The activation of the I/O Compensation Cell is recommended with communication  interfaces
          (GPIO, SPI, FMC, OSPI ...)  when  operating at  high frequencies (please refer to product datasheet)
          The I/O Compensation Cell activation  procedure requires :
        - The activation of the CSI clock
        - The activation of the SYSCFG clock
        - Enabling the I/O Compensation Cell : setting bit[0] of register SYSCFG_CCCSR
*/
 
  __HAL_RCC_CSI_ENABLE() ;
 
  __HAL_RCC_SYSCFG_CLK_ENABLE() ;
 
  HAL_EnableCompensationCell();

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

> - The activation of the CSI clock

Nice gotcha, to have one more clock to be easily forgotten... It *is* mentioned in description of SYSCFG_CCCSR.READY flag (which means somebody already complained), yet, characteristically, no mention of it in the dedicated 10.3.11 I/O compensation cell chapter.

Obviously, there's some crew who implement the documentation fixes, but that's different from those who write the documentation initially - and the complaints never reach them.

JW

LMI2
Lead

Maybe your CPU is broken or your board has a short.

No, this seems more like a transmission line type issue, where the slew rate or termination play a role, and the speed of the transistors changing with temperature. There are applications here where backing-off the slew rate (SPEEDR) on short signal wires, or adding series resistors can reduce ringing/reflections. I see this mostly at frequencies >33 MHz on eMMC, SDIO/SDMMC and QSPI interfaces where the lines are frequently very short and uniform.

"Temperature inversion refers to the phenomenon that for certain voltage regions transistors speed up and operate faster at a higher temperature. When the temperature increases, transistor performance is affected by two fundamental factors: carrier mobility decrease and threshold voltage reduction."

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..