I have need for an I2C output from my raspberry pi 4 (with navigator) that I can use to control and read my own hardware.
I don’t see in the documentation where there is an I2C bus output that is not being controlled by BlueOS.
Did I miss something? Or is there no available I2C busses that I can take over?
Thanks for the help,
There is no spare independent bus that is set up by default.
I2C as a protocol supports multiple hosts and multiple devices, and the Linux kernel manages transactions when multiple processes are using the same bus concurrently, so it should be possible to just use the Navigator’s exposed I2C6 ports. The main potential caveat there is that the ArduPilot firmware may try to probe your device, especially if its address matches one of a valid sensor from ArduPilot’s libraries. That probing is most likely a one-time event, but that may vary depending on the driver.
Note that if it’s necessary it’s possible to create an extra software-defined I2C bus with GPIO pins, but doing the relevant pin reconfiguring may be a bit messy. If you need to go down that approach, it would likely make the most sense to do with pins on one of the Navigator’s SERIAL ports, and then disable that port in your autopilot parameters.
Thank you, again, for the useful information.
This helps quite a bit.