Christopher Jakubiec | 21 May 23:04 2004
Picon

I2C Noise

All,

Has anyone encountered problems with EMI/noise issues on I2C wires and/or
busses?  We use industry standard I2C to interface with our bulk 208V/48V
AC/DC power supplies.  We are observing instances where control and status
signals (connected via I2C) for the AC/DC power supplies appear to be intermittently
in the wrong state.  I believe that we are currently running the I2C clock signal at
100MHz, and our wire lengths are significant on the order of 2-3ft.

Thanks,

Chris Jakubiec
Sun Microsystems
------------------------------------------------------------------
To unsubscribe from si-list:
si-list-request@... with 'unsubscribe' in the Subject field

or to administer your membership from a web page, go to:
http://www.freelists.org/webpage/si-list

For help:
si-list-request@... with 'help' in the Subject field

List FAQ wiki page is located at:
                http://si-list.org/wiki/wiki.pl?Si-List_FAQ

List technical documents are available at:
                http://www.si-list.org

List archives are viewable at:     
(Continue reading)

steve weir | 21 May 23:59 2004
Picon

Re: I2C Noise

Chris,

I2C is a very high impedance bus, typically 4700 ohms pull-up.  I think you 
mean 100Kbps, the legacy mode.  It is easy to mess I2C up with grounding 
issues.  The states that you are referring to are probably being conveyed 
via IPMB over I2C or similar.  There are several things that can go wrong:

1) Incorrect grounding is fouling basic I2C signaling.
2) Noise coupling is fouling I2C signaling.
3) Voltage translation issues.  The original I2C bus was 5V TTL.  Mixed 
voltages can also cause grief, as can hot swap.

Check 1 and 2 with any of the many I2C analyzers available, or just put a 
scope on the SCL line in infinite persistance.

4) An aberrant device is violating I2C bus negotiation contending with the 
actual master and fouling SCL, SDA or both..

5) Your misbehaving peripheral is a poor implementation of I2C and/or 
whatever protocol you may be running on top of it.  Some devices do not 
implement the timing as per the spec.  This can be particularly true of 
microcontrollers that do not include dedicated I2C hardware.  But even a 
number that do violate the specs, or rely on careful programming to comply.

I would start by looking at the SCL line with a decent digital scope 
first.  If you don't find your problem there it is time to look for mixed 
voltage and/or hot-swap issues.  If you get all that worked out, then I 
would move up to the link layer and see if you are a victim of some bad 
firmware.

(Continue reading)

Christopher Jakubiec | 22 May 00:24 2004
Picon

Re: I2C Noise

Steve,

Thanks for your insight.  Yes, I meant to state 100kHz instead of 100mHz.

I think that we might be dealing with item 2 (noise
coupling) as you described below.  We have 3 AC/DC power supplies that each
operate on dual power grids for redundancy purposes.  Each power supply has 2
sets of I2C wires connected to it, one for each power grid.  I believe that each
set consists of SCL, SDA, VDD, VSS.  At one point in the system all 6 sets of I2C
wires are bundled together.  

On a system that was failing fairly consistently, we
went in and seperated the cumulative bundle into individual sets by physical distance.
We have not seen the failure replicate since.  I don't believe that the orginal wire
routing included any special shielding.  I can confirm with a digital scope per your
suggestion.

-Chris

steve weir wrote:
> 
> Chris,
> 
> I2C is a very high impedance bus, typically 4700 ohms pull-up.  I think you
> mean 100Kbps, the legacy mode.  It is easy to mess I2C up with grounding
> issues.  The states that you are referring to are probably being conveyed
> via IPMB over I2C or similar.  There are several things that can go wrong:
> 
> 1) Incorrect grounding is fouling basic I2C signaling.
> 2) Noise coupling is fouling I2C signaling.
(Continue reading)

steve weir | 22 May 01:53 2004
Picon

Re: I2C Noise

Chris, from your description, it does sound like you are suffering from 
crosstalk.  I2C devices are supposed to debounce both SCL and SDA in the 
100KHz mode, and so even with a lot of crosstalk, you should not have seen 
errors.  Unfortunately, there is a lot of silicon that violates the spec.
Regards,

