flera enheter på I2C buss...

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Seven11
Inlägg: 547
Blev medlem: 13 maj 2004, 23:43:33

flera enheter på I2C buss...

Inlägg av Seven11 »

Skulle vilja koppla min PIC16F877A till en quad 10-bit DAC DAC6573 från TI och även ett seriellt eeprom från Microchip: 24LC512 eller liknande.

Eftersom både minnet och dac:en kan anslutas via I2C så tänkte jag använda det, men jag undrar om det går att ha flera enheter på en I2C buss eller om det finns något smidigare sätt att ansluta enheterna till PIC:en?
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

7 bitar adress ger 2^7=127 möjliga olika enhter på en I2C-bus, med reservation för reserverade adresser och utökat adresseringsläge.
Källa
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Vad stog det i databladen när du kollade ?

8-pinnars seriella EEPROM brukar ha 3 adresspinnar, alltså 8 möjliga adresser.

DAC6573 har jag ingen aning om, men som sagt, databladet är säkert tydligt på denna punkt...
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Du kan ha fler olika enheter på samma I²C-bus men märk väl: OLIKA enheter.

Varje enhetstyp/fabrikat KAN ha olika adressor men t.ex. EEPROM kan har samma adress oberoende på tillverkare. Men som sodjan säger: de flesta EEPROM har "lokala" adressbitar som medger att man kan ha upp till 8 st på bussen.

Man ska även (vid "många" enheter på bussen) ha koll på strökapacitanser, pull-up motståndsvärden osv så att specifikationerna på bussen kan upprätthållas.
Seven11
Inlägg: 547
Blev medlem: 13 maj 2004, 23:43:33

Inlägg av Seven11 »

aha okey.

Icecap: finns det risk för att pull-up motstånd osv är olika för dom olika enheternera? borde inte bussen var lika för alla olika enheter?
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Pull-up'erna är ju gemensamma, vad jag menar är att om du ska dra bussen "långt" och ha "många" kretsar på den måste du kolla noga att de valda värden är rätt, är det kort och få är det mindre kritisk, mer spelrum så att säga...
Seven11
Inlägg: 547
Blev medlem: 13 maj 2004, 23:43:33

Inlägg av Seven11 »

jaså okey... men eftersom det kommer vara en "kort" buss med 2 olika komponenter så borde det ju inte vara några problem...
Seven11
Inlägg: 547
Blev medlem: 13 maj 2004, 23:43:33

Inlägg av Seven11 »

i databladet för DAC6573 står det att pull-up motsåndet ska vara: 1kohm - 10kohm och i databladet för 24LC512 står det att pull-up motståndet ska vara "typical 10 kohm for 100 KHz, 2 kohm for 400 kHz and 1 MHz"... sen står det i en exempel kod för EEPROM:et : "do not forget to connect to this point a 820 ohm pull up resistor to VCC", koden är för övrigt skriven av en Microchip ingenjör tror ja...

Hur viktigt är värdet på pull-up motståndet egentligen? Vad tycker ni jag ska välja?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Det som står i databladet för EEPROM'et verkar väll vara "fylligast".
Med dina två kretser är det säkert inte kritiskt, speciellt inte om
du inte kommer att köra nära övre hastightetsgränsen (vad den nu är).

Jag skulle välja 1-10 Kohm. :-)

Lägre I2C hastighet = högre värde = lägre strömförbrukning, vilket kan
vara intressant om det är batteridrivet...

Och när det gäller app notes och exempelkod skriven av Microchip, så är
regel nummer 1 att "den är buggig"... :-)
Skriv svar