Overheating STM32H743 Processor

Hello everyone,
I’m porting PX4 firmware for my flight controller. I’ve finished porting and installed it on my flight controller. I’m experiencing some problems. The most significant is that my STM32H743 processor is overheating excessively. When I run the “top” command in the MAVLink Console, the output shows that each of the two ICM42688P IMU sensors in my controller is consuming 24% of the processing power(SPI1 and SPI4). I don’t know if this is normal, but I suspect the overheating is caused by these two IMU sensors. I’m sharing the output of the “top” command below. Thank you.


NuttShell (NSH) NuttX-11.0.0
nsh> top

 PID COMMAND                   CPU(ms) CPU(%)  USED/STACK PRIO(BASE) STATE FD
   0 Idle Task                   22959 20.797   256/  768   0 (  0)  READY  0
   1 hpwork                          0  0.000   292/ 1224 249 (249)  w:sem  0
   2 lpwork                          0  0.000   292/ 1576  50 ( 50)  w:sem  0
1179 mavlink_rcv_if0               109  0.154  1172/ 7256 175 (175)  w:sem  5
   4 wq:manager                      0  0.000   416/ 1232 255 (255)  w:sem  3
   5 wq:lp_default                 220  0.308  1268/ 3472 205 (205)  w:sem  3
1193 mavlink_shell                   0  0.000   908/ 2000 100 (100)  w:sem  3
 408 wq:SPI1                     17742 24.877  1792/ 2368 253 (253)  w:sem  3
 406 wq:hp_default                2613  3.656  1244/ 2776 237 (237)  w:sem  3
 410 wq:SPI4                     17508 24.562  1792/ 2368 250 (250)  w:sem  3
 412 wq:I2C1                        90  0.128   784/ 2312 246 (246)  w:sem  3
 555 wq:nav_and_controllers       3224  4.522  1228/ 2216 242 (242)  w:sem  3
 557 wq:rate_ctrl                 2740  3.853  2312/ 3120 255 (255)  w:sem  3
 558 wq:INS0                      3203  4.499  3812/ 5976 241 (241)  w:sem  3
 559 wq:INS1                      3109  4.366  3812/ 5976 240 (240)  w:sem  3
1191 mavlink_rcv_if1               119  0.168  1668/ 7256 175 (175)  w:sem  7
 744 commander                     348  0.488  1580/ 3192 140 (140)  w:sig  5
 893 gps                            40  0.055  1068/ 1936 205 (205)  w:sem  4
1062 mavlink_if0                   943  1.322  1716/ 2704 100 (100)  w:sig  5
1119 navigator                      69  0.095  1492/ 2168 105 (105)  w:sem 10
1169 logger                        108  0.153  2552/ 3608 230 (230)  w:sem  3
1170 log_writer_file                 0  0.000   380/ 1776  60 ( 60)  w:sem  3
1187 mavlink_if1                  3440  4.870  1780/ 2792 100 (100)  READY  7
1194 top                           392  0.556  2036/ 4056 237 (237)  RUN    3

Processes: 24 total, 3 running, 21 sleeping
CPU usage: 78.64% tasks, 0.56% sched, 20.80% idle
DMA Memory: 5120 total, 0 used 0 peak
Uptime: 106.953s total, 22.959s idle

Hey, i’m dealing with the same problem. Have you managed to solve this?

I haven’t been able to solve the overheating problem. I don’t know the exact temperature because I don’t have anything to measure it with, but I’m starting to think this temperature is normal now. Because adding two lines of code that I forgot to include during porting solved the problem of the IMUs consuming excessive processing power. Now both IMUs together are using about 6% of the CPU. Even though 67% of the processor is idle, there’s no change in temperature; it’s burning up.

What lines were they? I’m having the same problem of SPI using to much of the CPU. No idea about the temperature, sorry.

No problem. The lines I forgot to add were the following two lines in the defconfig file in the nuttx-config/nsh/ directory; adding them fixed the problem:

CONFIG_STM32H7_SPI1_DMA_BUFFER=4096
CONFIG_STM32H7_SPI4_DMA_BUFFER=1024

After this addition, the output of the “top” command is as follows:

nsh> top

PID COMMAND CPU(ms) CPU(%) USED/STACK PRIO(BASE) STATE FD
0 Idle Task 972460 67.227 256/ 768 0 ( 0) READY 0
1 hpwork 0 0.000 292/ 1224 249 (249) w:sem 0
2 lpwork 0 0.000 292/ 1576 50 ( 50) w:sem 0
1720 mavlink_rcv_if0 15 0.167 1532/ 7256 175 (175) w:sem 5
4 wq:manager 0 0.000 416/ 1232 255 (255) w:sem 4
5 wq:lp_default 27 0.304 1300/ 3472 205 (205) w:sem 4
1725 mavlink_rcv_if1 15 0.178 1716/ 7256 175 (175) w:sem 7
407 wq:SPI1 322 3.585 1792/ 2368 253 (253) w:sem 4
399 wq:hp_default 351 3.909 1244/ 2776 237 (237) w:sem 4
409 wq:SPI4 248 2.759 1792/ 2368 250 (250) w:sem 4
411 wq:I2C1 15 0.171 784/ 2312 246 (246) w:sem 4
554 wq:nav_and_controllers 179 2.029 1316/ 2216 242 (242) w:sem 4
556 wq:rate_ctrl 350 3.891 2476/ 3120 255 (255) w:sem 4
557 wq:INS0 503 5.653 3812/ 5976 241 (241) w:sem 4
630 commander 42 0.470 1524/ 3192 140 (140) w:sig 5
1230 gps 4 0.046 1068/ 1936 205 (205) w:sem 4
1481 wq:ttyS4 70 0.777 1180/ 1704 230 (230) w:sem 4
1607 mavlink_if0 120 1.322 1756/ 2704 100 (100) w:sig 5
1662 navigator 7 0.084 1532/ 2168 105 (105) w:sem 10
1712 logger 13 0.151 2552/ 3608 230 (230) w:sem 3
1713 log_writer_file 0 0.000 380/ 1776 60 ( 60) w:sem 3
1724 mavlink_if1 528 5.872 1748/ 2792 100 (100) READY 7
1727 mavlink_shell 0 0.000 908/ 2000 100 (100) w:sem 3
1731 top 50 0.573 2036/ 4056 237 (237) RUN 3

Processes: 24 total, 3 running, 21 sleeping
CPU usage: 31.95% tasks, 0.82% sched, 67.23% idle
DMA Memory: 5120 total, 0 used 0 peak
Uptime: 1404.774s total, 972.461s idle