@@ -3,21 +3,17 @@ Introduzione a I2C e SMBus
3
3
==========================
4
4
5
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.
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.
13
13
14
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> `_.
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
21
17
22
18
SMBus (Bus per la gestione del sistema) si basa sul protocollo I2C ed è
23
19
principalmente un sottoinsieme di protocolli e segnali I2C. Molti dispositivi
@@ -27,38 +23,62 @@ SMBus. I più comuni dispositivi collegati tramite SMBus sono moduli RAM
27
23
configurati utilizzando EEPROM I2C, e circuiti integrati di monitoraggio
28
24
hardware.
29
25
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.
34
30
35
31
36
32
Terminologia
37
33
============
38
34
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.
41
36
42
37
.. 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
44
39
45
40
Un semplice Bus I2C
46
41
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/ ``.
50
46
51
47
Un **algoritmo ** contiene codice generico che può essere utilizzato per
52
48
implementare una intera classe di adattatori I2C. Ciascun driver dell'
53
49
adattatore specifico dipende da un driver dell'algoritmo nella sottocartella
54
50
``drivers/i2c/algos/ `` o include la propria implementazione.
55
51
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
59
60
funzionalità che forniscono, ad esempio ``drivers/media/gpio/ `` per espansori
60
61
GPIO e ``drivers/media/i2c/ `` per circuiti integrati relativi ai video.
61
62
62
63
Per la configurazione di esempio in figura, avrai bisogno di un driver per il
63
64
tuo adattatore I2C e driver per i tuoi dispositivi I2C (solitamente un driver
64
65
per 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