I2C pullup resistors
The Expander Pi is an Analogue, Digital and RTC development Interface for the Raspberry Pi
02/10/2015
Posted by:
MhicAoidh
Looking at the schematics it seems to me that the ExpanderPi's bus, and the external connection U3, operates at 5V (the 'B' side of U7), but no pullup resistors are shown on the 5V side. This would mean I should add my own on the 5V side if I wanted to use U3 to connect another 5V I2C device. Is this correct?
The ServoPi datasheet says it has 10k resistors on the RPi (3.3V) side, but the schematic also shows resistors R1.3 & R1.4 on the 5V side. Could someone please tell me what values these are?
Thanks
02/10/2015
Posted by:
andrew
The TXS0108E level shifter IC we use on the Expander Pi includes internal pull-up resistors so there should be no need to add external resistors. The Servo Pi uses 10K pull-up resistors for both the 5V and 3.3V sides.
The Expander Pi and Servo Pi should work together on the same I2C bus. When adding extra I2C devices if they are 5V then you should be able to connect them to the SDA and SCL pins on either the Expander Pi or Servo Pi without the need for any extra pull-up resistors.
02/10/2015
Posted by:
MhicAoidh
18/01/2016
Posted by:
MhicAoidh
It all seems to work but it's kindof annoying as 0x70 conflcts with another device I'm trying use. Why should this happen?
19/01/2016
Posted by:
andrew
According to the datasheet, the 0x70 address is software programable so I will try and figure out how to turn it off and write a python script you can use.
19/01/2016
Posted by:
andrew
ServoPi GitHub Repository
There are three new functions available.
set_allcall_address(address)
enable_allcall_address()
disable_allcall_address()
I have also added a demo script called demo-setallcalladdress.py that shows you how to use the new features. You will have to run this script at start-up to disable the All Call feature as it is enabled by default and the Servo Pi does not remember the new settings when it is powered down hopefully this will help you with using the other I2C device on 0x70.
19/01/2016
Posted by:
MhicAoidh
19/01/2016
Posted by:
andrew
05/03/2017
Posted by:
MhicAoidh
05/03/2017
Posted by:
andrew
Have you tried using the level converter on the servo pi to convert the I2C bus to 5V and then connect the SDA and SCL pins on the Servo Pi to the SDA and SCL on the expander pi, so the Servo Pi is the one doing the level conversion. By using the Servo Pi for the level conversion instead of the Expander Pi you may be able to get around the problem with the TXS0108E level shifter not working with low resistance on the bus. You may find you have to remove the TXS0108E from the expander pi so it is no longer connected to the I2C bus.
05/03/2017
Posted by:
MhicAoidh
06/03/2017
Posted by:
andrew
13/03/2017
Posted by:
MhicAoidh
13/03/2017
Posted by:
andrew
22/03/2017
Posted by:
MhicAoidh
22/03/2017
Posted by:
andrew
Have you tried setting up a fresh Linux image and doing an i2cdetect using that? I had a problem last week with a Raspberry Pi where somehow the I2C bus became corrupted in Linux which caused the bus to run slowly as it was timing out every time it tried to access the bus. In the end, I had to set up a fresh install of Raspbian Linux to get it working again.
23/03/2017
Posted by:
MhicAoidh
Note: documents in Portable Document Format (PDF) require Adobe Acrobat Reader 5.0 or higher to view.
Download Adobe Acrobat Reader or other PDF reading software for your computer or mobile device.