Steve
At 03:24 PM 5/21/2004 -0700, Christopher Jakubiec wrote:
>Steve,
>
>Thanks for your insight.  Yes, I meant to state 100kHz instead of 100mHz.
>
>I think that we might be dealing with item 2 (noise
>coupling) as you described below.  We have 3 AC/DC power supplies that each
>operate on dual power grids for redundancy purposes.  Each power supply has 2
>sets of I2C wires connected to it, one for each power grid.  I believe 
>that each
>set consists of SCL, SDA, VDD, VSS.  At one point in the system all 6 sets 
>of I2C
>wires are bundled together.
>
>On a system that was failing fairly consistently, we
>went in and seperated the cumulative bundle into individual sets by 
>physical distance.
>We have not seen the failure replicate since.  I don't believe that the 
>orginal wire
>routing included any special shielding.  I can confirm with a digital 
>scope per your
>suggestion.
>
(Continue reading)

k EPD | 22 May 22:30 2004
Picon

Re: I2C Noise


I^2 requires a 1.6k pullup , does you circuitry have that?     Also I would
like to agree with a x-talk problem with other lines , check you frequency
and you coupling to you clock or data line for the i^2C buss.... 

Keith Kowal 781-593-0199 epd2001usa@...[1] [2]   >From: steve weir
<weirsp@...> >Reply-To:
weirsp@... >To:
Christopher.Jakubiec@... >CC:
si-list@... >Subject: [SI-LIST]
Re: I2C Noise >Date: Fri, 21 May 2004 16:53:15 -0700 >>Chris, from your
description, it does sound like you are suffering from >crosstalk. I2C
devices are supposed to debounce both SCL and SDA in the >100KHz mode, and
soeven with a lot of crosstalk, you should not have seen >errors.
Unfortunately, there is a lot of silicon that violates the spec. >Regards,
>>>Steve >At 03:24 PM 5/21/2004 -0700, Christopher Jakubiec wrote: >>Steve,
>>>>Thanks for your insight. Yes, I meant to state 100kHz instead of 100mHz.
>>>>I think that we might be dealing with item 2 (noise >>coupling) as you
described below. We have 3 AC/DC power supplies that each >>operate on dual
power grids for redundancy purposes. Each power supply has 2 >>sets of I2C
wires connected to it, one for each power grid. I believe >>that each >>set
consists of SCL, SDA, VDD, VSS. At one point in the system all 6 sets >>of
I2C >>wires are bundled together. >>>>On a system that was failing fairly
consistently, we >>went in and seperated the cumulative bundle into
individual sets by >>physical distance. >>We have not seen the failure
replicate since. I don't believe that the >>orginal wire >>routing included
any special shielding. I can confirm with a digital >>scope per your
>>suggestion. >>>>-Chris >>>>>>steve weir wrote: >>>>>>Chris, >>>>>>I2C is a
very high impedance bus, typically 4700 ohms pull-up. I think you >>>mean
100Kbps, the legacy mode. It is easy to mess I2C up with grounding
(Continue reading)

Chris McGrath | 24 May 17:32 2004

Re: I2C Noise

IIC does not cite a specific pullup value but rather a range of values
that includes 4.7k.  We have found that an ideal value depends on the
chips that you use, but 4.7k worked fine for us on some designs.

> -----Original Message-----
> From: k EPD [mailto:epd2001usa@...]=20
> Sent: Saturday, May 22, 2004 4:31 PM
> To: weirsp@...; Christopher.Jakubiec@...
> Cc: si-list@...
> Subject: [SI-LIST] Re: I2C Noise
>=20
>=20
> =20
> I^2 requires a 1.6k pullup , does you circuitry have that?   =20
>  Also I would
> like to agree with a x-talk problem with other lines , check=20
> you frequency and you coupling to you clock or data line for=20
> the i^2C buss....=20
>=20
>=20
>=20
>=20
> Keith Kowal 781-593-0199 epd2001usa@...[1] [2]  =20
> >From: steve weir
> <weirsp@...> >Reply-To:
weirsp@... >To:=20
> Christopher.Jakubiec@... >CC: si-list@...=20
> >Subject: [SI-LIST]
> Re: I2C Noise >Date: Fri, 21 May 2004 16:53:15 -0700 >>Chris,=20
> from your description, it does sound like you are suffering=20
(Continue reading)

