Electronic – SMBus pull-up resistor value

i2cpicpullupresistorssmbus

Hello I need to communicate with a device using SMBus. However, I could not choose correct value for pull up resistors. Vdd is 4.9V and I use SMBus. In same conditions for I2C communications I used 2k ohm resistors and it worked, but I am not sure the proper value for SMBus. Any ideas?

In its datasheet it says this one, but I could not understand it totally. I think it says for 5 V I need 15 k resistors. However, if I use 20 k resistors with 4.9V Vdd, would it also work?

This quote is from "Application Note: Implementing The SMBus Interface For Use With Bren-Tronics Batteries":

PULL-UP REQUIREMENTS

One of the features of SMBus is its ability to interface systems with different supply voltages, through its implementation of an open-drain interface with absolute (as opposed to ratiometric, relative to the supply voltage, like I2C) high/low voltage thresholds. Vih of the SMBus interface is 2.1V; the upper bound of logic-high voltage is 5.5V – facilitating operation with 3.V/3.3V/5V logic. The pull-up devices for the open drain interface (one for each line – clock and data) are simply connected to the supply voltage in the host system.

The “letter of the law” in SMBus is that the “steady-state” output-low current (Iol) must be limited to 350 microamperes or less. This translates into pull-up resistors of 15K ohms in a 5V system, for the simplest of SMBus interfaces. However, the stray capacitances present in wiring and/or ESD/EMI-suppression devices of bus-connected devices can sometimes extend rise times beyond the 1.0 microsecond specification limit if resistive pull-ups that comply with the Iol limit are used.

There are a number of options that can be used to address these limitations.

Active pull-up devices, that provide higher dynamic current during the low-to-high transition while maintaining the steady-state limit elsewhere, can be implemented as shown in Figure 2.3 of the specification.

A simpler approach is to use lower-value resistive pull-ups, if currents higher than the Iol limit can be tolerated by ALL bus-connected devices (present and future) without violating the 0.8Vdc Vil specification limit. This is often the case, as this is a technique frequently used in commercial system designs. In this regard, Bren-Tronics batteries go beyond the specification, with the ability to sink SMBus current at levels up to 700 microamperes or more.

Best Answer

12k Ohm pull-up, let's the SMBus of a BT70791 operate fine.

I've tried with changing Pull-up voltage from 2.5V all the way to 5.5V

So as a start with only 1 battery you will get ack from SMBus slave with any voltage above 2.5V and 12Kohm pull-up resistance.(In case you are using BrenTronics) Considering they can sink 700mA or more. you can get away with an even lower Pull-up resistance and the Battery will still be able to pull the line "low".

(Ohm's law) [Voltage = OHM * Current]

or in this case [(Maximum sink current 700mA) >= Voltage/Resistance] "Less or equal to V/R".

Keep in mind the 2 cell batteries from BT has 2x SMBus. With same address (0x16) (Translated this appears as 0x0b on a packet-sniffer if you wish to watch the SCL/SDA lines)

Another TIP Keep maximum distance from Master to Slave below 50cm! the I2C line and SMBus is designed for short distance. Data Corruption or no "ACK" appears randomly if SDA/SCL lines go past maximum length of 50cm