Teensy 4.1 - CPU Heat Limits

Status
Not open for further replies.

cmrwash

New member
Just started testing a 4.1. I've written a very simple program to monitor CPU temp. It reports temp once a sec and blinks the LED for ,5 sec. I've always used the guideline that CPU temp should be around 40C at idle and not to exceed 80C for any period of time. Using the 4.1 and my program I have to throttle the 4.1 down to 150mhz to maintain 41-42C, at the standard 600mhz it's running at 54-55C. Second over clock (816mhz, max without cooling) results in 69-70C. During these tests the Teensy was just hanging in free air on it's usb cable in a room at 72F, restricting air flow (upside down on table) pushed the temp passed 80C.

With the test program I consider the Teensy to be all but idling but the temp has little or no room to support a task.

So
1. What is max temp for the 4.1?
2. Has anyone looked at cooling, and what where the results?

I'm going to put a heat sink on it tonight to see what happens.
 
Moving air is better - but a tape on heat sink is good for a couple of degrees - and both in combo best. More pins and soldered/plugged to something adds more ways to take heat out like moving air does from the whole of the small PCB.

There was some focus on this - but no set answer - on T_4.0 beta thread IIRC and other with FRDM board and feedback from that user - perhaps another thread.

With higher overclocking ( cooling required ) - the heat spikes faster than can be seen with sudden lockups under 60 degrees as I recall. That was with a simple heat sink and no fan driven air here. I got a desk fan but didn't do any real testing after that other than confirming text line 1 above.

Reading the NXP docs the 600 MHz is already outside ideal long life - the 528 MHz speed is the sweet long life spot they recommend for spec usage. Anything over that bumps voltages and adds heat a shortens life to some degree.

If you want to build a table of data points - maybe run through it at 528 MHz and that should be a good baseline/limit. If added cooling stays in that range then perhaps that is closer to spec for reliable long life.
 
There is a document about this:
https://www.nxp.com/docs/en/nxp/application-notes/AN12253.pdf
I'm not sure if it need a registration @ nxp, but here's a diagram:
2021-01-08 22_38_28-Start.png
 
Yes, indeed, the moral of this story is you need to do something (or simply avoid doing certain things) to keep the internal temperature below 95°C if you want the chip to last more than 3 years.
 
Wow, it looks that stepping down to 528 MHz would considerably increase the its lifespan. That joined to the lower power consumption makes me consider stepping down to 528 MHz. How remarkable would the performance reduction be? Are there any benchmarks comparing the performance at different clock speeds?
 
Very interesting discussion... I just moved my clock speed down to 528 MHz, and for my application (provides buttons and knobs for a Flex SDR radio), I see no difference in performance. Since my gizmo is not likely to be on more than a few hours a day, it should last for eons. I did not see anything in the referenced document about running at even lower speeds like 450 or 396 MHz. Any insight as to how much additional life expectancy could be expected at these or even lower clock speeds?

Len
 
My guess is that at 450 mhz, it will last a very long time. And most applications won't notice the slower speed.
 
Any insight as to how much additional life expectancy could be expected

Yes. Use the InternalTemperature library to check the actual temperature inside the chip after your program has been running for quite some time. Do this measurement with your project as it will be installed, especially if you're putting it inside a sealed enclosure.

Then look at the graph on msg #3. Find the temperature you measured on the X axis and look at where the curve intersects that X (temperature) position. If the temperature you measured is below the range of either of those curves, maybe imagine a linear extrapolation of them beyond the range the graph shows, or just know you're nowhere near the range of hot temperatures where lifespan is short.
 
In many cases, one could include this in their idle loop, which I understand reduces power/heat more than slowing down to 450 mhz.

asm volatile("wfi");
 
In many cases, one could include this in their idle loop, which I understand reduces power/heat more than slowing down to 450 mhz.

asm volatile("wfi");

Use "wfi" with testing care - unlike the T_3.x's - there are no regular waking interrupts - so it can sleep until one comes along. The normal systick interrupt doesn't trigger to WAKE like on the 3.x's

Monitoring the temp is good - but that temp sensor not necessarily reading at the peak hotspot - so as noted above when overclocking - it can pass 50 degrees then lock up. Application to normal speeds using lower voltages would not be as likely to act in that unexpected manner, but just for ref.

