| Electronics > Beginners |
| i2c pull-ups current |
| (1/4) > >> |
| rookie:
I am working on a low power circuit that has two i2c devices on the bus. I was using the internal pull-ups on the mcu to communicate and that seems to be working alright. However on adding external pull-ups to my i2c bus, I observe a constant current drain. The lines are always held high, even when the device sleeps which I think might be causing this current drain. When I remove these pull-ups, the lines are disabled and only used when required, i.e. correctly. I'm puzzled because if this was a pin configuration problem, I should have seen it even when the pull-ups were absent? Why did addition of the pull-ups make such a big difference? Is this a hardware problem or can be dealt with in software(I think this should be possible). Does the slave device have any role to play here? |
| wraper:
What voltage, what pull-up resistance, what current drain? Are you sure that you are not pulling up to voltage above of MCU or any other device connected to the bus? --- Quote ---the lines are always held high --- End quote --- They are not "held" high, they are just not held low. In which case current should not flow. |
| Nerull:
I2C is idle high. The entire purpose of the pullups is to keep the line high - I2C I/O is open drain and the devices are incapable of driving the line high, only pulling it low. If current is being drawn this would indicate that the line is being driven low by a device on the line. |
| 0xdeadbeef:
I2C uses open drain outputs, i.e. there is nothing that can drive the line high other than the pullup resistors. Hence using very high ohmic resistors makes the rising edge too slow for fast clocks. E.g. TI SLVA689 I2C Bus Pullup Resistor Calculation |
| mikerj:
--- Quote from: rookie on May 28, 2019, 05:37:52 pm ---I am working on a low power circuit that has two i2c devices on the bus. I was using the internal pull-ups on the mcu to communicate and that seems to be working alright. However on adding external pull-ups to my i2c bus, I observe a constant current drain. The lines are always held high, even when the device sleeps which I think might be causing this current drain. --- End quote --- Are you trying to power down the I2C slave device? If so you will have to remove power from the pull-up resistors as well since they will cause the ESD diodes on the slave pins to conduct and will draw current. |
| Navigation |
| Message Index |
| Next page |