How to use two I2C buses
Posted: Sun Oct 08, 2017 7:52 pm
I am having trouble using two I2C buses on the ESP8266, it seems the Wire library implementation prevents using two I2C buses. I have five MPR121 touch sense controllers which only allow selection of four I2C addresses hence the need for two buses.
The issue is the last bus to be started is the only one which may be read or written.
When I query the MPR121s on bus A and bus B the values for both buses will only return the bus which was started last. So if I start bus A first and bus B second I will only get values on bus B when I try reading both buses. If I swap the order of setup and start bus B first and bus A second then the values returned for queries on bus A and bus B will only be the values on bus A. I confirmed the hardware output is on the last started bus only using a scope.
Thanks for the help.
The issue is the last bus to be started is the only one which may be read or written.
When I query the MPR121s on bus A and bus B the values for both buses will only return the bus which was started last. So if I start bus A first and bus B second I will only get values on bus B when I try reading both buses. If I swap the order of setup and start bus B first and bus A second then the values returned for queries on bus A and bus B will only be the values on bus A. I confirmed the hardware output is on the last started bus only using a scope.
Thanks for the help.