The lifetime wear is also related - like the speed - to the voltage needed to achieve that speed. The voltage selection used to support that speed.

See :: uint32_t set_arm_clock(uint32_t frequency) in file (arduino)\hardware\teensy\avr\cores\teensy4\clockspeed.c

It starts at 1.15 volts - bumps up to 1.25 over 528 MHz - and goes higher above that - and dips to 0.95 V under 240 MHz
Code:
...
	// compute required voltage
	uint32_t voltage = 1150; // default = 1.15V
	if (frequency > 528000000) {
		voltage = 1250; // 1.25V
#if defined(OVERCLOCK_STEPSIZE) && defined(OVERCLOCK_MAX_VOLT)
		if (frequency > 600000000) {
			voltage += ((frequency - 600000000) / OVERCLOCK_STEPSIZE) * 25;
			if (voltage > OVERCLOCK_MAX_VOLT) voltage = OVERCLOCK_MAX_VOLT;
		}
#endif
	} else if (frequency <= 24000000) {
		voltage = 950; // 0.95
	}
...
 
OK, I checked and some notes:

T4 with a small heat sink attached
It runs about 45C (far far different than the graph)
Slowing from 600 to 528 is only a couple of degrees cooler
wfi makes no difference

Code:
extern float tempmonGetTemp(void);
Serial.print( tempmonGetTemp() );
Serial.println("°C");
 
Thanks for the information. My Teensy is indeed in its permanent location in an enclosure. I will add some code to look at temps over the course of a day. Even when in heavy use, the MCU is mostly just looking for button pushes, encoder updates and ethernet traffic. I doubt it is getting too hot, but it will be interesting to see what it does.
 
Wow, it looks that stepping down to 528 MHz would considerably increase the its lifespan. That joined to the lower power consumption makes me consider stepping down to 528 MHz. How remarkable would the performance reduction be? Are there any benchmarks comparing the performance at different clock speeds?

Paul's github has benchmark repository for T_4.0 test does as posted on the product page at 600 MHz - ( they may e linked there as well? ) - you could download the sketches and run them - coremark and another encrytion calc sketch.
 
My T 4.1 has been running non-stop for a little over 10 hours in a 70-ish degree F room. At 528 MHz, it ran about 58 deg C. At 150 MHz it looked to stabilize around 54 deg C (not too scientific - I did not wait long for the temp to stabilize, I just marked the value when it stopped changing). 600 MHz took it to 61 deg C. So I think I will leave mine at 528 for this application.

The life expectancy shown in the NXP documentation talks about Junction Temperature. Is that the same as (or reasonably close to) the internal temperature returned by the library functions, or is there a factor that needs to be applied to get to Junction Temp? I am thinking of the thermocouple-on-a-heatsink problem where the thermocouple measures cooler than the actual transistor junction temp due to the effects of the heatsink and the distance from the device to the sensor.

Len

Edit - fixed spelling
 
Internal temp can rise and fall quick at times esp with OC - but stable runs can take some time to heat the whole PCB metal sandwich - and anything soldered or attached.

Wondering about junction temp and temp measure - did a brief search on phone : rs-online.com/designspark/every-wonder-how-internal-mcu-temperature-sensors-work - perhaps NXP has similar ...

There is at least one 'temp measure element' in there. Every one of the MANY transistors is composed of junctions making the MCU. It is a point measure of some area(s) on the chip. As noted above with higher OC rates the chip will shutdown before it can report a high temp reading with last showing 50-60 somewhere in long ago notes.
 
Paul's github has benchmark repository for T_4.0 test does as posted on the product page at 600 MHz - ( they may e linked there as well? ) - you could download the sketches and run them - coremark and another encrytion calc sketch.

Thank you defragster, I missed that link to the sketch. In case anyone is interested, I have run the CoreMark sketch on the Teensy 4.0 and the Teensy 3.6 at different speeds and these are the results:

Teensy benchmarks.PNG
 
Nice, BriComp. It is very interesting viewing it that way. I hadn't realized the progression in the T4 was perfectly linear.
 
Status
Not open for further replies.
Back
Top