@@ -3,21 +3,17 @@ Introduzione a I2C e SMBus
33==========================
44
55I²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.
6+ kernel) è un protocollo sviluppato da Philips. É un protocollo a 2 fili (a
7+ velocità variabile, solitamente fino a 400KHz, e in modalità alta velocità fino
8+ a 5 MHz). Questo protocollo offre un bus a basso costo per collegare dispositivi
9+ di vario genere a cui si accede sporadicamente e utilizzando poca banda. I2C è
10+ ampiamente usato nei sistemi integrati . Alcuni sistemi usano varianti che non
11+ rispettano i requisiti originali, per cui non sono indicati come I2C, ma hanno
12+ nomi diversi, per esempio TWI (Interfaccia a due fili), IIC.
1313
1414L'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> `_.
15+ (UM10204) <https://www.nxp.com/docs/en/user-guide/UM10204.pdf> `_ pubblicata da
16+ NXP Semiconductors, al momento della scrittura si tratta della versione 7
2117
2218SMBus (Bus per la gestione del sistema) si basa sul protocollo I2C ed è
2319principalmente un sottoinsieme di protocolli e segnali I2C. Molti dispositivi
@@ -27,38 +23,62 @@ SMBus. I più comuni dispositivi collegati tramite SMBus sono moduli RAM
2723configurati utilizzando EEPROM I2C, e circuiti integrati di monitoraggio
2824hardware.
2925
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.
26+ Poiché SMBus è principalmente un sottoinsieme del bus I2C, possiamo farne uso su
27+ molti sistemi I2C. Ci sono però sistemi che non soddisfano i vincoli elettrici
28+ sia di SMBus che di I2C; e altri che non possono implementare tutta la semantica
29+ o messaggi comuni del protocollo SMBus.
3430
3531
3632Terminologia
3733============
3834
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 *.
35+ Il bus I2C connette uno o più circuiti integrati controllori a dei dispositivi.
4136
4237.. kernel-figure :: ../../../i2c/i2c_bus.svg
43- :alt: Un semplice bus I2C con un master e 3 slave
38+ :alt: Un semplice bus I2C con un controllore e 3 dispositivi
4439
4540 Un semplice Bus I2C
4641
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/ ``.
42+ Un circuito integrato **controllore ** (*controller *) è un nodo che inizia le
43+ comunicazioni con i dispositivi (*targets *). Nell'implementazione del kernel
44+ Linux è chiamato **adattatore ** o bus. I driver degli adattatori si trovano
45+ nella sottocartella ``drivers/i2c/busses/ ``.
5046
5147Un **algoritmo ** contiene codice generico che può essere utilizzato per
5248implementare una intera classe di adattatori I2C. Ciascun driver dell'
5349adattatore specifico dipende da un driver dell'algoritmo nella sottocartella
5450``drivers/i2c/algos/ `` o include la propria implementazione.
5551
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
52+ Un circuito integrato **dispositivo ** è un nodo che risponde alle comunicazioni
53+ quando indirizzato dal controllore. In Linux è chiamato **client **. Nonostante i
54+ dispositivi siano circuiti integrati esterni al sistema, Linux può agire come
55+ dispositivo (se l'hardware lo permette) e rispondere alla richieste di altri
56+ controllori sul bus. Questo verrà chiamato **dispositivo locale ** (*local
57+ target *). Negli altri casi si parla di **dispositivo remoto ** (*remote target *).
58+
59+ I driver dei dispositivi sono contenuti in una cartella specifica per la
5960funzionalità che forniscono, ad esempio ``drivers/media/gpio/ `` per espansori
6061GPIO e ``drivers/media/i2c/ `` per circuiti integrati relativi ai video.
6162
6263Per la configurazione di esempio in figura, avrai bisogno di un driver per il
6364tuo adattatore I2C e driver per i tuoi dispositivi I2C (solitamente un driver
6465per ciascuno dispositivo).
66+
67+ Sinonimi
68+ --------
69+
70+ Come menzionato precedentemente, per ragioni storiche l'implementazione I2C del
71+ kernel Linux usa "adatattore" (*adapter *) per i controllori e "client" per i
72+ dispositivi. Un certo numero di strutture dati usano questi sinonimi nei loro
73+ nomi. Dunque, durante le discussioni riguardanti l'implementazione dovrete
74+ essere a coscienza anche di questi termini. Tuttavia si preferiscono i termini
75+ ufficiali.
76+
77+ Terminologia obsoleta
78+ ---------------------
79+
80+ Nelle prime specifiche di I2C, il controllore veniva chiamato "master" ed i
81+ dispositivi "slave". Questi termini sono stati resi obsoleti con la versione 7
82+ della specifica. Inoltre, il loro uso viene scoraggiato dal codice di condotta
83+ del kernel Linux. Tuttavia, potreste ancora trovare questi termini in pagine non
84+ aggiornate. In generale si cerca di usare i termini controllore e dispositivo.
0 commit comments