EEPROM SERIALI IN I2C BUS.
Transcript
EEPROM SERIALI IN I2C BUS.
Corso di BASCOM AVR - ( 3 0 ) Corso Teorico/Pratico di programmazione in BASCOM AVR. Autore: DAMINO Salvatore. EEPROM SERIALI IN I2C BUS. Tra i dispositivi più utilizzati, nelle applicazioni Embedded, spiccano le EEPROM Seriali. Questi dispositivi sono disponibili con diverse capacità di memorizzazione, contenitori e soprattutto con vari, e differenti, Protocolli di Comunicazione. In questo capitolo ci occuperemo di illustrare il Protocollo I2C BUS. Marchio I2C BUS. Le EEPROM sono dei dispositivi di Memoria, Non Volatile, vale a dire che mantengono le informazioni anche in assenza di alimentazione. Questi dispositivi possono essere Scritti un numero molto alto di volte e possono essere Letti infinitamente come delle normali RAM. Le operazioni di gestione sono definite da precise regole che sono, qui di seguito, illustrate. L'architettura interna è esplitcitata dal seguente Schema che descrive i vari blocchi logici che la compongono. Per avera una visione più chiara, e dettagliata, Vi consigliamo vivamente di studiare lo specifico Data Sheet del componente e sperimentare gli esempi proposti. 174 PRO T O COL L O SERI A L E I 2 C BUS. I2C, acronimo di Inter Integrated Circuit (pronuncia i-quadro-ci o i-due-ci) , è un sistema di Comunicazione Seriale Bifilare utilizzato tra circuiti integrati. Il BUS è stato sviluppato dalla Philips nel 1 9 8 2 e, dopo la realizzazione di centinaia di componenti e sistemi negli anni ' 8 0, nel 1 9 9 2 è stato rilasciata la prima versione del Protocollo. Esso ha subìto diversi aggiornamenti ed ha generato BUS simili, uno dei quali (SM BUS) per motivi squisitamente commerciali di brevetto Intel, nel 1995. Il BUS I2C e' composto da 2 linee chiamate SDA (Dati) e SCL (Clock) , entrambe del tipo a collettore aperto. La linea SDA e' di tipo bidirezionale, e permette lo scambio dei dati tra i dispositivi I2C collegati, mentre la linea SCL e' unidirezionale e serve come Clock per sincronizzare la comunicazione. Questo BUS, che e' stato ideato dalla Philips, e' utilizzato da diverse tipologie di dispositivi utilizzati anche in molte apparecchiature commerciali. Molto diffuse sono, ad esempio, le EEPROM seriali della famiglia 24Cxx. La comunicazione con un componente I2C e' caratterizzata da alcune fasi che sono sempre uguali per qualsiasi dispositivo. L'inizio e la fine della comunicazione I2C vengono determinati inviando nel BUS gli impulsi di START e di STOP ottenuti mediante una particolare sequenza di stati logici nelle linee SDA e SCL. START e STOP sul BUS. In condizioni di riposo le linee SDA e SCL sono mantenute a livello logico 1. La condizione di START si ha quando la linea SDA passa da 1 a 0 mentre SCL si mantiene a livello 1. La condizione di STOP invece si ha quando la linea SDA passa da 0 a 1 mentre SCL si trova a livello 1. Segnali SCL ed SDA Durante START e STOP. 175 Dopo aver inviato la sequenza di Start, il livello logico della linea SDA viene ritenuto valido e viene letto dal dispositivo I2C quando SCL e' a livello 1, mentre quando SCL e' a livello 0 ogni cambiamento dello stato di SDA e' ininfluente. Trasmissione dei Dati sul BUS. Dopo la sequenza di start, ogni dato da inviare o ricevere dal BUS I2C e' composto da 8 bit (cioe' un byte), piu' un nono bit di ACK utile per controllare se la comunicazione ha avuto buon esito. Ecco un esempio di trasmissione di 2 bytes: Segnali I2C BUS Durante la Comunicazione. Come si puo' vedere, va inviato prima il bit piu' significativo MSB. In corrispondenza di ogni bit va inviato un impulso di clock sulla linea SCL. Il nono bitdefinito ACK ha normalmente un livello 0 e viene generato dal dispositivo che ha ricevuto il Dato. Il livello 1 sul nono bit viene definito NAK e segnala l'ultimo byte comunicato, un errore, la mancanza del dispositivo I2C, ecc. 176 Indirizzamento dei Dispositivi sul BUS. Come accade per tutti i BUS anche per I2C si possono collegare diversi dispositivi sulle linee SCL ed SDA. Nelle comunicazioni il primo byte trasmesso coincide sempre con lo SLAVE ADDRESS, ovvero, l'indirizzo del dispositivo interessato dalla comunicazione appena iniziata. Ogni dispositivo I2C ha un proprio SLAVE ADDRESS univoco, e descritto nel Data Sheet, composto da 7 bit più l'ottavo (LSB) che seleziona la Direzione della comunicazione tra Lettura e Scrittura (R/W). Schema a Blocchi della EEPROM Seriale, in I2C BUS, AT24C08. 177 Molti dispositivi hanno uno SLAVE ADDRESS parzialmente modificabile, via hardware, con lo stato dei segnali An. In questo modo sullo stesso BUS possono essere collegati anche più dispositivi dello stesso tipo come, ad esempio, fino a 2 dispositivi EEPROM tipo 24C08 oppure 4 dispositivi tipo 24C04. La comunicazione I2C BUS può essere gestita da qualsiasi microcontrollore che disponga di almeno 2 linee di I/O di cui una Bidirezionale e l’altra può essere di sola uscita. Grazie ad apposite Istruzioni del BASCOM, tali linee generano le operazioni fondamentali della comunicazione, che può quindi avvenire ad alto livello. Ogni coppia di linee del Mini Modulo può essere usata come interfaccia I2C BUS. Per convenzione, e per comatibilità tra i Pin-Out dei vari Mini Moduli, sono stati scelti, e canonizzati nei Fogli Tecnici, quelli indicati nei seguenti schemi. Gli schemi sono riferiti all'utilizzo del Mini Modulo montato sulla scheda di test GMM TST3 e collegata, tramite il connettore CN3, alla circuiteria sperimentale esterna. 178 Esempio.051. Gestione R/W EEPROM Seriale AT24C08 a Byte. Definizioni aggiunte: Nessuna Dichiarazioni aggiunte: Nessuna Istruzioni aggiunte: CONFIG SCL ; CONFIG SDA ; I2CINIT ; I2CSTART ; I2CWBYTE ; I2CRBYTE ; I2CSTOP. Operatori aggiunti: Nessuno Programma di Esempio.051 del corso BASCOM AVR. Programma di prova e gestione EEPROM in I2C BUS AT24C08. Schema applicativo della EEPROM seriale AT24C08. 179 Schedina sperimentale, su Millefori, di EEPROM seriale in I2C BUS. Questo programma esegue le operazioni fondamentali sul componente con un'interfaccia I2C BUS Software. Esso interagisce con l'utente, tramite una Console Seriale dotata di monitor e tastiera, con un protocollo fisico costante a 19.200 Baud, 8 Bit x chr, 1 Stop bit, Nessuna Parità. 180 Connessione tra lo Zoccolo Z2 ed il Connettore CN3 su GMM TST3. Questa console può coincidere con un sistema in grado di gestire una comunicazione seriale in RS 2 3 2. Al fine di semplificarne l'uso si può usare un PC dotato di una linea COMx, che esegue un programma di Emulazione Terminale come HYPERTERMINAL o l'omonima modalità offerta dal BASCOM AVR (vedere Configurazioni IDE) . Il programma funziona solo se la GMM AM08 è montata sullo zoccolo Z2 della GMM TST3!! 181 Esempio.052. Messaggi da Console. Gestione R/W EEPROM Seriale AT24C08 con 20 Caratteri Massimi Rappresentandoli su Definizioni aggiunte: Nessuna Dichiarazioni aggiunte: Nessuna Istruzioni aggiunte: Nessuna Operatori aggiunti: Nessuno Programma di Esempio.052 del corso BASCOM AVR. Programma di Lettura e Scrittura messaggi su EEPROM in I2C BUS AT24C08. Esegue le operazioni fondamentali sul componente con un'interfaccia in I2C BUS software ed interagendo con l'utente tramite una Console Seriale dotata di monitor e tastiera, con un protocollo fisico costante a 19.200 Baud, 8 Bit x chr, 1 Stop bit, Nessuna Parità. Questa console può coincidere con un sistema in grado di gestire una comunicazione seriale in RS 2 3 2. Al fine di semplificarne l'uso si può usare un PC dotato di una linea COMx, che esegue un programma di Emulazione Terminale come HYPERTERMINAL o l'omonima modalità offerta dal BASCOM AVR (vedere Configurazioni IDE) . Il programma funziona solo se la GMM AM08 è montata sullo zoccolo Z2 della GMM TST3!! 182