Nicola Amoroso - I2C 2 Il Bus I2C Il bus I2C permette una alta velocità di comunicazione in standard…

Embed Size (px)

Text of Nicola Amoroso - I2C 2 Il Bus I2C Il bus I2C permette una alta velocità di comunicazione in...

  • na_Bus I2C 1

    Corso introduttivo sui microcontrollori

    A. S. 2007 2008

    Il Bus I2CVedi anche: BUS I2C di Mauro Laurenti [http://www.Laurtec.com]

    Nicola Amorosonamoroso@mrscuole.net

    http://www.mrscuole.net/anxapic/

    http://www.mrscuole.net/anxapic/

    http://www.mrscuole.net/anxapic/

  • na_Bus I2C 2

    Il Bus I2CIl bus I2C permette una alta velocit di comunicazione in standard seriale, con due solelinee, tra pi periferiche; il protocollo di comunicazione stato introdotto dalla Philipsnel 1980 per superare le difficolt inerenti all'utilizzo di bus paralleli per lacomunicazione tra un'unit di controllo e le varie periferiche.

    Un notevole vantaggio dei dispositivi che fanno uso del bus I2C quello della lorosemplicit d'uso. Infatti tutte le regole del protocollo che bisogna rispettare per unacorretta comunicazione vengono gestite a livello hardware, dunque il progettista non sideve preoccupare di nulla.Nel corso degli anni il protocollo ha subito vari aggiornamenti verso velocit dicomunicazione pi elevate, comunque tutte le modifiche apportate hanno rispettato lacompatibilit dallalto verso il basso, cio sistemi dellultima generazione possonosempre comunicare con quelli precedenti.

    La prima versione del bus I2C permette di trasmettere fino a 100Kbit/s (modalit standard).Questa velocit stata successivamente portata a 400Kbit/s (modalit veloce).Nel 1998 la velocit stata incrementata fino a 3.4Mbit/s (modalit ad alta velocit).Non necessariamente gli integrati prodotti devono rispettare la modalit ad alta velocit.

    http://www.mrscuole.net/anxapic/

    http://www.mrscuole.net/anxapic/

    http://www.mrscuole.net/anxapic/

  • na_Bus I2C 3

    Il Bus I2C

    Le periferiche che fanno uso del bus I2C per comunicare con un'unit di controllo sono:memorie, real time clock calendar (PCF8583, DS1302), LCD, potenziometri digitali,convertitori A/D, periferiche generiche per estendere il numero degli ingressi o delleuscite (PCF8574), sensori di temperatura, controllori audio, etc .

    Un altro vantaggio di questo collegamento quello di poter aggiungere o togliere delleperiferiche dal bus senza influenzare il resto del circuito. Questo si traduce in una facilescalabilit verso l'alto sistema, ovvero si pu modificare un sistema aggiungendo nuovecaratteristiche senza dover modificare l'hardware; naturalmente il sw deve essere ingrado di riconoscere nuove perifieriche.

    La possibilit di poter collegare pi periferiche sullo stesso bus permesso anche dal bus CAN.Quest'ultimo protocollo stato ideato e introdotto da BOSCH per operare in ambienti particolarmenterumorosi e in cui si debba raggiungere un elevato grado di sicurezza nella trasmissione dati.Per tali ragioni il CAN bus ormai accettato come standard in ambito automobilistico, per mettere incomunicazione i vari dispositivi elettronici che sempre pi frequentemente vengono installati a bordo.

    http://www.mrscuole.net/anxapic/

    http://www.mrscuole.net/anxapic/

    http://www.mrscuole.net/anxapic/

  • na_Bus I2C 4

    Il Bus I2CIl Bus I2C un Bus seriale bidirezionale, solo due (pi il segnale di massa GND) sono lelinee di comunicazione che permettono i collegamenti tra i moduli o integrati differenticollegati sullo stesso Bus. Queste due linee prendono il nome di SDA (Serial Data) e SCL(Serial CLock).La linea SDA permette il trasferimento di dati (formato 8 bit), la linea SCL implementala sincronizzazione (temporizzazione) della trasmissione; entrambe le linee devonoessere connesse mediante resistenze di pull-up al positivo (+Vcc 5 V) di alimentazione.Pur essendoci pi periferiche collegate sullo stesso bus, la comunicazione avvienesempre tra due dispositivi per volta e la trasmissione dei dati pu avvenire soloquando il bus pronto (not Busy) per la comunicazione.

    Chi trasmette i dati il trasmettitore (Tx), chi invece li riceve il ricevitore (Rx);entrambe le posizioni sono intercambiabili per fasi diverse di trasmissione cio, untrasmettitore pu divenire ricevitore e un ricevitore pu essere trasmettitore.

    Nella transazione ben definito il device che inizia e termina la comunicazione, viene chiamatoMASTER (Padrone); il device che invece pu solo ricevere o trasmettere invece lo SLAVE(Schiavo).

    Non tutte le periferiche possono essere MASTER del Bus I2C (Eragionevole che un C lo sia)Sullo stesso Bus possono esserci pi MASTER, ma deve essere attivo uno solo per volta.

    http://www.mrscuole.net/anxapic/

    http://www.mrscuole.net/anxapic/

    http://www.mrscuole.net/anxapic/

  • na_Bus I2C 5

    Il Bus I2COgni periferica inserita nel bus possiede un indirizzo che la individua in modounivoco. Questo indirizzo pu essere fissato dal produttore in sede di fabbricazioneo parzialmente fissato dal progettista.L'indirizzo costituito da 7 bit nelle versioni standard o da 10 bit nelle versioni estese.Nel caso di indirizzamento a 7 bit si avrebbe potenzialmente la possibilit diindirizzare 128 periferiche mentre nel caso di 10 bit si avrebbe la possibilit diindirizzare fino a 1024 periferiche. Il numero di periferiche ora citate non sonocomunque raggiungibili dal momento che alcuni indirizzi, sono riservati per funzionispeciali.Su un bus non possono essere presenti due integrati dello stesso tipo con lostesso indirizzo.Se proprio si dovesse avere la necessit di inserire due integrati dello stesso tiposul medesimo Bus , o comunque due periferiche con il medesimo indirizzo, necessariodividere il bus in due parti, questo pu, per esempio, essere ottenuto con appositiintegrati-device tipo il PCA9544 della Philips.

    Un limite sul numero di device connessi sulla linea rappresentato dalla capacit totale della linea che non devesuperare i 400 pF altrimenti non possibile rispettare le velocit limite di trasmissione sulla linea. Il valore dellacapacit totale di linea dipende dal numero di device connessi e dalla lunghezza totale della linea stessa.

    http://www.mrscuole.net/anxapic/

    http://www.mrscuole.net/anxapic/

    http://www.mrscuole.net/anxapic/

  • na_Bus I2C 6

    Il Bus I2CAbbiamo gi accennato in precedenza che lelinee SDA e SCL devono essere implementatecon uscite open-drain o open-collectormediante una resistenza di pull-up collegata trala linea e Vcc .SDA e SCL quando non sono utilizzate nellatrasmissione, sono sempre a livello alto.

    Valori tipici per le resistenze di pull-up sonocompresi tra 1,2 K e 10 K. Il primo valore utilizzato per bus medio-veloci (400 Kb/s eoltre) mentre il secondo valore utilizzato perbus standard (100 Kb/s); in genere si utilizzanovalori resistivi intermedi tra questi due valorilimite a seconda della velocit del bus.

    Pull-Up Resistor

    Il valore corretto per le resistenze di pull-up dipende comunque oltre che dalla velocitdi trasmissione anche dalla capacit totale della linea in quanto aumentando questovalore aumenta anche il tempo di risposta (costante di tempo gruppo R-C) nellatransizione HL del segnale.

    http://www.mrscuole.net/anxapic/

    http://www.mrscuole.net/anxapic/

    http://www.mrscuole.net/anxapic/

  • na_Bus I2C 7

    Il Bus I2CCenni sul protocollo di comunicazione

    Le linee del bus sono due, la linea SCL fondamentalmente gestisce la temporizzazionedella trasmissione, la linea SDA rappresenta il collegamento per il trasferimento dati.

    Ogni bit viene trasferito per ogni impulso di clock.

    I dati sulla linea SDA devono restare stabili quando limpulso sulla linea di clock(SCL) alto, in questo caso cambiamenti di livello (transizioni) sulla linea SDAvengono interpretati come segnali di controllo.

    http://www.mrscuole.net/anxapic/

    http://www.mrscuole.net/anxapic/

    http://www.mrscuole.net/anxapic/

  • na_Bus I2C 8

    Il Bus I2CCenni sul protocollo di comunicazione: condizioni di START e STOP

    Entrambe le linee del bus SDA e SCL sono a livello alto (H) quando il bus non occupato.

    Una transizione High to Low [H L] sulla lineaSDA, quando la linea SCL High [H], definiscela condizione di START della trasmissione

    Una transizione Low to High [L H] sulla lineaSDA, quando la linea SCL High [H], definiscela condizione di STOP della trasmissione

    http://www.mrscuole.net/anxapic/

    http://www.mrscuole.net/anxapic/

    http://www.mrscuole.net/anxapic/

  • na_Bus I2C 9

    Il Bus I2CCenni sul protocollo di comunicazione: configurazione del sistema

    Una periferica che genera linformazione il trasmettitore [Tx]; una periferica chericeve linformazione il ricevitore [Rx].

    La periferica che controlla (mediante la temporizzazione) la trasmissione il MASTER;la periferica che dialoga ed controllata dal MASTER lo SLAVE.

    Vi sono periferiche che possono essere sia MASTER che SLAVE (es.microControllori) e vi sono periferiche che possono funzionare solo da SLAVE (es.memorie eeprom).

    http://www.mrscuole.net/anxapic/

    http://www.mrscuole.net/anxapic/

    http://www.mrscuole.net/anxapic/

  • na_Bus I2C 10

    Il Bus I2CCenni sul protocollo di comunicazione: indirizzo del device con cui si vuol comunicare

    Prima di trasmettere qualsiasi data sul bus bisogna definire la periferica con cui si vuol colloquiare.Lindirizzo della periferica viene inviato dal MASTER dopo la transizione di START.Il formato dellindirizzo pu essere sia a 7 bit che a 10 bit, per semplicit consideriamo ilformato a 7 bit.I 7 bit dell'indirizzo vengono inviati dal bit pi significativo al bit meno significativo. In coda a questoindirizzo viene aggiunto un bit per segnalare se il Master vuole intraprendere, con la periferica individuatada tale indirizzo, una comunicazione di scrittura o di lettura.

    periferica di indirizzo 0xC0

    C0 per scrittura sulla periferica

    C1 per lettura dalla periferica

    1 1 0 0 0 0 0 0