brintos

brintos / linux-shallow public Read only

0
0
Text · 3.2 KiB · 1535e13 Raw
65 lines · plain
1==========================2Introduzione a I2C e SMBus3==========================4 5I²C (letteralmente "I al quadrato C" e scritto I2C nella documentazione del6kernel) è un protocollo sviluppato da Philips. É un protocollo lento a 2 fili7(a velocità variabile, al massimo 400KHz), con un'estensione per le velocità8elevate (3.4 MHz). Questo protocollo offre un bus a basso costo per collegare9dispositivi di vario genere a cui si accede sporadicamente e utilizzando10poca banda. Alcuni sistemi usano varianti che non rispettano i requisiti11originali, per cui non sono indicati come I2C, ma hanno nomi diversi, per12esempio TWI (Interfaccia a due fili), IIC.13 14L'ultima specifica ufficiale I2C è la `"Specifica I2C-bus e manuale utente"15(UM10204) <https://www.nxp.com/webapp/Download?colCode=UM10204>`_16pubblicata da NXP Semiconductors. Tuttavia, è necessario effettuare il login17al sito per accedere al PDF. Una versione precedente della specifica18(revisione 6) è archiviata19`qui <https://web.archive.org/web/20210813122132/20https://www.nxp.com/docs/en/user-guide/UM10204.pdf>`_.21 22SMBus (Bus per la gestione del sistema) si basa sul protocollo I2C ed è23principalmente un sottoinsieme di protocolli e segnali I2C. Molti dispositivi24I2C funzioneranno su SMBus, ma alcuni protocolli SMBus aggiungono semantica25oltre quanto richiesto da I2C. Le moderne schede madri dei PC si affidano a26SMBus. I più comuni dispositivi collegati tramite SMBus sono moduli RAM27configurati utilizzando EEPROM I2C, e circuiti integrati di monitoraggio28hardware.29 30Poiché SMBus è principalmente un sottoinsieme del bus I2C,31possiamo farne uso su molti sistemi I2C. Ci sono però sistemi che non32soddisfano i vincoli elettrici sia di SMBus che di I2C; e altri che non possono33implementare tutta la semantica o messaggi comuni del protocollo SMBus.34 35 36Terminologia37============38 39Utilizzando la terminologia della documentazione ufficiale, il bus I2C connette40uno o più circuiti integrati *master* e uno o più circuiti integrati *slave*.41 42.. kernel-figure::  ../../../i2c/i2c_bus.svg43   :alt:    Un semplice bus I2C con un master e 3 slave44 45   Un semplice Bus I2C46 47Un circuito integrato  **master** è un nodo che inizia le comunicazioni con gli48slave. Nell'implementazione del kernel Linux è chiamato **adattatore** o bus. I49driver degli adattatori si trovano nella sottocartella ``drivers/i2c/busses/``.50 51Un **algoritmo** contiene codice generico che può essere utilizzato per52implementare una intera classe di adattatori I2C. Ciascun driver dell'53adattatore specifico dipende da un driver dell'algoritmo nella sottocartella54``drivers/i2c/algos/`` o include la propria implementazione.55 56Un circuito integrato **slave** è un nodo che risponde alle comunicazioni57quando indirizzato dal master. In Linux è chiamato **client** (dispositivo). I58driver dei dispositivi sono contenuti in una cartella specifica per la59funzionalità che forniscono, ad esempio ``drivers/media/gpio/`` per espansori60GPIO e ``drivers/media/i2c/`` per circuiti integrati relativi ai video.61 62Per la configurazione di esempio in figura, avrai bisogno di un driver per il63tuo adattatore I2C e driver per i tuoi dispositivi I2C (solitamente un driver64per ciascuno dispositivo).65