V S | 24 May 20:12 2004
Picon

Re: I2C Noise

I2C specification says that the maximum sink current
can not exceed 300mA. Assuming 3.3V supply that gives
a MINIMUM value of pull up resistor to be R = 3.3 V /
300mA = 1.1 k.

If you keep R less than 1.1k , you are likely to cause
current flow more than than the recommended 300mA that
could possibly damage device.

As far as th,e that quesstion of what exactly should
be the pull up value, we need to consider the total
loading capacitance of the Bus. I2C says that the
total loading capacitance not exceed 400 pf. That
include trace and the device capacitance. Let us
design with the worst case loading capacitance of
400pf , the RC time constant of 400pf x 2k = 800ns.
This figure has to be compared to the CLK period of
10000 ns for a 100 KHz I2C frequency.

From the timing point of view, it is better if we have
a faster rising edge. This means that we should have
RC as small as possible and that makes us choose low R
value. 

But we also see that 800ns is very small as compared
to 10000 ns, so we may increase the value of R to 4.7
k that makes RC to 1680ns for 400 pf capacitive
loading.

If particular cicuit has very few devices on the bus
(Continue reading)

steve weir | 24 May 20:27 2004
Picon

Re: I2C Noise

VK, you slipped a couple of decimal points on the current rating=20
there.  The spec is 3.0mA, not 300mA.

More capacitance favors lower resistance, not higher.  The minimum=20
resistance and required Tr/Tf ( 250ns in standard mode ) dictate the=20
maximum tolerable capacitance. The only reasons that I know of to use=20
higher value resistors than the minimum allowed are:

1) Reduce power consumption in low power systems.
2) Multiple pull-ups in systems with mixed voltages, and/or FRUs.

Steve.
At 11:12 AM 5/24/2004 -0700, V S wrote:
>I2C specification says that the maximum sink current
>can not exceed 300mA. Assuming 3.3V supply that gives
>a MINIMUM value of pull up resistor to be R =3D 3.3 V /
>300mA =3D 1.1 k.
>
>If you keep R less than 1.1k , you are likely to cause
>current flow more than than the recommended 300mA that
>could possibly damage device.
>
>As far as th,e that quesstion of what exactly should
>be the pull up value, we need to consider the total
>loading capacitance of the Bus. I2C says that the
>total loading capacitance not exceed 400 pf. That
>include trace and the device capacitance. Let us
>design with the worst case loading capacitance of
>400pf , the RC time constant of 400pf x 2k =3D 800ns.
>This figure has to be compared to the CLK period of
(Continue reading)

Tom Dagostino | 24 May 20:34 2004

Re: I2C Noise

R = 3.3 V / 300mA = 11 Ohms not 1.1 k.

Tom Dagostino
Teraspeed Consulting Group LLC
503-430-1065
tom@...
www.teraspeed.com

-----Original Message-----
From: si-list-bounce@...
[mailto:si-list-bounce@...]On Behalf Of V S
Sent: Monday, May 24, 2004 11:12 AM
To: si-list@...
Subject: [SI-LIST] Re: I2C Noise

I2C specification says that the maximum sink current
can not exceed 300mA. Assuming 3.3V supply that gives
a MINIMUM value of pull up resistor to be R = 3.3 V /
300mA = 1.1 k.

If you keep R less than 1.1k , you are likely to cause
current flow more than than the recommended 300mA that
could possibly damage device.

As far as th,e that quesstion of what exactly should
be the pull up value, we need to consider the total
loading capacitance of the Bus. I2C says that the
total loading capacitance not exceed 400 pf. That
include trace and the device capacitance. Let us
design with the worst case loading capacitance of
(Continue reading)


Gmane