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