Capitolo.030

Transcript

Capitolo.030
Corso di BASCOM 8051 - (Capitolo 3 0 )
Corso Teorico/Pratico di programmazione in BASCOM 8 0 5 1 .
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.
170
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 Durata START e STOP.
171
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 bit definito 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.
172
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.
173
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.
174
Esempio.051. Gestione R/W EEPROM Seriale AT24C08 a Byte.
Definizioni aggiunte:
Nessuna
Dichiarazioni aggiunte:
Nessuna
Istruzioni aggiunte:
CONFIG SCL; CONFIG SDA ; I2CSTART ; I2CWBYTE ; I2CRBYTE ; I2CSTOP.
Operatori aggiunti:
Nessuno
Programma di Esempio.051 del corso BASCOM 8051.
Programma di prova e gestione EEPROM in I2C BUS AT24C08.
Schema applicativo della EEPROM seriale AT24C08.
175
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à.
176
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 8 0 5 1
(vedere Configurazioni IDE) .
Il programma funziona solo se la GMM 5 1 1 5 è montata sullo zoccolo Z2 della
GMM TST3!!
177
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 8051.
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 8 0 5 1
(vedere Configurazioni IDE) .
Il programma funziona solo se la GMM 5 1 1 5 è montata sullo zoccolo Z2 della
GMM TST3!!
178