I2C without resistors

Here you'll find a writing about a resistor-less I2C implementation:

formatting link

As the name of the link is saying, it's a 'precharged' I2C bus.

Enjoy!

-- mmihai

Reply to
mmihai
Loading thread data ...

Cute but nasty!

Assuming your SDA line does have enough capacitance to do this, anything else that switches nearby is going to play havoc. I don't think I'd be able to sleep at night if I implemented this. I'd simply add the resistor and gets a good nights sleep!

Dave.

Reply to
David L. Jones

As I wrote, /use on your own risk/. The noise margin will be worse than a standard I2C (no secret about that) but it's up to you to decide if it's appropriate for your application.

Anyway, should you decide to use it, do some calculations for yourself: - an I/O pin capacitance in is pF range (2-20pF, depends on the package) - input current for a I/O is less than 1u (F123 has 10nA per data sheet) - the level on SDA while in HiZ has to hold long enough for you clock cycle (that's depends on your MCU speed, faster the better).

Study the spec of your devices and do the math.

-- mmihai

Reply to
mmihai

resistors are cheap.

Reply to
The Real Andy

I can't but consider it bad engineering practice. The I2C is well specified and you'd stick to it as long as possible. This type of "solution" may work in a one of a kind or small series. But even then, the price of the extra resistors outweight the risks by far. Large series will give more problems as you will get unrecognised, intermittend problems in only some of the devices. The costs will easily grow way beyond the cost of correcting the design.

petrus bitbyter

Reply to
petrus bitbyter

It is allowed that a station in the I2C bus clamps a signal to ground. If you're attempting to precharge a clamped signal, you'll create a straight short - not a too recommendable practice.

The clamping can be done on both the SCK and the SDA line.

Read the spec for details.

--

Tauno Voipio
tauno voipio (at) iki fi
Reply to
Tauno Voipio

Yes, I know.

Read the "simple bus" description form the article.

I never claimed this is better than I2C from the original spec. It is just a way to run I2C in some /special/ cases as stated in the text.

-- mmihai

Reply to
mmihai

Any slave is allowed to clamp the SCK line, so a 'special case bus' is quite useless, or at least it is not I2C anmyore. Call it then something else.

--

Tauno Voipio
tauno voipio (at) iki fi
Reply to
Tauno Voipio

It's a sub set of I2C. Being allowed does not mean it must to. Doc pointer:

formatting link
You'll find plenty of other [software] implementations which don't check if SCL is high after it is released.

One can figure out from the datasheet of the devices if handshake (i.e. clock stretching) is needed or not.

-- mmihai

Reply to
mmihai

Interesting, but why?

The two resistors necessary in I2C are cheap and small and (bonus) let the link work according to spec.

I would never do this even on a hobby project. Interesting that it can be done, although it's probably been done inadvertently anyway ;)

Cheers

PeteS

Reply to
PeteS

I think the problem is people are having trouble envisioning any case in which it makes sense to leave the resistors out.

Robert

--
Posted via a free Usenet account from http://www.teranews.com
Reply to
Robert Adsett

If you made, say, 1 billion somethings, you could save about $1,000,000

Cheers Terry

Reply to
Terry Given

Of course you won't need very many support calls or warranty claims to eat that right back up and more.

Robert

--
Posted via a free Usenet account from http://www.teranews.com
Reply to
Robert Adsett

absolutely. This is a pretty good example of a *really* terrible idea. It saves $0.002 worth of resistors, brutally violates the I2C spec, and doubtless has some interesting dynamic implications. Why stop there - why not power the I2C peripheral via SCL, SDA using its internal ESD diodes, and ensuring that there is enough bus activity to keep the supply pumped up.....

Cheers Terry

Reply to
Terry Given

Well, in the original article, he admitted that he just forgot to design them in, and didn't want to uglify the board with a couple of afterthought resistors.

I agree it's a bad idea, but he did go through all the math and engineering to see if it would work reliably enough for his purposes.

Me, I'm following a friend's advice and putting a grid of solder pads on the back of my boards to add 0603 or SOIC parts later if needed. At least they're less visible that way.

Reply to
DJ Delorie

Works a treat with CMOS logic, just keep at least one input high at all times, don't draw too much current, keep your speeds low, and don't rely on meeting the specs :->

Ick!

Dave.

Reply to
David L. Jones

Once had to add a device to such a "special". Nothing documented but "I2C". So, the bitbanging master did not look after ACKs and crashed when the clock pulse was stretched. Also bus resistance was too high as was bus capacitance. Could only survive by by adding too low pullup resistors so violating the specs a little bit more. Then added a 82B715 to isolate my own part of the bus. Which was the easy part. Programming around the other violations took some more time. So I can't but repeate it's bad engineering practice. Stick to the specs as long as you can. Preferable a little bit longer.

petrus bitbyter

Reply to
petrus bitbyter

formatting link

Very True. I get call from them every so often saying Our Battery is defective. A very common mistake does not make it acceptable.

If the manufacture changes the chips it may stop working. One brand of I2C bus monitor holds the clock on occasion.

Reply to
Neil

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.