TotalPhase-Blog-Erlebniswelten

Indirizzamento slave I2C a 7 bit, 8 bit e 10 bit

Spesso c'è molta incertezza sugli indirizzi slave da utilizzare per comunicare con un dispositivo slave I2C. Purtroppo, gran parte di questa confusione è dovuta al fatto che i diversi fornitori seguono convenzioni di indirizzamento slave differenti. 

Lo scopo di questo articolo è quello di chiarire lo standard di indirizzo slave utilizzato da tutti i prodotti Total Phase e di aiutare gli sviluppatori a determinare quale indirizzo slave utilizzare.

La specifica I2C di NXP (ex Philips) è specificata  per vari schemi di indirizzamento slave. La modalità predefinita del bus I2C utilizza un indirizzamento a 7 bit. L'indirizzamento a 10 bit è stato aggiunto successivamente come estensione della modalità standard.

indirizzamento a 7 bit

Con l'indirizzamento a 7 bit, l'indirizzo dello slave viene trasmesso nel primo byte dopo la condizione di avvio. I primi sette bit del byte includono l'indirizzo dello slave. L'ottavo bit è il flag di lettura/scrittura, dove 0 indica una scrittura e 1 una lettura.

slave-address-with-totalphase-figure1

indirizzamento a 7 bit: le specifiche del bus I2C specificano che nella modalità standard I2C, l'indirizzo dello slave è lungo 7 bit
l'indirizzo dello slave è di 7 bit, seguito dal bit di lettura/scrittura.

Tutti i prodotti Total Phase I2C seguono questa convenzione standard. L'indirizzo dello slave utilizzato deve essere lungo solo i sette bit superiori. Il software Aardvark I2C/SPI Host Adapter aggiunge automaticamente il bit di lettura/scrittura corretto a seconda della transazione in corso. Nell'analizzatore di protocollo Beagle I2C/SPI, l'indirizzo dello slave e il tipo di transazione sono visualizzati in due colonne diverse.

Indirizzi riservati

La specifica I2C ha riservato due serie di indirizzi a 8 bit, 1111XXX e 0000XXX. Questi indirizzi sono utilizzati per scopi speciali. La seguente tabella è tratta dalle specifiche I2C (2000).

Indirizzo dello slaveBit di lettura/scritturaBit Descrizione
000 00000Indirizzo generale di interrogazione
000 00001Byte di avvio (*1)
000 0001XIndirizzo CBUS (*2) 
000 0010XRiservato per un diverso formato di bus(*3)
000 0011XRiservato per uso futuro
000 01XXXModalità Hs Codice master
111 10XXXindirizzamento slave a 10 bit
111 11XXXRiservato per uso futuro

(*1) Nessun dispositivo può confermare quando riceve il byte START.

(*2) L'indirizzo CBUS è stato riservato per consentire la combinazione di dispositivi compatibili con il CBUS e con il bus I2C nello stesso sistema. I dispositivi compatibili con il bus I2C non possono rispondere alla ricezione di questo indirizzo.

(*3) L'indirizzo riservato a un altro formato di bus è stato incluso per mescolare I2C e altri protocolli. Solo i dispositivi compatibili con il bus I2C che possono lavorare con tali formati e protocolli possono rispondere a questo indirizzo.

indirizzi a 8 bit

Alcuni fornitori forniscono erroneamente indirizzi a 8 bit, che contengono il bit di lettura/scrittura. Puoi capire se questo è il caso se viene fornito un indirizzo per scrivere sull'unità slave e un altro per leggere dallo slave. In questo caso, utilizza solo i sette bit superiori dell'indirizzo.

Totalphase-slave-address-fig2

Alcuni fornitori offrono due indirizzi slave a 8 bit errati per la loro unità, uno per scrivere sull'unità e uno per leggere dall'unità. Tuttavia, questo numero a 8 bit codifica l'indirizzo slave a 7 bit e il bit di lettura/scrittura. Poiché i prodotti Total Phase utilizzano un indirizzamento a 7 bit, è importante utilizzare solo i 7 bit superiori dell'indirizzo come indirizzo slave.

 

Un altro modo per determinare se un produttore utilizza indirizzi a 8 bit anziché a 7 bit è verificare se l'indirizzo slave rientra nell'intervallo corretto. Tutti gli indirizzi a 7 bit devono essere maggiori di 0x07 e minori di 0x78 (120). Se l'indirizzo dello slave non rientra in questo intervallo, probabilmente il produttore ha specificato un indirizzo a 8 bit. 

totalphase-slave-address-fig3

Gamma di indirizzi slave a 7 bit validi. L'intervallo di indirizzi slave a 7 bit validi è delimitato da due blocchi di indirizzi riservati a ciascuna estremità dell'intervallo. Gli indirizzi slave validi sono maggiori di 0x07 e minori di 0x78.

indirizzamento a 10 bit

Uno dei motivi per cui Total Phase ha deciso di utilizzare l'indirizzamento a 7 bit per tutti i suoi prodotti è stato quello di garantire che l'indirizzamento a 10 bit potesse essere gestito correttamente. L'indirizzamento a 10 bit è stato progettato per essere compatibile con quello a 7 bit, consentendo agli sviluppatori di combinare due tipi di dispositivi su un unico bus. Quando si comunica con un dispositivo indirizzato a 10 bit, viene utilizzato l'indirizzo appositamente riservato per indicare che si sta utilizzando l'indirizzamento a 10 bit.

Totalphase-slave-address-10-bit

indirizzamento a 10 bit. Con l'indirizzamento a 10 bit, l'indirizzo dello slave viene inviato nei primi due byte. Il primo byte inizia con l'indirizzo speciale riservato 1111 0XX, che indica che viene utilizzato l'indirizzamento a 10 bit. I 10 bit dell'indirizzo sono codificati negli ultimi 2 bit del primo byte e negli 8 bit del secondo byte. L'ottavo bit del primo byte contiene il flag di lettura/scrittura come nel caso dell'indirizzamento a 7 bit.

 

Se viene specificato un indirizzo a 10 bit quando si utilizza l'adattatore host Aardvark I2C / SPI, il software garantisce l'invio dei bit corretti. Lo sviluppatore non deve adottare alcuna misura particolare per inviare i dati dell'indirizzo corretto. L'analizzatore di protocollo Beagle I2C / SPI rileva automaticamente gli indirizzi slave a 10 bit nei dati acquisiti e visualizza le informazioni in modo corretto

Strumenti di sviluppo I2C

Scheda host I2C/SPI di AardvarkScheda host I2C/SPI di Aardvark
Scheda host I2C/SPI di Aardvark
TP240141
L'adattatore host Aardvark I2C/SPI è uno strumento innovativo da utilizzare con i sistemi bus I2C e SPI.

309,00 €*
Beagle I2C/SPI Protokoll Analyzer - Total Phase
Analizzatore di protocollo Beagle I2C/SPI
TP320121
L'analizzatore di protocollo Beagle I2C/SPI è un adattatore host per bus I2C e SPI veloce e potente via USB

369,00 €*
Piattaforma universale I2C/ SPI/ eSPI Promira
TP500110-S
La piattaforma universale I2C/SPI/eSPI di Promira può essere utilizzata per un'ampia gamma di applicazioni

Varianti da 900,00 €*
1.060,00 €*