ventajas del bus i2c - iglona.eu5.orgiglona.eu5.org/i2c_practico_tc74.pdf · al margen de su...
TRANSCRIPT
1
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
BUS I2C:IMPLEMENTACIÓN PRÁCTICA CON MICROCONTROLADORES PIC
TC74: Termómetro digital
2
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
Ventajas del BUS I2C• Definido inicialmente a mediados de los 80 para trabajar a 100kbit/s y en 1995se definió un modo rápido de funcionamiento que permitía transferencias de hasta400kbit/s (esas frecuencias se han superado hoy en día y algunos dispositivosllegan a 4MHz).
• Presenta una transferencia “lenta” en comparación con el modo SPI y mucho más con la lectura/escritura directa de los puertos de un microcontrolador
• Es útil y se emplea en muchas aplicaciones en las que la velocidad de transferenciaes mucho mayor de lo que el caso requiere (p.e. Medida de temperaturas con constantes de tiempo de segundos)
• Su principal ventaja, es que una vez disponible el microcontrolador con sus funcionesde interface con bus I2C, la inclusión de un dispositivo I2C adicional sólo necesitaríasu conexión a las dos líneas del bus (SDA y SCL que son las mismas para todos) yasignarle una dirección. Los intercambios se realizarían utilizando los mismossubprogramas para todos
• La tensión de funcionamiento va de 2,5V a 5,5V y no es necesaria la presencia de “drivers” de adaptación de tensión externos (integración en los propios dispositivos)
3
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
• Convertidores D/A: MAX518 (DIP8 ó SO-8) de Maxim
• Convertidores A/D y D/A: PCF8591 (DIP16 ó SO-16) de Philips
• Sensores de Temperatura: TC74 (TO-220 ó SOT-23) de Microchip
• EEPROM serie: 24Cxx ó 24LCxx (DIP8 ó SO-8) de Microchip
• Reloj/Calendario de tiempo real (RTC): X1288 (SOIC-14) de Xicor, DS1629
• LCD con Driver: TTR6030 (PCB con 4 pines)
• Otros Microcontroladores: PCA8516 de Philips para LCDs
Algunos C.I. con bus I2C:
Al margen de su compatibilidad con el bus I2C, cada dispositivotiene su propia configuración, con sus registros internos, sus comandos,
sus estados, etc. que será preciso conocer en sus hojas de característicasfuncionales particulares
4
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
Sensor de Temperatura (TC74)• Combinación de sensor de Tª, conversor A/D de 8 bits e interface I2C en un solo C.I.
• Siempre será dispositivo esclavo y estará recibiendo o emitiendo datos cuando se lo solicite el Maestro del bus
• Dirección asignada en I2C como esclavo: 1-0-0-1-1-0-1 (hay otras 7 direcciones distintas que se podrían asignar bajo pedido a Microchip)
Tipos de encapsuladosy pines de conexión
En TO-220 la cápsula exterior está conectada a masa (GND)
5
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
C.I. Sensor de Temperatura TC74
1. Funcionalidad: ¿Qué puede hacer y para qué puede servir?
Medida de temperatura: de -65ºC a 127ºCPrecisión de ±2ºC de +25ºC a 85ºC y ±3ºC de 0ºC a 125ºCResolución de 8 bits: 1ºCProporciona valor en binario y valores negativos en complemento a 2Tensión de alimentación: 2,7V a 5,5VConsumo “en operación” de 200 µA y “en standby” de 5 µA
2. Interface: ¿Cómo nos comunicamos con él desde un microcontrolador?
Es esclavo de un bus I2CTiene una dirección asignada en el busTramas de lectura y escritura en I2CComandos admitidos y formatos conocidos especificados a continuación
6
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
TC74: Diagrama de Bloques Funcional
Líneas de datos(SDA) y de reloj(SCL) del bus I2C
No precisade
componentesexternos
para funcionar
(Sólo la tensiónde alimentación)
Conversor A/D
7
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
Funcionamiento: MEDIDA DE LA TEMPERATURA
• El integrado realiza la adquisición y conversión de temperaturas mediante un sensorde estado sólido con una resolución de ±1ºC
• En modo de operación normal, se toman y convierten 8 muestras por segundo y el resultado de la conversión se almacena en un registro interno al que se puede accederen cualquier momento vía serie mediante el bus I2C
• El C.I. se puede situar en modo de bajo consumo (Stand-by) en el que se suspende laadquisición de temperatura y queda retenido en el registro interno el resultado de la última conversión.
• Internamente existe un registro de configuración (CONFIG) donde hay un bit (SHDN)que establece el modo de trabajo: normal (SHDN a 0) o de bajo consumo (SHDN a 1)
• El registro de configuración interno se puede escribir y se puede leer, mientras que elregistro de temperatura sólo puede ser leído
• Las lecturas y escrituras siguen las tramas típicas en un bus I2C
8
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
Interface I2C del TC74
• Esclavo de un bus I2C con una dirección preestablecida: 1001101, no podríanconvivir más de un TC74 en el mismo bus salvo que le encarguemos a Microchipsensores con otras direcciones bajo pedido: 1001xxx posibles direcciones
• Interface a dos hilos: SCL entrada del reloj generado por el Maestro del bus y SDA entrada o salida de datos en función del sentido establecido por el maestrotras un byte de control inicial
• La máxima frecuencia de reloj de entrada admitida por el dispositivo es de 100kHz
• Las tramas de comunicación siempre se inician de manera idéntica:
Bit de STARTByte de Control con la dirección del TC74 seguido de bit 0 (escritura) ó 1 (lectura)Bit de ACK por parte del TC74
… lo que sigue ya depende del comando en particular
9
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
Tramas: Escritura de un byte en registro
S bit deStart Dirección del TC74
como Esclavo en I2C R/W
ACKSDA: 1 0 0 1 1 0 1 0 ACK C7 C6 C5 C4 C3 C2 C1 C0
Los bits del COMANDO(sólo hay 2 posibles)
En “amarillo” lo que tiene que poner el Maestro: el microcontroladorEn azul lo que pondrá el Esclavo: TC74
Dato a escribiren el registro indicado
por el comando
SDA: D7 0 0 1 1 0 1 0 ACK P D7 D6 D5 D4 D3 D2 D1 D0
bit deStop
COMANDOS POSIBLES:RTR=0x00 Leer Registro TemperaturaRWCR=0x01 Leer/Escribir Configuración
En este caso sólo tendría sentido ESCRIBIR CONFIGURACIÓN(comando RWCR=0x01)
10
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
Tramas: Lectura de un byte de un registro
S bit deStart Dirección del TC74
como Esclavo en I2C R/W
ACKSDA: 1 0 0 1 1 0 1 0 ACK C7 C6 C5 C4 C3 C2 C1 C0
Los bits del COMANDO(sólo hay 2 posibles)
En “amarillo” lo que tiene que poner el Maestro: el microcontroladorEn azul lo que pondrá el Esclavo: TC74
SDA:
Con la primera parte de la trama (línea superior) se indica a qué registro sedesea acceder (dependerá del comando: RTR ó RWCR)
y con la segunda parte de la trama (segunda línea) se realiza la lectura del byte
Sr
Dirección del TC74como Esclavo en I2C R/W
1 0 0 1 1 0 1 1 ACK
bit deRestart
b7 b6 b5 b4 b3 b2 b1 b0 ACK
Dato presente en el registroespecificado por el comando
P
Stop
bit de NOACK
11
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
Tramas: Otra posible Lectura de un registro
SDA: S
Dirección del TC74como Esclavo en I2C R/W
1 0 0 1 1 0 1 1 ACK
bit deStart
b7 b6 b5 b4 b3 b2 b1 b0 ACK
Dato presente en el registroespecificado en el
último comando que seutilizó
P
Stop
bit de NOACK
Existe una manera “más corta” de leer un determinado registro, siempre y cuando el registro a leer sea al que se hizo referencia
en el último comando que se escribió en el TC74:
Si se desean recoger sucesivos valores de temperatura, sería suficiente con haber “escrito” al principio un comando
de lectura de temperatura (RTR = 0x00)y luego se podría proceder a leer los valores almacenados en el registro
enviando sucesivas tramas como la mostrada arriba
12
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
Registros internos: Registro de Configuración
N/ASólo lecturaLect./Escrit.Reservados (se leen como 0)Data ReadyBit de Standby
b0b1b2b3b4b5b6b7
Bit de Standby: si está a 1 sitúa al C.I. en bajo consumo, sin realizar conversiones, si a 0 en modo normal
Data Ready: valor de temperatura disponible en el registro si está a 1el bit estará a cero al alimentar el C.I. antes de que se haga la primera conversión y también cuando está en modo standby
Tras un “Power On Reset”, el registro arranca con el valor 0x00,
por tanto en modo normal
13
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
Registros internos: Registro de temperatura
b0b1b2b3b4b5b6b7
Nos proporciona el valor en binario resultante de la última conversión A/D,cada unidad representa un grado centígrado
Tras un POR, se carga con 0x00 hasta que finalice la primera conversión, se sabe porque el bit DataReady del registro CONFIG pasa a 1
El formato de representación es el de complemento a 2
11100111
bit más significativo a 1: nº negativomódulo: complemento a 2 del nº
00011001 -> 25
00011001
bit más significativo a 0: nº positivovalor: 00011001 -> 25
14
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
Posición del Sensor de Temperatura TC74 en PICDEM2 plus
15
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
Propuesta de EJERCICIO:
Realizar un programa que reciba la temperatura medida por el TC74 y lamuestre en la primera línea del LCD conectado a la placa de prácticas
PICDEM2 plus
PIC16F877
T = 23 º C
LCD con driver HD44780
PORTD
RA3RA2RA1
E RW RS
TC74
SCL SDA
RC3 RC4
Se necesitarán:
• Subprogramas de interface con el LCDS2_LCD4B_P2P.ASM
• Subprogramas de interface I2CMSSP_I2C.ASM
• Subpr. de conversión de binario a BCD
4MHz
16
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
Trama para Lectura de la Temperatura
S bit deStart Dirección del TC74
como Esclavo en I2C R/W
ACKSDA: 1 0 0 1 1 0 1 0 ACK 0 0 0 0 0 0 0 0
Los bits del COMANDO
En “amarillo” lo que tiene que poner el Maestro: el microcontrolador PICEn azul lo que pondrá el Esclavo: TC74
SDA: Sr
Dirección del TC74como Esclavo en I2C R/W
1 0 0 1 1 0 1 1 ACK
bit deRestart
b7 b6 b5 b4 b3 b2 b1 b0 ACK
Dato en el registrode temperatura
P
Stop
bit de NOACK
17
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
• Generación de bit de start B_START
• Envío de dirección de esclavo con bit R/W=0 TX
• Envío del comando RTR = 0x00 TX
• Envío de bit de restart B_RESTART
• Envío de dirección de esclavo y bit R/W=1 TX
• Recoger byte del bus RX
• Generar bit de NOACK B_NOACK
• Generar bit de STOP B_STOP
Trama de Lectura de Temperatura :
Lectura de Temperatura con secuencia de subprogramas a llamar para I2C
18
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
Trama: Otra posible Lectura de Temperatura
SDA: S
Dirección del TC74como Esclavo en I2C R/W
1 0 0 1 1 0 1 1 ACK
bit deStart
b7 b6 b5 b4 b3 b2 b1 b0 ACK
Dato presente en el registrode temperatura(si fue el últimoal que se accedió)
P
Stop
bit de NOACK
Si se desean recoger sucesivos valores de temperatura, sería suficiente con haber “escrito” al principio un comando
de lectura de temperatura (RTR = 0x00)y luego se podrían leer los valores de temperatura
enviando sucesivas tramas como la mostrada arriba
19
Ejemplos-Interface I2C: TC74
Microcontroladores PIC ©Fernando Nuño-ATE-Universidad de Oviedo
• Generación de bit de start B_START
• Envío de dirección de esclavo y bit R/W=1 TX
• Recoger byte del bus RX
• Generar bit de NOACK B_NOACK
• Generar bit de STOP B_STOP
Ejemplo de Trama:
Lectura “corta” de Temperatura con secuencia de subprogramas a llamar para I2C