i.MX53 I2C. Can the device pins supply the I2C standard current?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

i.MX53 I2C. Can the device pins supply the I2C standard current?

3,351 Views
TomE
Specialist II

We have an application with the i.MX53 we're using that needs "as high a speed as possible" over I2C. Both ends of the link (MCF5235 and i.MX53) can be programmed with high speed clocks, but the limiting factor is the rise time of the open-drain I2C bus. That means we need the pullup resistors to be as low as possible, and that is limited by the driver current. The MCF5325 end will sink 5mA (or maybe 25mA, the Data Sheet is a bit confusing).

At the very least we'd like to run at the "I2C Standard" level, which requires the SDC and SCL pins be able to sink 3.0mA.

So the i.MX can sink???

I've looked through the 170 page i.MX53 Data Sheet, and there's no "maximum pin current" specification for the GPIO pins.


The only specification I can find is:

4.3.1 General Purpose I/O (GPIO) DC Parameters

Parameter                   Symbol Test Conditions  Min          Typ Max Unit

High-level output voltage    Voh   Iout = -0.8 mA   OVDD - 0.15   —   —    V

Low-level output voltage     Vol   Iout =  0.8 mA    —            —   0.15 V

That's a lot less than 3mA. If we have to use pullups for that current our speed drops to 1/4 of what we were hoping for.


Do the pins have an undocumented "maximum current" that lets them at least meet the I2C specification?

Tom


Labels (1)
Tags (1)
0 Kudos
Reply
7 Replies

2,423 Views
TomE
Specialist II

I asked our CPU board supplier about this and they asked Freescale.

They noted that the Freescale Reference Design has 4k7 pullups on the I2C pins, which meets the 0.8mA specification, but is miles away from the standard I2C specification.


Freescale got back to them rapidly with the following answer:

1.
Values of load current in the Datasheet relate to some typical 
configurations, in particular - in order to guarantee specified 
output voltages. For more accurate (application depended)
estimations IBIS models should be applied.

I managed to find the 776,000 line IBIS file and opened it with Wordpad, not the best tool for the job.

So instead of the question "what's the maximum pin current" taking a minute to answer, it has taken hours and hours.

Here are the results extracted from the IBIS file.

For one of the I2C Pins (I2C-2 SCL, which is GPIO_4), and which

defaults to "High Drive":

GPIO_4        uhvio

[Model Selector] uhvio              

uhvio_iods0hvf  UHVIO, 3.3V, Low Drive

uhvio_iods1hvf  UHVIO, 3.3V, Medium Drive

uhvio_iods2hvf  UHVIO, 3.3V, High Drive

[Model]  uhvio_iods2hvf

| iods2: I/O model - high drive strength

| hvf:  high voltage

...

[Voltage Range]        3.3000V           3.0000V             3.6000V

[Pulldown]

|Voltage   I(typ)              I(min)              I(max)

...

  -0.19    -12.2959mA        -8.2441mA           -16.6348mA

  -0.08    -5.1214mA         -3.3983mA           -6.9954mA

  0.03    1.8799mA          1.2340mA            2.5917mA

  0.14    8.4088mA          5.4631mA            11.6855mA

  0.25    14.3088mA         9.2041mA            20.0270mA

  0.36    19.4973mA         12.4231mA           27.4560mA

  0.47    23.8753mA         15.0837mA           33.7604mA

[Model]  uhvio_iods0hvf

[Pulldown]

  0.14    2.8408mA          1.8389mA            3.9678mA

[Model]  uhvio_iods1hvf

[Pulldown]

  0.14    5.6403mA          3.6582mA            7.8569mA

That gives a minimum of 5.46mA at 0.14V when set to "High Drive" which is 10 times the Data Sheet specification of 0.8mA at 0.15V. 0.8mA is only 44% of the minimum "Low Drive" setting.

So it isn't at all obvious where Freescale got their "0.8mA" figure from. That figure is somewhere between misleading and wrong.

[Model]  uhvio_iods1hvf

[Pulldown]

  0.14    5.6403mA          3.6582mA            7.8569mA


That gives a minimum of 5.46mA at 0.14V when set to the power-up default for this pin of "High Drive". That value is 10 times the Data Sheet specification of 0.8mA at 0.15V. So maybe it is meant to show the "Low Drive" figure? But 0.8mA is only 44% of the minimum "Low Drive" setting.

It isn't at all obvious where Freescale got their "0.8mA" figure from.

The GPIO Output Voltages and currents are also highly dependant on the Drive Settings. The minimum current at the three drive levels at 0.14V is 1.8, 3.6 and 5.5mA. It would help a lot if this was detailed in the Data Sheet.

Tom

0 Kudos
Reply

2,423 Views
Yuri
NXP Employee
NXP Employee

Just to clarify : the question “what's the maximum pin current ?” – strictly speaking – is not
fully correct, since we have volt - ampere curve and the current depends on external load / impedance.
Theoretically maximum current may be taken for short circuit to GND or VCC, but usually this scheme
is not recommended to avoid chip damage.

0 Kudos
Reply

2,423 Views
TomE
Specialist II

> If you must use at least 3mA, and don't mind power consumption

There is no power consumption when the I2C isn't transmitting. These buses are usually idle most of the time so that is seldom a consideration.


> the current depends on external load / impedance.


The "external load impedance" is a simple resistor that is selected to make the combination of required speed and system bus capacitance function with plenty of margin. Then it is simply ohms law.


The resistor can't be smaller than the "maximum pin load" of the weakest device on the bus.


This is normally CLEARLY spelled out in the Data Sheet. For the i.MX this is not-very-clearly listed as "0.8mA" which falls way short of the I2C bus's standard 3mA.


But after spending hours and hours, and inspecting an ISIS model I see that figure is both simplistic, misleading and wrong, and the chip can support the I2C standard requirement.


> Theoretically maximum current may be taken for short circuit to

> GND or VCC, but usually this scheme is not recommended to avoid chip damage.


Which is why I expect sensible values in the Data Sheet that I'm not meant to exceed. I don't expect to have to run both the full ISIS model and a full chip thermal model to answer this simple question.


Tom


0 Kudos
Reply

2,423 Views
Yuri
NXP Employee
NXP Employee

> ... the chip can support the I2C standard requirement. ...

Correct.

0 Kudos
Reply

2,421 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hello,Tom,

     I2C interface on i.mx53 SOC is Open Drain , The working current is determined by pull-up resistors and voltage. Normally, If you want I2C to work at higher speed, smaller pull-up resistors should be selected. For example, I2C runs at100K speed, you can used 3.3V+4.7K(2.2K) , 1.8V+4.7K(2.2K),

     So the current is adjustable according to speed.

Regards,

Weidong

0 Kudos
Reply

2,421 Views
TomE
Specialist II

> So the current is adjustable according to speed.

But the maximum current can't be more than what Freescale specifies for the pin.


Which should be in the Data Sheet. The only value in there is 0.8mA, which corresponds to the 4k7 resistor value you mention.

But I2C specifies 3mA minimum, which is about 950 ohms. And 6mA for "high speed" and 20mA for the "ultra high speed".

As I've just posted, the IBIS model for that pin gives a typical current 10 times HIGHER than the value in the data sheet. Even the minimum low-drive current is more than double the data sheet value.

Tom

0 Kudos
Reply

2,421 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hi,Tom,

      I2C module, 3.3V + 4.7K and 1.8V+4.7k has been validated on many Evaluation boards. If you must use at least 3mA, and don't mind power consumption You can use smaller pull-up resistors. such as 3.3V+1K.

weidong

0 Kudos
Reply