1 ========================== 1 ========================== 2 Introduzione a I2C e SMBus 2 Introduzione a I2C e SMBus 3 ========================== 3 ========================== 4 4 5 I²C (letteralmente "I al quadrato C" e scritt 5 I²C (letteralmente "I al quadrato C" e scritto I2C nella documentazione del 6 kernel) è un protocollo sviluppato da Philips 6 kernel) è un protocollo sviluppato da Philips. É un protocollo lento a 2 fili 7 (a velocità variabile, al massimo 400KHz), co 7 (a velocità variabile, al massimo 400KHz), con un'estensione per le velocità 8 elevate (3.4 MHz). Questo protocollo offre un 8 elevate (3.4 MHz). Questo protocollo offre un bus a basso costo per collegare 9 dispositivi di vario genere a cui si accede sp 9 dispositivi di vario genere a cui si accede sporadicamente e utilizzando 10 poca banda. Alcuni sistemi usano varianti che 10 poca banda. Alcuni sistemi usano varianti che non rispettano i requisiti 11 originali, per cui non sono indicati come I2C, 11 originali, per cui non sono indicati come I2C, ma hanno nomi diversi, per 12 esempio TWI (Interfaccia a due fili), IIC. 12 esempio TWI (Interfaccia a due fili), IIC. 13 13 14 L'ultima specifica ufficiale I2C è la `"Speci 14 L'ultima specifica ufficiale I2C è la `"Specifica I2C-bus e manuale utente" 15 (UM10204) <https://www.nxp.com/webapp/Download 15 (UM10204) <https://www.nxp.com/webapp/Download?colCode=UM10204>`_ 16 pubblicata da NXP Semiconductors. Tuttavia, è 16 pubblicata da NXP Semiconductors. Tuttavia, è necessario effettuare il login 17 al sito per accedere al PDF. Una versione prec 17 al sito per accedere al PDF. Una versione precedente della specifica 18 (revisione 6) è archiviata 18 (revisione 6) è archiviata 19 `qui <https://web.archive.org/web/202108131221 19 `qui <https://web.archive.org/web/20210813122132/ 20 https://www.nxp.com/docs/en/user-guide/UM10204 20 https://www.nxp.com/docs/en/user-guide/UM10204.pdf>`_. 21 21 22 SMBus (Bus per la gestione del sistema) si bas 22 SMBus (Bus per la gestione del sistema) si basa sul protocollo I2C ed è 23 principalmente un sottoinsieme di protocolli e 23 principalmente un sottoinsieme di protocolli e segnali I2C. Molti dispositivi 24 I2C funzioneranno su SMBus, ma alcuni protocol 24 I2C funzioneranno su SMBus, ma alcuni protocolli SMBus aggiungono semantica 25 oltre quanto richiesto da I2C. Le moderne sche 25 oltre quanto richiesto da I2C. Le moderne schede madri dei PC si affidano a 26 SMBus. I più comuni dispositivi collegati tra 26 SMBus. I più comuni dispositivi collegati tramite SMBus sono moduli RAM 27 configurati utilizzando EEPROM I2C, e circuiti 27 configurati utilizzando EEPROM I2C, e circuiti integrati di monitoraggio 28 hardware. 28 hardware. 29 29 30 Poiché SMBus è principalmente un sottoinsiem 30 Poiché SMBus è principalmente un sottoinsieme del bus I2C, 31 possiamo farne uso su molti sistemi I2C. Ci so 31 possiamo farne uso su molti sistemi I2C. Ci sono però sistemi che non 32 soddisfano i vincoli elettrici sia di SMBus ch 32 soddisfano i vincoli elettrici sia di SMBus che di I2C; e altri che non possono 33 implementare tutta la semantica o messaggi com 33 implementare tutta la semantica o messaggi comuni del protocollo SMBus. 34 34 35 35 36 Terminologia 36 Terminologia 37 ============ 37 ============ 38 38 39 Utilizzando la terminologia della documentazio 39 Utilizzando la terminologia della documentazione ufficiale, il bus I2C connette 40 uno o più circuiti integrati *master* e uno o 40 uno o più circuiti integrati *master* e uno o più circuiti integrati *slave*. 41 41 42 .. kernel-figure:: ../../../i2c/i2c_bus.svg 42 .. kernel-figure:: ../../../i2c/i2c_bus.svg 43 :alt: Un semplice bus I2C con un master 43 :alt: Un semplice bus I2C con un master e 3 slave 44 44 45 Un semplice Bus I2C 45 Un semplice Bus I2C 46 46 47 Un circuito integrato **master** è un nodo c 47 Un circuito integrato **master** è un nodo che inizia le comunicazioni con gli 48 slave. Nell'implementazione del kernel Linux à 48 slave. Nell'implementazione del kernel Linux è chiamato **adattatore** o bus. I 49 driver degli adattatori si trovano nella sotto 49 driver degli adattatori si trovano nella sottocartella ``drivers/i2c/busses/``. 50 50 51 Un **algoritmo** contiene codice generico che 51 Un **algoritmo** contiene codice generico che può essere utilizzato per 52 implementare una intera classe di adattatori I 52 implementare una intera classe di adattatori I2C. Ciascun driver dell' 53 adattatore specifico dipende da un driver dell 53 adattatore specifico dipende da un driver dell'algoritmo nella sottocartella 54 ``drivers/i2c/algos/`` o include la propria im 54 ``drivers/i2c/algos/`` o include la propria implementazione. 55 55 56 Un circuito integrato **slave** è un nodo che 56 Un circuito integrato **slave** è un nodo che risponde alle comunicazioni 57 quando indirizzato dal master. In Linux è chi 57 quando indirizzato dal master. In Linux è chiamato **client** (dispositivo). I 58 driver dei dispositivi sono contenuti in una c 58 driver dei dispositivi sono contenuti in una cartella specifica per la 59 funzionalità che forniscono, ad esempio ``dri 59 funzionalità che forniscono, ad esempio ``drivers/media/gpio/`` per espansori 60 GPIO e ``drivers/media/i2c/`` per circuiti int 60 GPIO e ``drivers/media/i2c/`` per circuiti integrati relativi ai video. 61 61 62 Per la configurazione di esempio in figura, av 62 Per la configurazione di esempio in figura, avrai bisogno di un driver per il 63 tuo adattatore I2C e driver per i tuoi disposi 63 tuo adattatore I2C e driver per i tuoi dispositivi I2C (solitamente un driver 64 per ciascuno dispositivo). 64 per ciascuno dispositivo).
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.