Il protocollo I2C
La simulazione del protocollo I2C
non è direttamente supportata dai simulatori provati, cioè "PicSimulatorIde" della Oshonsoft
e "MpLab" della
Microchip.
Un oscilloscopio si rivela pertanto estremamente utile per osservare il
funzionamento del proprio lavoro, una volta che è stata assemblata la scheda.
Qui di seguito vediamo i risultati del programma di gestione dell'I2C
caricato nel PIC
Tentativo di comunicazione, senza risposta
In questa prima prova abbiamo disconnesso dal bus il dispositivo slave. Il PIC, pertanto, tenta di instaurare una comunicazione senza ottenere risposta
Si distinguono i seguenti blocchi
1 : La linea SDA che commuta da alto a basso mentre il clock è mantenuto alto è uno START-bit
2 : Vengono inviati i 7 bit di indirizzo più un ottavo bit di lettura/scrittura; la sequenza trasmessa è: 0100100-0 cioè viene indirizzato il dispositivo 0100100b in scrittura.
3 : Il PIC rilascia la linea SDA, che quindi torna alta in quanto sostenuta da una resistenza di pull-up. Il dispositivo indirizzato potrebbe rispondere forzando questa line bassa, ma ciò in questo caso non avviene!
1': Il microcontrollore invia allora un nuovo start-bit e ripete la sequenza di trasmissione.
Comunicazione con risposta del dispositivo slave
In questa immagine è possibile vedere una sequenza di trasmissione completa, avvenuta con successo.
Dopo lo Start-bit viene inviato l'indirizzo del dispositivo e il bit di scrittura; il dispositivo risponde con un "acknowledge" cioè forzando la linea SDA bassa per avvisare che è pronto ad accettare i dati in ingresso.
Successivamente vengono inviati tre sequenze di dati (o comandi) di 8 bit ciascuno, ognuno terminanti con un acknowledge del dispositivo.
Quando il terzo pacchetto di dati è stato inviato e il pic riceve l'ultimo acknowledge, invia uno Stop-bit, che corrisponde ad un fronte di salita della linea SDA mentre la linea SCL è mantenuta alta. A questo punto il bus viene rilasciato.