H743 custom hardware communication issues I2C & SPI

I’m developing a new flight controller based on H743 and it works great until a strange issue happens, after power it on (it can take 2 minutes or 5 hours, really random) communication with the sensors stops, just SPI & I2C, never happened for UARTS.

Flight controller sensors specs:

  • Accels/Internal compass - MPU6000 (SPI3) & MPU9250 (SPI4)

  • GPS / External compass - Hex Here3 (USART2, I2C1)

  • Baro - DPS310 (I2C2)

  • Wifi - ESP07S (UART7)

  • Telemetry - SI4432 (SPI1)

Most of the times the error is: PreArm: Compass not healthy which refers to the compass inside Here 3 (I2C1), in this case a reboot from GCS will not solve the problem, I have to unplug the battery for few seconds and reconnect it. If this happens, the I2C LEDs inside Here3 stuck too.

Other times it can be PreArm: Gyros not healthy which refers to MPU6000 (SPI3), in this case a simple reboot from GCS will solve the problem.

It never happened when it was armed, but maybe i didn’t tested it enough. Tried multiple versions of Arducopter 4.0, 4.1, 4.2 and with all of them i had the same issue. I suspect it to be a DMA issue or maybe a mistake in my hwdef file.

log_9_2022-4-2-23-22-09.bin

hwdef.dat

Do you have any ideas what it can be ?

I have some new stats, after they got stuck ( PreArm: Compass not healthy) i downloaded the real-time monitoring files using mavproxy here are the results:

Tasks

Threads

DMA

MPU6000 was removed from hwdef file this time, but I2C still have problems … Do you think it can be a hardware issue ?