Hello, i am developing a pcb for low power purposes and want to implement a i2c Bus for data transfer of several Ics. The µC is a CC430F5137 and is located on a diffrent pcb. My main goal is to reduce energyconsumption of the i2c-bus while not sending data. I just wondered if it is possible to just enable the internatl pull-up resistors of the µC to take the bus out of service to save energy. I found this comment in the Ti forum: "While this is obvious for normal I/O, this is important if you use the I2C controller where the output drives only to GND but not to VCC (open collector). If using I2C, you cannot rely on the internal pullups (which are too weak anyway) and need external pullups." To me that means I cannot use the internal pull-ups for driving the bus. Am I right? Otherwise I thought about driving the bus by a output of the µC and external pullups and just disable this output if necessary. Any thought? Thanks in advance. Best regards knpr
When the I²C bus is idle, no output driver is active, and the pull-up resistors pull the voltages to the high level. In this state, no current flows, so there is no power consumption. You do not need to do anything to save energy. That remark on the TI forum is about making rising signal edges faster by reducing the pull-up resistance. But in the idle state, there are no edges.
thanks for the answer
Hello, I have one question left.. What happens when the µC goes to sleep or deep sleep mode. I think the Open-Drain Stage while not switch the output to high bevor going to sleep. Then there would be power consumption by the Pull- up resistors. wouldnt it? best regtards
knpr wrote: > I think the Open-Drain Stage while not switch the output to high bevor > going to sleep. Why should it? Open drain (high impedance) is perfectly fine. > Then there would be power consumption by the Pull- up resistors. How? There is power consumption only if some output actively drives the line low.