Differenze tra le versioni di "Collegare dispositivi I2C"
Riga 52: | Riga 52: | ||
* IRQ (indicato con I sul circuito stampato), serve per segnali di interruzione, per applicazioni evolute si puo' collegare a un gpio libero per fare in modo che l'unita' I<sup>2</sup>C ''attiri l'attenzione'' del Raspberry PI nel caso di un evento. Per ora si puo' lasciare scollegato. | * IRQ (indicato con I sul circuito stampato), serve per segnali di interruzione, per applicazioni evolute si puo' collegare a un gpio libero per fare in modo che l'unita' I<sup>2</sup>C ''attiri l'attenzione'' del Raspberry PI nel caso di un evento. Per ora si puo' lasciare scollegato. | ||
− | '''NOTA IMPORTANTE: I<sup>2</sup>C e' uno standard di segnalazione (protocollo di comunicazione liv. 1 e 2) ma non stabilisce la tensione di lavoro. Esistono schede (e.g. per il vecchio arduino) che funzionano a 5V. | + | '''NOTA IMPORTANTE: I<sup>2</sup>C e' uno standard di segnalazione (protocollo di comunicazione liv. 1 e 2) ma non stabilisce la tensione di lavoro. Esistono schede (e.g. per il vecchio arduino) che funzionano a 5V.''' |
− | NON SI POSSONO COLLEGARE AL RASPBERRY PI se non tramite un circuito di conversione della tensione di segnalazione. Attaccate solo circuiti che usano I<sup>2</sup>C a 3.3v altrimenti potete danneggiare il vostro Raspberry PI''' | + | '''NON SI POSSONO COLLEGARE AL RASPBERRY PI se non tramite un circuito di conversione della tensione di segnalazione. Attaccate solo circuiti che usano I<sup>2</sup>C a 3.3v altrimenti potete danneggiare il vostro Raspberry PI''' |
+ | |||
Piu' schede I<sup>2</sup>C possono essere collegate in parallelo. Occorre fare due considerazioni: | Piu' schede I<sup>2</sup>C possono essere collegate in parallelo. Occorre fare due considerazioni: | ||
* Se volete usare il pin IRQ, quello deve essere portato a un GPIO diverso per ogni scheda | * Se volete usare il pin IRQ, quello deve essere portato a un GPIO diverso per ogni scheda | ||
* Se mettete molti integrati attacati al bus I<sup>2</sup>C la corrente fornita dal Raspberry PI potrebbe non essere sufficiente, occorre studiare un circuito alternativo per l'alimentazione. | * Se mettete molti integrati attacati al bus I<sup>2</sup>C la corrente fornita dal Raspberry PI potrebbe non essere sufficiente, occorre studiare un circuito alternativo per l'alimentazione. | ||
Se per esempio mettete opportuni ponticelli | Se per esempio mettete opportuni ponticelli |
Versione delle 11:30, 3 mar 2013
I2C e' un bus composto da due fili (oltre il filo di massa): il filo dati e il filo clock. Possiamo dire che I2C e' una rete per circuiti integrati.
Il nostro Raspberry PI ha due bus I2C, uno e' disponibile sul pettine di contatti per i nostri giochi.
Fra la revisione A e la revisione B del Raspberry PI hanno invertito i bus:
- Nella revisione A: il bus 0 e' per le sperimentazioni.
- Nella revisione B: il bus 1 e' per le sperimentazioni (il bus 0 sarebbe disponibile sul bus P5, occorre saldare un pettine per i contatti).
Il mio consiglio per fare esperimenti sul bus (o sui bus) I2C e' di installare il pacchetto con gli strumenti (tool) per I2C.
sudo apt-get install i2c-tools
Occorre poi caricare i moduli per usare I2C a livello utente:
$ sudo bash # modprobe i2c_dev # modprobe i2c_bcm2708
Se tutto va bene si puo' usare il comando i2cdetect per controllare le unita' collegate:
# i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
(per le schede rev.A usare -y 0 al posto di -y 1 in tutti i comandi da qui in poi).
Il sistema non vede nessun integrato collegato al bus, infatti non abbiamo ancora collegato nulla.
A questo punto basta collegare gli integrati I2C in modo che:
- Il pin di massa dell'integrato sia attaccato alla massa del Raspberry PI (Pin. 6)
- Il pin di alimentazione sia collegato a +3.3v (Pin. 1 del Raspberry PI o in qualche modo sia alimentato a 3.3v)
- Il pin SDA (dati) dell'integrato sia collegato al pin 3
- Il pin SCK (clock) dell'integrato sia collegato al pin 5.
E' comodo collegare per esempio le schede di JeeLabs in questo modo:
- PWR (indicato con P sul circuito stampato) al PIN 2 del Raspberry PI, +5v
- DIO (indicato con D sul circuito stampato, per le unita' I2C e' SDA) al PIN 3 del Raspberry PI
- GND (indicato con G sul circuito stampato) e' la massa, collegatela al PIN 6
- +3v (indicato con + sul circuito stampato),e' la tensione 3.3v, va collegata al PIN 1
- AIO (indicato con A sul circuito stampato, per le unita' I2C e' SCK) al PIN 5 del Raspberry PI
- IRQ (indicato con I sul circuito stampato), serve per segnali di interruzione, per applicazioni evolute si puo' collegare a un gpio libero per fare in modo che l'unita' I2C attiri l'attenzione del Raspberry PI nel caso di un evento. Per ora si puo' lasciare scollegato.
NOTA IMPORTANTE: I2C e' uno standard di segnalazione (protocollo di comunicazione liv. 1 e 2) ma non stabilisce la tensione di lavoro. Esistono schede (e.g. per il vecchio arduino) che funzionano a 5V. NON SI POSSONO COLLEGARE AL RASPBERRY PI se non tramite un circuito di conversione della tensione di segnalazione. Attaccate solo circuiti che usano I2C a 3.3v altrimenti potete danneggiare il vostro Raspberry PI
Piu' schede I2C possono essere collegate in parallelo. Occorre fare due considerazioni:
- Se volete usare il pin IRQ, quello deve essere portato a un GPIO diverso per ogni scheda
- Se mettete molti integrati attacati al bus I2C la corrente fornita dal Raspberry PI potrebbe non essere sufficiente, occorre studiare un circuito alternativo per l'alimentazione.
Se per esempio mettete opportuni ponticelli