Differential I2C Bus Extender (PCA9615) is making me cry

Hola!

Im trying to set up a long i2c bus with 6 stm32 acting as slaves and 1stm32 acting as a master.

All of them connected to a differential i2c bus using Sparkfun´s PCA9615 board

https://learn.sparkfun.com/tutorials/qw … okup-guide

The master is asking for data from each slave, it works perfectly untill i connect 4 devices and everything goes silent.

https://cdn1.imggmi.com/uploads/2019/2/ … 7-full.png

I was expecting too much deformation or noise in the i2c signal but when i check the i2c signal received by the last slave6 i get this beautiful perfect signal.

On top the i2c communication failing with 6 slaves connected

On the bottom the i2c communication working good with 3 slaves connected

https://cdn1.imggmi.com/uploads/2019/2/ … a-full.png

What is happening?

They have different addresses

If you’re using the Roger Clark based arduino core https://github.com/rogerclarkmelbourne/Arduino_STM32 then make sure it’s up to date. I recently had some multiple processor issues with I2C which fixed this. My issue caused the STM32’s to freeze up.

Also if you’re using the onReceive function, I don’t believe the STM32 code has this implemented. Not 100% sure about this though. I know the older vesion of the core I was using doesn’t support it.

Steve.