Anda di halaman 1dari 7

Comunicacin - Bus I2C

Descripcin y funcionamiento
por Eduardo J. Carletti
Introduccin
El bus I2C, un estndar que facilita la comunicacin
entre microcontroladores, memorias y otros
dispositivos con cierto nivel de "inteligencia", slo
requiere de dos lneas de seal y un comn o masa.
Fue diseado a este efecto por Pilips y permite el
intercam!io de informacin entre mucos
dispositivos a una velocidad acepta!le, de unos "##
$!its por segundo, aunque ay casos especiales en
los que el relo% llega asta los &,' ()*.
+a metodologa de comunicacin de datos del !us ,-. es en serie y sincrnica. /na
de las seales del !us marca el tiempo 0pulsos de relo%1 y la otra se utili*a para
intercam!iar datos.
Descripcin de las seales
o SCL 02ystem .loc31 es la lnea de los pulsos de relo% que sincroni*an
el sistema.
o SD 02ystem 4ata1 es la lnea por la que se mueven los datos entre
los dispositivos.
o !"D 0(asa1 comn de la interconeccin entre todos los dispositivos
"engancados" al !us.
+as lneas SD y SCL son del tipo drena%e a!ierto, es decir, un estado similar al de
colector a!ierto, pero asociadas a un transistor de efecto de campo 0o FE51. 2e
de!en polari*ar en estado alto 0conectando a la alimentacin por medio de
resistores "pull6up"1 lo que define una estructura de !us que permite conectar en
paralelo mltiples entradas y salidas.
El diagrama es suficientemente autoe7plicativo. +as dos lneas del !us estn en un
nivel lgico alto cuando estn inactivas. En principio, el nmero de dispositivos que
se puede conectar al !us no tiene lmites, aunque ay que o!servar que la
capacidad m7ima sumada de todos los dispositivos no supere los '## pF. El valor
de los resistores de polari*acin no es muy crtico, y puede ir desde "$8 0".8##
oms1 a '9$ 0'9.### oms1. /n valor menor de resistencia incrementa el consumo
de los integrados pero disminuye la sensi!ilidad al ruido y me%ora el tiempo de los
DE#I"ICI$" DE I2C %I
2
C&'
:!reviatura de ,nter6,. 0inter
integrated circuits1, un tipo de !us
diseado por Pilips
2emiconductors a principios de los
8#s, que se utili*a para conectar
circuitos integrados 0,.s1. El ,-.
es un !us con mltiples maestros,
lo que significa que se pueden
conectar varios cips al mismo !us
y que todos ellos pueden actuar
como maestro, slo con iniciar la
transferencia de datos. Este !us
se utili*a en mucos dispositivos,
en especial en equipos de vdeo
como monitores de computadora,
televisores y videocaseteras.
1
flancos de su!ida y !a%ada de las seales. +os valores ms comunes en uso son
entre "$8 y "#$.
(rotocolo de comunicacin del bus I2C
)a!iendo varios dispositivos conectados so!re el !us, es lgico que para esta!lecer
una comunicacin a trav;s de ;l se de!a respetar un protocolo. 4igamos, en primer
lugar, lo ms importante< e7isten dispositivos maestros y dispositivos escla)os.
2lo los dispositivos maestros pueden iniciar una comunicacin.
+a condicin inicial, de bus libre, es cuando am!as
seales estn en
estado lgico alto. En este estado cualquier dispositivo maestro puede ocuparlo,
esta!leciendo la condicin de inicio 0start1. Esta condicin se presenta cuando un
dispositivo maestro pone en estado !a%o la lnea de datos 024:1, pero de%ando en
alto la lnea de relo% 02.+1.
El primer !yte que se transmite luego de la condicin de inicio contiene siete !its
que componen la direccin del dispositivo que se desea seleccionar, y un octavo !it
que corresponde a la operacin que se quiere reali*ar con ;l 0lectura o escritura1.
2i el dispositivo cuya direccin corresponde a la que se indica en los siete !its 0:#6
:=1 est presente en el !us, ;ste contesta con un !it en !a%o, u!icado
inmediatamente luego del octavo !it que a enviado el dispositivo maestro. Este !it
de reconocimiento 0:.$1 en !a%o le indica al dispositivo maestro que el esclavo
reconoce la solicitud y est en condiciones de comunicarse. :qu la comunicacin
se esta!lece en firme y comien*a el intercam!io de informacin entre los
dispositivos.
2i el !it de lectura*escritura 0>?@1 fue puesto en esta comunicacin a nivel
lgico !a%o 0escritura1, el dispositivo maestro enva datos al dispositivo esclavo.
Esto se mantiene mientras contine reci!iendo seales de reconocimiento, y el
contacto concluye cuando se ayan transmitido todos los datos.
2
En el caso contrario, cuando el !it de
lectura?escritura esta!a a nivel lgico alto 0lectura1,
el dispositivo maestro genera pulsos de relo% para
que el dispositivo esclavo pueda enviar los datos.
+uego de cada !yte reci!ido el dispositivo maestro
0quien est reci!iendo los datos1 genera un pulso
de reconocimiento.
El dispositivo maestro puede de%ar li!re el !us
generando una condicin de parada 0o detencinA stop en ingl;s1.
2i se desea seguir transmitiendo, el dispositivo maestro puede generar otra
condicin de inicio en lugar de una condicin de parada. Esta nueva condicin de
inicio se denomina "inicio reiterado" y se puede emplear para direccionar un
dispositivo esclavo diferente o para alterar el estado del !it de lectura?escritura.
Definicin de t+rminos'
,aestro 0(aster1< 4ispositivo que determina los tiempos y la direccin del
trfico en el !us. Es el nico que aplica los pulsos de relo% en la lnea 2.+.
.uando se conectan varios dispositivos maestros a un mismo !us la
configuracin o!tenida se denomina "multi6maestro".
Escla)o 02lave1< 5odo dispositivo conectado al !us que no tiene la
capacidad de generar pulsos de relo%. +os dispositivos esclavos reci!en
seales de comando y de relo% generados desde el maestro.
Bus libre 0Bus Free1< Estado en el que am!as lneas 024: y 2.+1 estn
inactivas, presentando un estado lgico alto. Es el nico momento en que un
dispositivo maestro puede comen*ar a acer uso del !us.
Comien-o 02tart1< 2e produce cuando un dispositivo maestro ocupa el !us,
generando la condicin. +a lnea de datos 024:1 toma un estado !a%o
mientras que la lnea de relo% 02.+1 permanece alta.
(arada 02top1< /n dispositivo maestro puede generar esta condicin,
de%ando li!re el !us. +a lnea de datos y la de relo% toman un estado lgico
alto.
Dato ).lido 0Calid 4ata1< 2ituacin presente cuando un dato presente en la
lnea 24: es esta!le al tiempo que la lnea 2.+ est a nivel lgico alto.
#ormato de Datos 04ata Format1< +a transmisin de un dato a trav;s de
este !us consiste de 8 !its de dato 0" !yte1. : cada !yte transmitido al !us
le sigue un noveno pulso de relo% durante el cual el dispositivo receptor del
!yte de!e generar un pulso de reconocimiento.
/econocimiento 0:c3noDledge1< El pulso de reconocimiento, conocido
como :.$ 0del ingl;s :c3noDledge1, se logra colocando la lnea de datos a
un nivel lgico !a%o durante el transcurso del noveno pulso de relo%.
Direccin 0:ddress1< 5odo dispositivo diseado para funcionar en este !us
posee su propia y nica direccin de acceso, preesta!lecida por el
fa!ricante. )ay dispositivos que permiten definir e7ternamente parte de la
direccin de acceso, lo que a!ilita que se pueda conectar en un mismo !us
un con%unto de dispositivos del mismo tipo, sin pro!lemas de identificacin.
+a direccin ## es la denominada "de acceso general"A a ;sta responden
todos los dispositivos conectados al !us.
Lectura*Escritura 0Bit >?@1< .ada dispositivo tiene una direccin de 9
!its. El octavo !it 0el menos significativo1 que se enva durante la operacin
de direccionamiento, completando el !yte, indica el tipo de operacin a
reali*ar. 2i este !it es alto el dispositivo maestro lee informacin proveniente
3
de un dispositivo esclavo. 2i este !it es !a%o, el dispositivo maestro escri!e
informacin en un dispositivo esclavo.
La comunicacin en m.s detalle
.uando el dispositivo maestro quiere comunicarse con un esclavo, produce una
secuencia de inicio en el !us. +a secuencia de inicio es una de las dos secuencias
especiales que se an definido en el !us ,-.A la otra es la secuencia de parada. +as
secuencias de inicio y la de parada son especiales porque son los dos nicos casos
en que se permite que la lnea de datos 024:1 cam!ie cuando la lnea de relo%
02.+1 est alta. .uando se estn transmitiendo datos, la lnea 24: de!e
permanecer esta!le, y %ams cam!iar, mientras la lnea 2.+ est alta. +as
secuencias de inicio y de parada sealan el comien*o y el final de una transaccin
con los dispositivos esclavos.
+os datos se transfieren en secuencias de 8 !its. Estos !its se colocan en la lnea
24: comen*ando por el !it de ms peso 0o ms significativo1. /na ve* puesto un
!it en 24:, se lleva la lnea 2.+ a alto. 4e!emos recordar que el cip no puede
llevar la lnea a un estado alto, en realidad, lo que ace es "soltarla", y el que la
pone en nivel lgico alto es el resistor de polari*acin. Por cada 8 !its que se
transfieren, el dispositivo que reci!e el dato enva de regreso un !it de
reconocimiento, de modo que en realidad por cada !yte de dato se producen E
pulsos so!re la lnea 2.+ 0es decir, E pulsos de relo% por cada 8 !its de dato1. 2i el
dispositivo que reci!e enva un !it de reconocimiento !a%o, indica que a reci!ido el
dato y que est listo para aceptar otro !yte. 2i retorna un alto, lo que indica es que
no puede reci!ir ms datos y el dispositivo maestro de!era terminar la
transferencia enviando una secuencia de parada.
Direccionamiento de dispositi)os en el bus I2C
+o ms comn en los dispositivos para el !us ,-. es que utilicen direcciones de 9
!its, aunque e7isten dispositivos de "# !its. Este ltimo caso es raro.
/na direccin de 9 !its implica que se pueden poner asta "-8 dispositivos so!re
un !us ,-., ya que un nmero de 9 !its puede ir desde # a "-9. .uando se envan
las direcciones de 9 !it, de cualquier modo la transmisin es de 8 !its. El !it e7tra
se utili*a para informarle al dispositivo esclavo si el dispositivo maestro va a escri!ir
o va a leer datos desde ;l. 2i el !it de lectura?escritura 0>?@1 es cero, el dispositivo
maestro est escri!iendo en el esclavo. 2i el !it es " el maestro est leyendo desde
el esclavo. +a direccin de 9 !it se coloca en los 9 !ist ms significativos del !yte y
el !it de lectura?escritura es el !it menos significativo.
El eco de colocar la direccin de 9 !its en los 9 !its ms significativos del !yte
produce confusiones entre quienes comien*an a tra!a%ar con este !us. 2i, por
e%emplo, se desea escri!ir en la direccin -" 0e7adecimal1, en realidad se de!e
enviar un '-, que es un -" despla*ado un !it acia arri!a. 5am!i;n se pueden
tomar las direcciones del !us ,-. como direcciones de 8 !it, en las que las pares
son de slo escritura y las impares son de slo lectura. Para dar un e%emplo, el
integrado de !r%ula magn;tica C,(S01 es fi%ado en f!rica en la direccin #7.#
0F.#1. +a direccin #7.# se utili*a para escri!ir en ;l y la direccin #7." es para
leer de ;l.
(rotocolo de pro2ramacin para el bus I2C
4
+o primero que ocurre en un !us ,-. es que el dispositivo maestro enva una
secuencia de inicio. Esto alerta a los dispositivos esclavos, poni;ndolos a la espera
de una transaccin. Gstos quedan atentos para ver si se trata de una solicitud para
ellos. : continuacin el dispositivo maestro enva la direccin de dispositivo. El
dispositivo esclavo que posee esa direccin continuar con la transaccin, y los
otros ignorarn el resto de los intercam!ios, esperando la pr7ima secuencia de
inicio.
)a!iendo direccionado ya el dispositivo esclavo, lo que de!e acer aora el maestro
es enviar la u!icacin interna o nmero de registro desde el que desea leer o al que
va a escri!ir. +a cantidad depende, o!viamente, de qu; dispositivo es y de cuntos
registros internos posee. :lgunos dispositivos muy simples no tienen ninguno, pero
la mayora s los poseen.
2iguiendo con el e%emplo del C,(S01, ;ste posee "= u!icaciones internas,
numeradas desde el # al "H. Itro dispositivo, el medidor ultrasnico de distancia
S/#03, tiene &= registros.
/na ve* que el maestro a enviado la direccin del dispositivo en el !us ,-. y la
direccin del registro interno del dispositivo, puede enviar aora el !yte o !ytes de
datos. El dispositivo maestro puede seguir enviando !ytes al esclavo, que
normalmente sern puestos en registros con direcciones sucesivas, ya que el
esclavo incrementa automticamente la direccin del registro interno despu;s de
reci!ir cada !yte. .uando el maestro a terminado de escri!ir datos en el esclavo,
enva una secuencia de parada que concluye la transaccin.
Escritura en un dispositi)o escla)o'
". Enviar una secuencia de inicio
-. Enviar la direccin de dispositivo con el !it de lectura?escritura en !a%o
&. Enviar el nmero de registro interno en el que se desea escri!ir
'. Enviar el !yte de dato
H. JIpcionalmente, enviar ms !ytes de datoK
=. Enviar la secuencia de parada
.omo e%emplo, veamos un 2>F#8, que tiene una direccin de !us fi%ada en f!rica
de #7E#. Para comen*ar una medicin de distancia con el 2>F#8 se de!e escri!ir
#7H" en el registro de comando, u!icado en la direccin interna #7##. +a secuencia
es la que sigue<
". Enviar una secuencia de inicio
-. Enviar #7E# 0+a direccin de dispositivo del 2>F#8 con el !it de
lectura?escritura en !a%o1
&. Enviar #7## 0direccin interna del registro de comando1
'. Enviar #7H" 0el comando para comen*ar la medicin del 2>F#81
H. Enviar la secuencia de parada
Lectura desde un dispositi)o escla)o'
Esta operacin es algo ms complicada, pero no demasiado. :ntes de leer datos
desde el dispositivo esclavo, primero se le de!e informar desde cul de sus
direcciones internas se va a leer. 4e manera que una lectura desde un dispositivo
esclavo en realidad comien*a con una operacin de escritura en ;l. Es igual a
cuando se desea escri!ir en ;l< 2e enva la secuencia de inicio, la direccin de
dispositivo con el !it de lectura?escritura en !a%o y el registro interno desde el que
5
se desea leer. :ora se enva otra secuencia de inicio nuevamente con la direccin
de dispositivo, pero esta ve* con el !it de lectura?escritura en alto. +uego se leen
todos los !ytes necesarios y se termina la transaccin con una secuencia de parada.
Colviendo al e%emplo del mdulo de !r%ula .(P2#&, veamos cmo se lee el
registro de ngulo<
". Enviar una secuencia de inicio
-. Enviar #7.# 0+a direccin de dispositivo del .(P2#& con el !it de
lectura?escritura en !a%o1
&. Enviar #7#" 0direccin interna del registro de ngulo en valor #6-HH1
'. Enviar una secuencia de inicio 0inicio reiterado1
H. Enviar #7." 0+a direccin de dispositivo del .(P2#& con el !it de
lectura?escritura en alto1
=. +eer un !yte de dato desde el .(P2#&
9. Enviar la secuencia de parada
+a secuencia se ver as<
4n caso un poco m.s complicado
Esto es todo cuando se trata de comunicaciones simples, pero de!emos considerar
una posi!le complicacin< .uando el dispositivo maestro est leyendo desde el
esclavo, quien pone los datos en la lnea 24: del !us es el dispositivo esclavo, y el
maestro es el que controla el pulso de relo%. LMu; pasa si el esclavo no est listo
para enviar un datoN .on dispositivos como una EEP>I(s esto no sera pro!lema,
pero si el dispositivo esclavo es un microprocesador, que tiene otras tareas que
reali*ar, pueden surgir inconvenientes.
Para atender la transaccin, el microprocesador de!e pasar a una rutina de
interrupcin, guardar sus registros de tra!a%o, determinar qu; direccin desea leer
el dispositivo maestro, o!tener el dato y ponerlo en su registro de transmisin. Esto
puede llevar varios microsegundos, lo que implica que el dispositivo maestro podra
estar enviando pulsos de relo% ciegamente por la lnea 2.+ sin que el dispositivo
esclavo pueda responderle. El protocolo ,-. ofrece una solucin para esto< el
esclavo puede mantener la lnea 2.+ en !a%o. : esto se le llama estiramiento del
relo%. .uando el esclavo reci!e el comando de lectura lo primero que ace es poner
la lnea de relo% en !a%o. Entonces s, o!tiene el dato solicitado, lo pone en el
registro de transmisin, y reci;n entonces li!era la lnea de relo%, que pasar de
inmediato a alto de!ido al nivel que aporta el resistor de polari*acin.
6
4esde el punto de vista del dispositivo maestro, ;ste tratar de enviar el primer
pulso de relo% para la lectura de datos li!erando la lnea 2.+ para que pase a alto,
pero antes de continuar compro!ar que ;sta realmente aya ido al nivel lgico ".
2i la lnea 2.+ permanece en !a%o, el dispositivo maestro interpreta que el esclavo
la mantiene as y espera a que 2.+ vaya a alto antes de continuar. Por suerte, la
mayora de los puertos ,-. de los microprocesadores mane%an esto de manera
automtica.
2in em!argo, a veces el mane%o de ,-. en el dispositivo maestro no est
implementado por circuito, sino que es un %uego de su!rutinas que mane%a dos
lneas de un puerto. :lgunas implementaciones ignoran este estiramiento del relo%.
Estas soluciones tra!a%arn !ien con dispositivos tales como las EEP>I(, pero no
podrn intercam!iar datos correctamente con microprocesadores esclavos que
utili*an el estiramiento del pulso de relo%. .omo resultado, se o!tendrn datos
errneos.
7

Anda mungkin juga menyukai