ArduPilot / ardupilot

ArduPlane, ArduCopter, ArduRover, ArduSub source
http://ardupilot.org/
GNU General Public License v3.0
10.27k stars 16.88k forks source link

H743 I2C bug #25508

Open geofrancis opened 8 months ago

geofrancis commented 8 months ago

I have been upgrading a boat from a Omnibusf4pro to a Matek H743 Wlite. but I have ran into an issue with the i2c bus where setting an address of 0x70 on my sr04 sonar adapter (default for maxbotix i2c sonar) causing the i2c bus to lock up and stop detecting devices.

the sonar was working on the omnibusf4pro before I changed over the controller so I thought I might have damaged something. I originally thought it was a wiring issue, so tested the adapter on a different H743 and it had the same result I thought the atmega168 might have got damaged somehow, so I swapped it for another 168 and same result. I thought it could be an issue with the 168, so I changed it for a 328 and same result so just to rule out some kind of software problem, I connected yuris i2c sensor adapter that runs on a 168 with address 9 and it worked fine.

so i went and got the original 168 and tested it again with the original omnibusf4pro and it works, so now I know it's definitely not a sensor or adapter software or Arduino issue.

I tried changing the sonar adapter to the same 0x09 9 address as the sensor adapter and it shows up on the i2c scanner and i can get it to work using the lightware i2c driver set to i2c 9 so its not a hardware issue.

If I change the sonar address back to its default 0x70 112 without doing anything else it will show up for a few seconds, then the i2c bus stops until I unplug it.

The compass is connected as i2c device 13, you can see it going offline after i change the sonar adapter i2c address.

Screenshot 2023-11-10 131856

rmackay9 commented 8 months ago

Thanks for the investigation and report.

I wonder if it could be that the autopilot has another I2C device that is also using 70?

geofrancis commented 8 months ago

Thanks for the investigation and report.

I wonder if it could be that the autopilot has another I2C device that is also using 70?

as far as I know, the only other i2c device on the board is the barometer and its on i2c bus 2, 0x77/119.

Black6spdZ commented 1 month ago

any update? seeing almost the same issue.. only sensor type and address that works is maxbotixI2C on address 0x09.. nothing else works

geofrancis commented 4 weeks ago

@rmackay9 I think something is wrong with the maxbotix driver and thats causing the problems with the i2c bus, do you have a maxbotix i2c sonar you could test with?