Author Topic: Reduce I2C power consumption  (Read 3095 times)

0 Members and 1 Guest are viewing this topic.

Offline slugrustleTopic starter

  • Frequent Contributor
  • **
  • Posts: 278
  • Country: us
Reduce I2C power consumption
« on: October 21, 2018, 05:13:41 pm »
I had the (probably old) idea to reduce the power consumption of an I2C bus by actively driving the high side of the pullup resistors using output pins on the MCU that serves as the master on the bus. Separate input pins are used to read the low side of the pullup resistors. See the attached diagram.

During a master read sequence, the SDA pullup resistor would be kept high. When checking for clock stretching, the SCL pullup resistor would be kept high. Otherwise, the high side of these pullup resistors would be driven by the desired bus signal.

Does anyone see problems with this scheme? Of course the fall times would be longer unless the input pins were switched between input mode and output low mode. In either case, I would bit bang this implementation and would adjust timings to meet the I2C spec across worst-case MCU oscillator tolerance.

Edit: switching compression settings on attachment.
« Last Edit: October 21, 2018, 05:15:38 pm by slugrustle »
 

Offline T3sl4co1l

  • Super Contributor
  • ***
  • Posts: 21686
  • Country: us
  • Expert, Analog Electronics, PCB Layout, EMC
    • Seven Transistor Labs
Re: Reduce I2C power consumption
« Reply #1 on: October 21, 2018, 05:18:31 pm »
Idle condition is normally high; what difference would this make?

Tim
Seven Transistor Labs, LLC
Electronic design, from concept to prototype.
Bringing a project to life?  Send me a message!
 

Offline slugrustleTopic starter

  • Frequent Contributor
  • **
  • Posts: 278
  • Country: us
Re: Reduce I2C power consumption
« Reply #2 on: October 21, 2018, 05:25:17 pm »
The idea is that the waveforms look the same at the slave SDA and SCL pins, as well as at the master SDAi and SCLi pins. Instead of tying the pullup resistors directly to the rail, SCLo would go low during the low part of a clock pulse, and SDAo would go low for a low signal during a master write. This removes the cost of pulling 1mA or so through the pullup resistors in these situations.
 

Offline malagas_on_fire

  • Frequent Contributor
  • **
  • Posts: 591
  • Country: pt
  • Kernel Panic
    • Malagas Lair
Re: Reduce I2C power consumption
« Reply #3 on: October 21, 2018, 05:56:39 pm »
If one can make knowledge flow than it will go from negative to positve , for real
 

Offline slugrustleTopic starter

  • Frequent Contributor
  • **
  • Posts: 278
  • Country: us
Re: Reduce I2C power consumption
« Reply #4 on: March 01, 2020, 10:03:22 pm »
I did try this and was able to successfully control a Microchip MCP4551 digital potentiometer from a Holtek HT48R003 MCU. I connected SCL directly between the two chips since the MCP4551 does not clock stretch.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf