Sida 1 av 1
flera enheter på I2C buss...
Postat: 9 december 2005, 07:53:06
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?
Postat: 9 december 2005, 08:13:39
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
Postat: 9 december 2005, 09:40:23
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...
Postat: 9 december 2005, 10:02:34
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.
Postat: 9 december 2005, 10:32:57
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?
Postat: 9 december 2005, 13:17:22
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...
Postat: 9 december 2005, 15:22:45
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...
Postat: 9 december 2005, 22:30:56
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?
Postat: 10 december 2005, 01:05:49
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"...
