I2C buss och pull up

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
sickfisher
Inlägg: 13
Blev medlem: 10 augusti 2009, 20:52:55

I2C buss och pull up

Inlägg 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
ToPNoTCH
Inlägg: 5181
Blev medlem: 21 december 2009, 17:59:48

Re: I2C buss och pull up

Inlägg 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
sickfisher
Inlägg: 13
Blev medlem: 10 augusti 2009, 20:52:55

Re: I2C buss och pull up

Inlägg 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?
Användarvisningsbild
Klas-Kenny
Inlägg: 11858
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: I2C buss och pull up

Inlägg 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.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 47138
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: I2C buss och pull up

Inlägg 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.
ToPNoTCH
Inlägg: 5181
Blev medlem: 21 december 2009, 17:59:48

Re: I2C buss och pull up

Inlägg 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:
sickfisher
Inlägg: 13
Blev medlem: 10 augusti 2009, 20:52:55

Re: I2C buss och pull up

Inlägg 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
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 47138
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: I2C buss och pull up

Inlägg av TomasL »

RTFM, LÄS STANDARDEN.
Användarvisningsbild
Klas-Kenny
Inlägg: 11858
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: I2C buss och pull up

Inlägg av Klas-Kenny »

Du kan inte ha 3,3V och 5V till att kommunicera med varandra utan någon form utav nivåkonvertering!
sickfisher
Inlägg: 13
Blev medlem: 10 augusti 2009, 20:52:55

Re: I2C buss och pull up

Inlägg av sickfisher »

Misstänkte det!

Tack för svaren!
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 47138
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: I2C buss och pull up

Inlägg 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.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 47138
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: I2C buss och pull up

Inlägg av TomasL »

Som kommentar så kör jag I2C och SPI mellan 3,3V och 5V utan problem, och utan omvandlare.
sickfisher
Inlägg: 13
Blev medlem: 10 augusti 2009, 20:52:55

Re: I2C buss och pull up

Inlägg 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!
Användarvisningsbild
jesse
Inlägg: 9241
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: I2C buss och pull up

Inlägg 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.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 47138
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: I2C buss och pull up

Inlägg 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)
Skriv svar