Sida 1 av 1

I2C buss och pull up

Postat: 9 mars 2012, 19:23:55
av sickfisher
Hej!

En i2c buss skall man ju använda pull upp. Men i min arduino klon (Olimexino-328) så är det en intern pull up redan.
Hur gör man då när man kopplar in alla dessa breakout boards som har detta integrerat? Kan man ha flera pull upp på en i2c buss?
Eller löser man det på något annat sätt?

Mvh
Patrik i Vårgårda

Re: I2C buss och pull up

Postat: 9 mars 2012, 19:32:46
av ToPNoTCH
Pullupp's i ATMEGA är rätt klen (20k eller 40k) så de flesta kör utan att bry sig och det verkar ju funka.

Om du vill göra RÄTT så kan du ju slå av de interna genom lite trixning se: här

Re: I2C buss och pull up

Postat: 9 mars 2012, 19:36:37
av sickfisher
Tja på min arduino så var jag tvungen att ha extern pull upp ändå... Men i min nya är det redan externa på kortet dessa går ju inte att slå av.
Men min fråga var: Vad händer om man har flera pull upps på en buss?

Re: I2C buss och pull up

Postat: 9 mars 2012, 19:39:01
av Klas-Kenny
Om du har flera pull-up-motstånd kommer strömmen in i utgången att vara lite större än med endast ett vid låg signal.
Men, jag har svårt att tro att det är så illa att det kan bli några problem.

Re: I2C buss och pull up

Postat: 9 mars 2012, 19:42:58
av TomasL
Läs I2C standarden och räkna, eftersom I2C behöver 5k6 eller lägre, typ, spelar "weak pullups" ingen roll.
Du kan ha dem av eller på, ju lägre PullUp resistans, ju högre hastighet ( eller snarare omväxlat, högre hastighet=kraftigare PullUp=lägre resistans), dock måste man ta hänsyn till drivförmågan hos sändaren.

Re: I2C buss och pull up

Postat: 9 mars 2012, 19:43:12
av ToPNoTCH
I första posten skrev du "intern pullupp" och sedan växlade du till "på kortet".

Hur är det egentligen ?

Sådana felskrivningar kan få oss att leda dig rakt in i den magiska röken vettu :wink:

Re: I2C buss och pull up

Postat: 9 mars 2012, 19:46:32
av sickfisher
Tack!

Ja precis men jag visste inte att processorn i sig hade pull upp. På min ny klon finns pull upp på kortet.

Nästa i2c fråga:

Om man har 3.3 och 5 volts i2c enheter på samma buss vart skall pull upp dras till? 5 eller 3.3?

Mvh
Patrik

Re: I2C buss och pull up

Postat: 9 mars 2012, 19:49:13
av TomasL
RTFM, LÄS STANDARDEN.

Re: I2C buss och pull up

Postat: 9 mars 2012, 19:50:29
av Klas-Kenny
Du kan inte ha 3,3V och 5V till att kommunicera med varandra utan någon form utav nivåkonvertering!

Re: I2C buss och pull up

Postat: 9 mars 2012, 19:52:01
av sickfisher
Misstänkte det!

Tack för svaren!

Re: I2C buss och pull up

Postat: 9 mars 2012, 19:55:04
av TomasL
Jodå det går alldeles utmärkt, om enheterna stöder det, dock fortfarande läs standarden (och databladen för kretsarna ifråga), allt står i där.

Det är fullständigt omöjligt att svara på en sådan fråga, utan att veta kopplingsschema, ingående komponenter och databladen på dessa, vilket i mitt tycke går långt över vad man kan kräva här, så LÄS DATABLADEN OCH STANDAREN, återkom om det du inte förstår.

Re: I2C buss och pull up

Postat: 9 mars 2012, 19:56:28
av TomasL
Som kommentar så kör jag I2C och SPI mellan 3,3V och 5V utan problem, och utan omvandlare.

Re: I2C buss och pull up

Postat: 9 mars 2012, 19:57:41
av sickfisher
Min fråga var av allmän karaktär inte någon "ge mig svaret på allt". Läser manualerna och när jag bli osäker frågar jag!

Tack för svaren!

Re: I2C buss och pull up

Postat: 9 mars 2012, 22:53:40
av jesse
Hur har du löst det då, Tomas?

Det är inte helt självklart för en nybörjare att hitta en lösning på detta genom att bara läsa datablad.
T.ex. är det inte säkert att hans Arduino ens stöder I2C 2.0 som tillåter 'hög' nivå ner till 2.0 volt. Så den är redan utanför 'standard'. Så det blir att fundera ut en lösning som fungerar just i hans fall.

Pull-up till 5V kräver ju att 3.3V-ingången är 5V-tolerant. Och det är ju inte säkert.
Pull-up till 3.3 volt ger i och för sig en 'etta' på en 5V CMOS-ingång, men en 'svag' sådan = störningskänslig.

Schema på grejerna skulle behövas för att kunna svara på frågan.
I värsta fall skulle man behöva en aktiv level-shifter: Application note: Level shifting techniques in I2C-bus design.

Re: I2C buss och pull up

Postat: 9 mars 2012, 23:00:26
av TomasL
Pullup till 5 v, eftersom 3,3V-kretsen är 5V tolerant, det beror på vilka kretsar man jobbar med.
Har man inte 5V-toleranta kretsar, då behöver man någon form av anpassning, och det kan vara på både sändarsidan och mottagningen.
Dock omöjligt att säga utan mer info.
Dock, I2C föreskriver OC på sändare (därav kravet på pullup)