I2C issue with multiple Jetson Nano

Hello, Nvidia team!

Our system consists of several Jetson Nano modules (with L4T 32.7.5). During the initial boot phase, all Jetson Nano modules (masters) connect to the same I2C bus and communicate with another device (slave), from which all Jetson Nano modules read simultaneously. Each Jetson Nano module is a I2C master, which causes I2C errors when accessing the same device (over the same I2C bus), sometimes performing incorrect reads and even incorrect writes (due to I2C collisions), causing everything to malfunction.

On the one hand, we cannot change anything about the device (slave) to which all the Jetson Nano modules are connected; we need to be able to find a solution to the problem by modifying the Jetson Nano modules (masters). On the other hand, it seems that multi-master I2C is not supported for the Jetson Nano. For all these reasons, we don’t know how to solve the problem, and the following questions arise:

  1. How can we solve the problem? What options do we have?
  2. We had considered managing the I2C on the Jetson Nano via GPIO. Would that be an option that could solve our problem?
  3. If using GPIO can solve our problem… what do we have to do to make it work? Would it be possible to enable GPIO use only for the initial startup phase of the device and then change it so it doesn’t use GPIO (since after that initial phase we also use the same I2C but it would then be independent of the rest of the Jetson Nano modules)?

Thank you very much!

I don’t think it’s good idea for multiple master access to the same salve device simultaneously.

Thanks for your reply!

Indeed, it might not be a good idea to have multiple master access to a same slave device, but the way it’s been developed and we can’t change it … It only uses access for small readings on the slave device…

Any ideas on how to fix this? Would using GPIO be a good option? Can the GPIO be used for the Jetson Nano’s I2C (Bus0)?

Thank you very much!

connect 1 gpio of all the masters. by default the gpio will remain low, which means i2c slave is free. If anyone wants to access the slave, pull the gpio high and check and do the access. once access done, make the pin low.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.