I2C/es

From Qi-Hardware
< I2C
Jump to: navigation, search

En esta sección se hablará sobre el protocolo I2C y como este se maneja en el Nano.

[edit] Introducción al protocolo

Este protocolo fue creado por Philips y consiste en un bus serial con interfaz de dos pines, SDA [Serial Data/Address](utilizado para el dato), SCL [Serial Clock Line](el reloj que sincroniza el dato) y la referencia GND. La unidad I2C permite al procesador comunicarse con periféricos I2C con ayuda de registros standar.

El I2C del JZ4725 tiene las siguientes caracteristicas:

-Soporta solamente single master mode

-Soporta modo standard y modo F/S hasta 400KHz

-El receptor y transmisor tienen doble buffer

-Soporta escritura aleatoria de datos

-Soporta llamado general de dirección y formato de byte de START después de la condición de START.

-Generador de clock serial programable independiente.

-Soporta copia del esclavo con maestro rápido durante transferencia de datos al sostener la linea SCL en un nivel de bit.

-El numero de dispositivos que se pueden conectar al mismo bus I2C esta limitado solamente por el máximo de la capacitancia del bus de 400pF.

[edit] Descripción de los registro

tabla de resumen:

Nombre valor de reset dirección tamaño de acceso
I2CDR 0x?? 0x10042000 8
I2CCR 0x00 0x10042004 8
I2CSR 0x04 0x10042008 8
I2CGR 0x0000 0x1004200C 16


Data Register (I2CDR)

Es el puerto de datos de una FIFO HW.

Control Register (I2CCCR)

Este registro de 8 bits se encarga de controlar las funciones básicas del I2C, como interrupciones, inicio, parada, acknowledge y habilitación del protocolo.

A continuación se muestra dos tablas que resumen la función de este registro.

Bit 7 6 5 4 3 2 1 0
Nombre IEN STA STO AC I2CE
RST 0 0 0 0 0 0 0 0


Bits Nombre Descripción RW
7:5 Reserved estos bits siempre son leidos como cero y su escritura es ignorada R
4 IEN bit de interrupción. 0-deshabilita interrupción 1-habilita interrupción RW
3 STA bit de start. 0-la condición de start no se envía 1-se envía la condición de start RW
2 STO bit de stop. 0-la condición de stop no se envía 1-se envía la condición de stop RW
1 AC bit de control de acknowledge. 0- se enviara al bus I2C como una señal de acknowledge baja (low) 1-se enviara al bus I2C como una señal de acknowledge alta(high) RW
0 I2CE habilita el I2C. 0-deshabilita el modulo I2C 1-habilita el modulo I2C RW

Status Register (I2CSR)

Este registro revisa el estado actual del bus, por ejemplo si esta ocupado o si ya termino la transmisión. Su descripción se muestra en las siguientes tablas.

Bit 7 6 5 4 3 2 1 0
Nombre STX BUSY TEND DRF ACKF
RST 0 0 0 0 0 1 0 0


Bits Nombre Descripción RW
7:5 Reserved estos bits siempre son leidos como cero y su escritura es ignorada R
4 STX el comando STA/STO esta encendido. 0-el buffer FIFO de STA/STO esta vacio 1-el buffer FIFO de STA/STO no esta vacio R
3 BUSY bus I2C ocupado. 0-el bus esta libre 1-el bus esta ocupado R
2 TEND bandera de finalizacion de transmisión. 0-byte de transmisión o bit de acknowledge para ese byte no se ha completado. 1-el I2C se encuentra en estado de transmisión idle R
1 DRF dato de registro de bandera valida. 0- dato en el I2CDR es invalido 1- dato en el I2CDR es valido RW
0 ACKF bandera de nivel de acknowledge. 0-la señal de acknowledge del bus I2C es "0" 1-la señal de acknowledge del bus I2C es "1" R


Clock Generator Register (I2CGR)

Este registro se utiliza para establecer la frecuencia del reloj serial.


Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Nombre GR GR GR GR GR GR GR GR GR GR GR GR GR GR GR GR
RST 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


Bits Nombre Descripción RW
15:0 GR establece la frecuencia del reloj serial. esta frecuencia se calcula de la siguiente forma:

valor de I2CGR=[frecuencia del reloj del dispositivo/(16*[tasa del reloj SCL])-1

R

Para que el I2C funcione normalmente, la frecuencia del PCLK no debe ser menor a dos veces la tasa de transferencia de byte.

[edit] Protocolo del bus I2C

Transferencia de bit

Se genera un pulso de reloj por cada bit de dato transferido.

Validez del dato

El dato en la linea SDA debe permanecer estable durante el periodo alto del reloj. Los estados altos o bajos de la linea del dato solamente pueden cambiar cuando la señal del reloj se encuentre en bajo.

Condiciones de inicio y parada

Una transición de alto a bajo en la linea SDA mientras SCL permanece en alto indica una condicion de inicio. Una transición de bajo a alto en la linea SDA mientras SCL permanece en alto indica una condicion de parada.

Formato de Byte

1. Todos los bites en la linea de SDA deben ser de 8bits de ancho.

2.El numero de bytes que pueden ser transmitidos o recibidos por transferencia es ilimitado.

3. Cada byte debe estar seguido por un bit de acknowledge.

4. Los datos se transfieren con el bit mas significativo primero.

5. La transferencia de datos con señal de acknowledge es obligatorio.

6.El reloj relacionado con la señal de acknowledge es generado por el maestro.

7. El transmisor suelta la linea SDA (alta) en el pulso del reloj de acknowledge. El receptor debe bajar la linea de SDA durante el pulso del reloj de acknowledge para que el pulso del reloj se mantenga estable en bajo durante el periodo alto de este pulso de reloj.

8. El esclavo puede mantener la linea SCL baja, mientras que esta esta en bajo en cualquier bit para forzar al maestro a proceder con una tasa de transferencia menor.

En la siguiente imagen se resumen los numerales anteriores, donde Sr quiere decir condición de inicio repetida y P es la condición de parada.

En la figura también se observa que si el maestro no genera Sr o P, el siguiente byte de dato sigue al bit ack. Si en vez de recibir ack, se recibe la señal nack, el maestro generaría Sr o P y la transferencia termina.

Protocolo I2C
Personal tools
Namespaces
Variants
Actions
Navigation
interactive
Toolbox
Print/export