a09-a10 - memoria 24lc512 con interfaz i2c

Upload: richard-zerpa

Post on 03-Apr-2018

232 views

Category:

Documents


4 download

TRANSCRIPT

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    1/48

    MARINA BENLLOCH VERDEGUERSONIA ESCRIV IVEZ

    SABINA MANZANO RODRGUEZ

    JOSE T. MEDINA LUQUE

    JUAN SEGU MORENO

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    2/48

    I.) INTRODUCCIN........................................................................................................................................................4

    CARACTERSTICAS.............................................................................................................................................................4 DESCRIPCIN......................................................................................................................................................................5

    II.) CARACTERSTICAS ELCTRICAS .................................................................................................................6

    III.) DESCRIPCIONES DE PIN ...................................................................................................................................9

    1.SERIAL ATA (SDA).......................................................................................................................................................92.SERIAL CLOCK(SCL) ...................................................................................................................................................93.WRITE-PROTECT (WP).................................................................................................................................................9

    IV.) CARACTERSTICAS DEL BUS .......................................................................................................................10

    1.BUS NO OCUPADO (A).................................................................................................................................................102.COMIENZO DE TRANSFERENCIA DE DATOS (B) .......................................................................................................103.FINAL DE TRANSFERENCIA DE DATOS (C)................................................................................................................104.DATOS VLIDOS (D) ...................................................................................................................................................105.RECONOCIMENTO........................................................................................................................................................10

    V.) DISPOSITIVO DE DIRECCIONAMIENTO ...................................................................................................10

    1.DIRECCIONAMIENTO CONTIGUO A TRAVS DE MLTIPLES DISPOSITIVOS ..........................................................12

    VI.) OPERACIONES DE ESCRITURA...................................................................................................................14

    1.ESCRITURA DE BYTES.................................................................................................................................................14 2.ESCRITURA DE PGINA...............................................................................................................................................14 3.PROTECCIN DE ESCRITURA......................................................................................................................................14

    VII.) INTERROGACIN DE RECONOCIMIENTO. .........................................................................................16

    VIII.) OPERACIN DE LECTURA. ........................................................................................................................17

    1.LECTURA DE DIRECCIN DE CORRIENTE..................................................................................................................17 2.LECTURA ARBITRARIA................................................................................................................................................17 3.LECTURA SECUENCIAL...............................................................................................................................................18

    IX.) BUS I2C: PRESENTACION DEL PROTOCOLO .......................................................................................241.INTRODUCCIN............................................................................................................................................................24 2.EVOLUCIN DEL BUS I2C..........................................................................................................................................24

    2.1 Principales equipos con el bus incorporado.................................................................................................242.2 Caractersticas ms salientes del bus I2C .....................................................................................................242.3 Criterios para Utilizar I2C...............................................................................................................................24

    X.) PROTOCOLO I2C...................................................................................................................................................25

    1.TERMINOLOGA BSICA DEL BUS I2C.....................................................................................................................252.GENERALIDADES DEL PROTOCOLO ..........................................................................................................................27

    2.1 Caractersticas Generales.................................................................................................................................272.2 Transferencia Del Bit.........................................................................................................................................27

    3.INSTRUCCIONES EN EL BUS I2C...............................................................................................................................283.1 Condiciones de Inicio (Start) y Stop...............................................................................................................283.2 Transfiriendo datos............................................................................................................................................283.3 Reconocimiento...................................................................................................................................................29

    4.ARBITRAJEYGENERACINDESEALES DERELOJ .............................................................................304.1 Arbitraje ...............................................................................................................................................................304.2 Formato................................................................................................................................................................31

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    3/48

    XI.) COMUNICACION I2C ENTRE MICROCONTROLADOR MSP430F149 Y MEMORIAEEPROM 24LC512 .........................................................................................................................................................32

    1.INTRODUCCION......................................................................................................................................................32

    2.COMUNICACIONI2

    CENMEMORIA EEPROM .............................................................................................322.1 Descripcin De Memoria EEPROM. .............................................................................................................322.2 Descripcin de Pines.........................................................................................................................................332.3 Caractersticas del Bus y Funcionamiento ....................................................................................................332.4 Pulso de Acuso de Recibos (ACK)...................................................................................................................342.5 Direccionamiento de Dispositivo.....................................................................................................................342.6 Escritura en Memoria........................................................................................................................................352.7 Lectura de Memoria...........................................................................................................................................35

    3.COMUNICACINI2CENMICROCONTROLADOR.....................................................................................35

    XII.) IMPLEMENTACIN DE I2C POR SOFTWARE EN LA TARJETA DE DESARROLLOEASYWEB II ....................................................................................................................................................................37

    1.CONEXINFSICAENTREMSP430F149YEEPROM24LC512.................................................................37

    2.ACCESOALOS PUERTOS DEI/O ......................................................................................................................383.FUNCIONESDECONTROLDELNEASSDAYSCL ...................................................................................393.1 SetLowSDA y SetHighSDA ..............................................................................................................................393.2 SetLowSCL y SetHighSCL...............................................................................................................................39

    4.FUNCIONESDETRANSFERENCIASDE DATOS .........................................................................................404.1 Funcin i2cInit().................................................................................................................................................404.2 Funcin i2cStart() ..............................................................................................................................................414.3 Funcin i2cStop() ...............................................................................................................................................414.4 Funcin i2cWrite( ).............................................................................................................................................424.5 Funcin i2cRead() ..............................................................................................................................................43

    XIII.) PROGRAMACION DE I2C............................................................................................................................441.DIAGRAMADEFLUJODELAPROGRAMACINDEI2C.........................................................................442.EJEMPLOSDEPROGRAMACIN......................................................................................................................46

    2.1 Ejemplo de lectura secuencial..........................................................................................................................462.1 Ejemplo de escritura ..........................................................................................................................................47

    XIV.) BIBLIOGRAFIA.................................................................................................................................................48

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    4/48

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    5/48

    DESCRIPCIN

    El Microchip Technology Inc. 2AA512/24LC512/24FC512 (24XX512*) es de 64K x (512 Kbit). Esuna memoria tipo EEPROM, capaz de borrar desde 1.8V a 5.5V. Se ha desarrollado paraaplicaciones avanzazas, de baja potencia tales como comunicaciones personales y la adquisicinde datos. La capacidad de escritura de pgina de este dispositivo es de hasta 128 bytes de datos.Este dispositivo es capaz de leer de forma aleatoria y secuencial has ta 512K. Las lneas dedireccin permiten hasta ocho dispositivos en el mismo bus, para espacio de direccionamiento dehasta 4 Mbit.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    6/48

    II.) Caractersticas Elctricas

    Valores absolutos mximos:

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    7/48

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    8/48

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    9/48

    III.) Descripciones de PIN

    Las entradas A0.A1 y A2 son utilizadas por el 24XX512 para operaciones de varios dispositivos.Los niveles lgicos en estas entradas son comparadas con los correspondientes bits en ladireccin del esclavo. El chip es seleccionado si coinciden.Hasta 8 dispositivos pueden ser conectados al mismo bus utilizando diferentes combinaciones deBit escogidas.En muchas aplicaciones, las entradas A0,A1y A2 del chip de direccionamiento son difciles deponer a 0 o a 1. Para aplicaciones en las que estos pines son controlados por unmicrocontrolador u otro dispositivo lgico programable, los pines del chip de direccionamientodeben ser puestos a 0 1 lgicos antes de que la operacin del dispositivo normal proceda.

    1. SERIAL ATA (SDA)

    Este es un pin bidireccional usado para transferencia de direcciones y entrada de datos y salida dedatos del dispositivo. El bus SDA requiere una resistencia de subida a Vcc (tpicamente 10k para100kHz, 2k para 400kHz y 1Mhz).Para una transferencia de datos normal, el SDA permite cambiar solo durante bajo SCL. Loscambios durante SCL alto estan reservados para indicar las condiciones de inicio y fin.

    2. SERIAL CLOCK (SCL)

    Este pin se utiliza para sincronizar la transferencia de datos hacia y desde el dispositivo.

    3. WRITE-PROTECT (WP)

    Este pin tampoco puede conectar Vss o Vcc. El circuito interno de bajada en este pin mantendrel dispositivo en estado desprotegido si la flotacin izquierda, sin embargo, la flotacin de este pinno esta recomendada para muchas aplicaciones. Si atamos a Vcc,las operaciones normales de la memoria son permitidas (read/write en la memoria entera 0000-FFFF)Si atamos a Vcc, las operaciones de escritura son limitados.Las operaciones de lectura no se venafectadas.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    10/48

    IV.) Caractersticas del bus

    El protocolo del bus tiene las siguientes caractersticas:-La transferencia de datos puede ser iniciada solo cuando el bus no est ocupado.-Durante la transferencia de datos, la lnea de datos debe permanecer estable siempre que la lneadel reloj est a nivel alto.Los cambios en la lnea de datos, mientras la lnea de reloj, deber ser interpretada comocondicin de Comienzo o de Parada.Las siguientes condiciones del bus estn definidas en:FIGURA 4.1

    1. BUS NO OCUPADO (A)

    Ambas lneas (reloj y datos) permanecen altos

    2. COMIENZO DE TRANSFERENCIA DE DATOS (B)

    Una transicin alta o baja de la linea SDA mientras el reloj (SCL) est a nivel alto determina unacondicin de comienzo. Todos los comandos deben ser precedidos por una condicin decomienzo.

    3. FINAL DE TRANSFERENCIA DE DATOS (C)

    Una transicin baja o alta de la linea SDA mientras el reloj (SCL) est a nivel alto determina una

    condicin de parada. Todas las operaciones deben acabar con una condicin de parada.

    4. DATOS VLIDOS (D)

    El estado de la lnea de datos representa datos vlidos cuando, despus de la condicin decomienzo, la linea de datos es estable para la duracin alta del periodo de la seal de reloj.Los datos deben ser cambiados durante el periodo bajo de la seal de reloj. Hay un bit de datospor pulso de reloj.

    Cada transferencia de datos es iniciada con una condicin de comienzo y fin con una condicin deParada. El nmero de bytes de datos transferidos entre las condiciones de comienzo y parada son

    determinadas por el dispositivo maestro.

    5. RECONOCIMENTO

    Cada dispositivo receptor debe generar una seal de reconocimiento despus de la recepcin decada byte. El dispositivo maestro debe generar un pulso de reloj extra el cual es asociado con estebit reconocido. Ver figura 4-2 para el tiempo de reconocimiento.

    NOTA: La memoria 24LC512 no genera ningn bit de reconocimiento si un ciclo de programainterno est en proceso.Un dispositivo de reconocimiento pone a nivel bajo la lnea de SDA durante el reconocimiento delpulso de reloj. La lnea de SDA est estable durante el periodo alto de reconocimiento relacionadocon el pulso de reloj.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    11/48

    Por supuesto, el sistema y el tiempo de mantenimiento deben ser tenidos en cuenta.Durante las lecturas, al finalizar la transmisin de datos, se genera un bit de reconocimiento en elltimo byte que ha sido contabilizado. En este caso, la memoria (24LC512) dejar a nivel alto lalnea de datos para que se pueda generar la condicin de Parada.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    12/48

    V.) DISPOSITIVO DE DIRECCIONAMIENTO

    El primer byte recibido es el byte de control, seguido de la condicin de Comienzo desde eldispositivo maestro (Figura 5-1).El byte de control consiste en un codigo de 4 bits de control; para el 24LC512 este es puesto como1010 binario para las operaciones de lectura y escritura. Los siguientes 3 bits del byte de controlson bits de seleccin del Chip (A2,A1 y A0).Los bits de seleccin del chip permite el uso de hasta 8 dispositivos 24XX512 en el mismo bus yson usados para seleccionar qu dispositivo est accediendo.Los bits de seleccin del chip en el byte de control deben corresponder con los niveles lgicos enlos correspondientes pines A0, A1 y A2 para la respuesta del dispositivo. Estos bits son en efectolos 3 bits ms significativos de la direccin.El ltimo bit del byte de control define la operacin para ser realizada. Cuando se pone a 1 seselecciona la operacin de lectura y cuando se pone 0 se selecciona la operacin de escritura. Lossiguientes 2 bytes recibidos definen la direccin del primer byte de datos (Figura 5-2).

    Puesto que todos A15A0 son utilizados, no hay bits de direccin superior que son nopreocupantes. Los bits de direccin superior son los primeros en transferirse, seguido por los bitsmenos significantes.

    Dependiendo del estado del bit R/W, la 24XX512 seleccionar una operacin de lectura o escritura.

    1. DIRECCIONAMIENTO CONTIGUO A TRAVS DE MLTIPLESDISPOSITIVOS

    Los bits de seleccin del Chip A2, A1 y A0 pueden ser usados para expandir el espacio dedireccionamiento contiguo para 4 Mbits mediante 8 24XX512s en el mismo bus. En ese caso, elsoftware puede usar el bit A0 del byte de control como el bit de direccin A16; A1 como el bit dedireccin A17; y A2 como el bit de direccin A18. No es posible una lectura secuencial a travs delos lmites del dispositivo.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    13/48

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    14/48

    VI.) OPERACIONES DE ESCRITURA

    1. ESCRITURA DE BYTESEl control del cdigo (cuatro bits), la seleccin del chip (tres bits) y el bit de lectura/escritura (que esun nivel lgico bajo) son cronometrados en el bus por el transmisor. Esto indica al receptor que ladireccin de bit ms alta seguir despus de haber generado un bit Acknowledge durante elnoveno ciclo de reloj. Por lo tanto, el siguiente bit transmitido es el bit de orden de la direccin depalabra y debe ser escrita en el indicador de direccin de la memoria 24LC512. El siguiente byte esel bit de direccin menos significativo. Despus de recibir otro Acknowledge de la memoria24LC512, el dispositivo transmitir los datos para ser escritos en la posicin de memoria. Lamemoria 24LC512 reconoce otra vez y se genera una condicin de parada.Esto inicia el ciclo de escritura interna y durante este tiempo, la memoria 24LC512 no generarseal de reconocimiento (Figura 6-1).Si una tentativa est hecha para escribir con el pin WP ms alto, el dispositivo reconocer el orden,

    pero no se escribirn datos y el dispositivo aceptar inmediatamente un nuevo comando. Despusde un comando de escritura de byte, el contador de direccin interno sealar a la posicin dedireccin despus de que fuera escrito.

    2. ESCRITURA DE PGINA

    El bit de control de escritura, la direccin de palabra y los primeros datos del bit son transmitidos ala memoria 24LC512 de la misma manera que se escriben en un bit. Pero en vez de generar unacondicin de parada, el dispositivo transmite hasta 127 bytes adicionales, que temporalmente sonalmacenados en el buffer y sern escritos en la memoria despus de que se transmitan unacondicin de parada. Despus de recibir cada palabra, los siete bits del indicador de direccininferiores son internamente incrementados por uno. Si se transmiten ms de 128 bytes antes de lageneracin de la condicin de parada, el contador de direccin dar una vuelta y los datos

    recibidos previamente sern sobreescritos. Como con la operacin de escritura de byte, una vezque la condicin de parada es recibida, un ciclo de escritura interno comenzar (Figura 6-2). Si sehace una tentativa para escribir con el pin alto de WP, el dispositivo reconocer la orden, pero si nose escribe el ciclo ocurrir que ningn dato ser escrito y el dispositivo inmediatamente aceptaruna nueva orden.

    3. PROTECCIN DE ESCRITURA

    Los pins WP (write-protect ) permiten al usuario el rango (0000-FFFF) cuando el pin est a VCC. Siest conectado al VSS, la proteccin de escritura est desconectada. El pin del WP se muestreaen el bit de Parada para cada comando de Escribtura (Figura 1-1).

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    15/48

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    16/48

    VII.) INTERROGACIN DE RECONOCIMIENTO.

    Ya que el dispositivo no reconocer al ACK durante un ciclo de escritura, este puede ser usado

    para determinar cuando el ciclo se ha completado (este rasgo puede ser usado para maximizar elrendimiento del bus). Primero la condicin de Parada para comandos de escritura es emitida por elmaster, el dispositivo inicia el ciclo de tiempo de escritua internamente.La Interrogacin ACKpuede ser iniciada inmediatamente. Esto implica al master a mandar una condicin de Comienzo,seguida por el byte de control para un comando de escritura (R/W=0). Si el dispositivo est todavaocupado con el ciclo de escritura, entonces no ser devuelto el ACK.Si no se devuelve el ACK, entonces el bit de Comienzo y el byte de control deben ser vueltos aenviar. Si el ciclo se completa, entonces el dispositivo devolver el ACK y el master podrproceder con el siguiente comanda de lectura o escritura. Ver Figura 7-1 para ver diagrama delflujo.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    17/48

    VIII.) OPERACIN DE LECTURA.

    Las operaciones de lectura son iniciadas de la misma forma que las operaciones de escritura aexcepcin de que el bit R/W del byte de control se pone a 1.Hay 3 tipos bsicos de operaciones de lectura: lectura de direccin de corriente, lecura arbitraria ylectura secuencial.

    1. LECTURA DE DIRECCIN DE CORRIENTE

    La 24LC512 contiene un contador de direccin que mantiene la direccin de las ltimas palabrasaccedidas, internamente incrementado por 1.Por lo tanto, si el acceso a la lectura anterior fuese n(n es cualquier direccin legal), la siguiente operacin de lectura de direccin tendra acceso adatos desde la direccin n+1.Sobre recibo del byte de control con el bit R/W puesto a 1, la 24XX512 publica un reconocimiento

    y transmite la palabra de datos de 8-bits. El master no reconocer la transferencia pero generaruna condicin de Parada y la 24LC512 cortar la trasmisin

    2. LECTURA ARBITRARIA

    Las opresiones de lectura arbitraria permiten al master acceder a cualquier posicin de memoria demanera arbitraria. Para hacer funcionar este tipo de operaciones de lectura, primero la direccin depalabra debe estar puesta. Esto se hace mandando la direccin de palabra a la 24LC512 comoparte de la operacin de escritura (el bit R/W pone a 0 ).Despus de mandar las direcciones de palabra, el master generar una condicin de Comienzoseguido del reconocimiento. Esto termina la operacin de escritura, pero no antes de poner el

    indicador de direccin interno. Entonces, el master publica otra vez el byte de control pero con elbit R/W puesto a 1.La 24LC512 publicar entonces un reconocimiento y trasmitir la palabra de datos de 8-bits. Elmaster no reconocer la transferencia pero generar una condicin de Parada lo cual causar quela 24LC512 un corte en la transmisin (Figura 8-2). Despus del comando de lectura arbitraria, elcontador de direcciones internas indicar la localizacin de direccin siguiendo lo ya ledo.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    18/48

    3. LECTURA SECUENCIAL

    Las lecturas secuenciales son iniciadas de la misma forma que la lectura arbitraria excepto quedespus la 24LC512 transmite el primer byte de datos, el master emitir un reconocimiento comooposicin a la condicin de Parada usada en la lectura arbitraria.

    Este reconocimiento dirige la 24LC512a transmitir la siguiente palabra secuencialmente dirigida de8 bit (Figura 8-3). Siguiendo el ltimo byte transmitido al master, el master NO generar unreconocimiento, pero si una condicin de Parada. Proveer lecturas secuenciales, la 24XX512contiene un indicador de direcciones interno el cual se incrementa en 1 al completarse cadaoperacin. El indicador de direcciones permite el contenido de memoria entero para ser leido enserie durante una operacin. El indicador de direcciones interno ir desde la direccin FFFF a ladireccin 0000 si el master reconoce el byte recibido de la direccin de serie FFFF.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    19/48

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    20/48

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    21/48

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    22/48

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    23/48

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    24/48

    IX.) BUS I2C: PRESENTACION DEL PROTOCOLO

    1. INTRODUCCIN

    El ao 1980 Phillips inventa el Bus de 2 hilos I2C para la comunicacin de circuitos integrados. Sehan otorgado licencias a ms de 50 compaas, encontrndonos con mas 1000 dispositivoselectrnicos compatibles con I2C. Originalmente fue especificado para 100 kbits/s eintencionalmente para el control simple de seales, esto, sumado a su bajo costo, versatilidadtcnica y simplicidad aseguraron su popularidad.

    2. EVOLUCIN DEL BUS I2C

    Actualmente el Bus ha sido modificado para alcanzar velocidades de hasta 3.4 Megabits/s.Combinado con una funcin de desplazamiento del nivel de voltaje, en modo High-speed (Hs-mode) ofrece una solucin ideal para los sistemas de tecnologa mezclada, donde las altasvelocidades y la variedad de voltajes (5 V, 3 V o menor) son comnmente usados.El modo Hs es compatible con todos los sistemas existentes del bus I2C, incluyendo el estndaroriginal (S-mode) y el modo Fast (F-mode), actualizacin introducida en 1992, proveyendo 400kbits/s en transferencia. Sistemas de distinta velocidad pueden ser mezclados fcilmente, con undispositivo maestro en modo Hs especialmente desarrollado, la conexin en paralelo es usadapara conectar las partes ms lentas del sistema, todos los dispositivos en modo Hs se comunicarnbidireccionalmente a ms velocidad mientras se utilicen los modos F/S (Fast/Standard) develocidades con las partes ms lentas del sistema.

    2.1PRINCIPALES EQUIPOS CON EL BUS INCORPORADO

    Algunos equipos que ocupan I2C:-Los procesadores de seal en televisores (LA7610, TA1223, DTC810,...)-Memorias 24LCxx-Codificadores de video de reproductores de DVD (SAA 7128, TC 90A32F,...)-Preamplificadores de video en monitores (KB2502 )-Etc...

    2.2CARACTERSTICAS MS SALIENTES DEL BUS I2C-Se necesitan solamente dos lneas, la de datos (SDA) y la de reloj (SCL).-Cada dispositivo conectado al bus tiene un cdigo de direccin seleccionable mediante software.Habiendo permanentemente una relacin Master/ Slave entre el micro y los dispositivosconectados-El bus permite la conexin de varios Masters, ya que incluye un detector de colisiones.-El protocolo de transferencia de datos y direcciones posibilita disear sistemas completamentedefinidos por software.-Los datos y direcciones se transmiten con palabras de 8 bits.

    2.3CRITERIOS PARA UTILIZAR I2C-Un sistema consiste en al menos un microcontrolador y varios sistemas perifricos comomemorias o circuitos diversos-El costo de conexin entre los varios dispositivos dentro del sistema debe de ser el mnimo.-El sistema que utiliza este Bus no requiere una alta tasa de transferencia de datos.-La total eficacia del sistema depende de la correcta seleccin de la naturaleza de los dispositivos yde la interconexin de la estructura del bus.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    25/48

    X.) PROTOCOLO I2C

    1. TERMINOLOGA BSICA DEL BUS I2C

    Diseado por Philips, este sistema de intercambio de informacin a travs de tan solo dos hilospermite a circuitos integrados y mdulos OEM interactuar entre s a velocidades relativamentelentas. Emplea comunicacin serie, utilizando un conductor para manejar el timming (pulsos dereloj) y otro para intercambiar datos.

    Este bus se basa en tres seales:

    SDA (System Data) por la cual viajan los datos entre los dispositivos.SCL (System Clock) por la cual transitan los pulsos de reloj que sincronizan el sistema.GND (Masa) Interconectada entre todos los dispositivos "enganchados" al bus.

    Las lneas SDA y SCL son del tipo drenado abierto, similares a las de colector abierto peroasociadas a un transistor de efecto de campo ( FET). Se deben poner en estado alto (conectar ala alimentacin por medio de resistores Pull-Up) para construir una estructura de bus tal que sepermita conectar en paralelo mltiples entradas y salidas.

    En el diagrama se observa la configuracin elctrica bsica del bus. Las dos lneas decomunicacin disponen de niveles lgicos altos cuando estn inactivas. Inicialmente el nmero dedispositivos que se puede conectar al bus es ilimitado, pero obsrvese que las lneas tienen unaespecificacin mxima de 400pF en lo que respecta a capacidad de carga. La mxima velocidadde transmisin de datos que se puede obtener es de aproximadamente 100Kbits por segundo.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    26/48

    Las definiciones o trminos utilizados en relacin con las funciones del bus I2C son las siguientes:

    TRMINOS DESCRIPCIN

    Transmisor El dispositivo que enva datos al Bus.Receptor El dispositivo que recibe datos desde el Bus.

    Master (Maestro) El dispositivo que inicia una transferencia, genera las seales del reloj ytermina un envo de datos.

    Slave (Esclavo)

    El dispositivo direccionado por un master. Cualquier dispositivo conectado albus incapaz de generar pulsos de reloj. Reciben seales de comando y dereloj proveniente del dispositivo maestro.

    Multi-MasterCuando se conectan varios dispositivos maestros a un mismo bus Ms de unmaestro puede controlarlo al mismo tiempo sin corrupcin de los mensajes.

    Bus Desocupado(Bus Free):

    Estado en el cual ambas lneas (SDA y SCL) estn inactivas, presentando unestado lgico alto. nicamente en este momento es cuando un dispositivomaestro puede comenzar a hacer uso del bus.

    Comienzo (Start):Sucede cuando un dispositivo maestro hace ocupacin del bus, generandoesta condicin. La lnea de datos (SDA) toma un estado bajo mientras que lalnea de reloj (SCL) permanece alta.

    Parada (Stop):Un dispositivo maestro puede generar esta condicin dejando libre el bus. Lalnea de datos toma un estado lgico alto mientras que la de reloj permanecetambin en ese estado.

    Dato Vlido (ValidData):

    Sucede cuando un dato presente en la lnea SDA es estable mientras la lneaSCL est a nivel lgico alto.

    Formato de Datos(Data Format):

    La transmisin de datos a travs de este bus consta de 8 bits de datos ( 1byte). A cada byte le sigue un noveno pulso de reloj durante el cual eldispositivo receptor del byte debe generar un pulso de reconocimiento,conocido como ACK (del ingls Acknowledge). Esto se logra situando la lneade datos a un nivel lgico bajo mientras transcurre el noveno pulso de reloj.

    Direccin(Address):

    Cada dispositivo diseado para funcionar en este bus dispone de su propia y

    nica direccin de acceso, que viene pre-establecida por el fabricante. Haydispositivos que permiten establecer externamente parte de la direccin deacceso. Esto permite que una serie del mismo tipo de dispositivos se puedanconectar en un mismo bus sin problemas de identificacin. La direccin 00 esla denominada "de acceso general", por la cual responden todos losdispositivos conectados al bus.

    Lectura/Escritura(Bit R/W):

    Cada dispositivo dispone de una direccin de 7 bits. El octavo bit (el menossignificativo LSB) enviado durante la operacin de direccionamientocorresponde al bit que indica el tipo de operacin a realizar. Si este bit es altoel dispositivo maestro lee informacin proveniente de un dispositivo esclavo.En cambio, si este bit fuese bajo el dispositivo maestro escribe informacinen un dispositivo esclavo.

    Arbitraje Procedimiento que asegura que si uno o ms master deciden controlar el Busslo uno es permitido a controlarlo y el mensaje no es deteriorado.

    Sincronizacin Procedimiento para sincronizar las seales del reloj de dos o msdispositivos.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    27/48

    2. GENERALIDADES DEL PROTOCOLO

    2.1CARACTERSTICAS GENERALESLa lnea de datos (SDA) y la seal de reloj (SCL) son bidireccionales y se conectan a una fuente detensin positiva a travs de un suministro comn o resistencias de carga.

    2.2TRANSFERENCIA DELBITLos bits de datos transferidos en la lnea SDA deben ser estables cuando la lnea SCL esta a nivel"1". El estado de la lnea SDA en "1" o "0" solo puede cambiar cuando en la lnea SCL la seal es"0".

    Fig.1. Esquema de conexin de dispositivos a las lneas SDA y SCL.

    El Bus I2C soporta diversas tecnologas y por lo tanto los niveles lgicos "0" (Bajo) y "1" (Alto) noestn fijados y dependen de la tensin de alimentacin del circuito. Un pulso de reloj se genera porcada bit de datos transferidos. Cuando la seal de reloj est a 1 los datos transferidos en la SDAdeben ser estables. El estado de la lnea SDA solo puede cambiar cuando en la lnea SCL la seales 0.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    28/48

    3. INSTRUCCIONES EN EL BUS I2C

    Para operar un esclavo sobre el Bus I2C solo son necesarios seis cdigos simples, suficientes paraenviar o recibir informacin:

    1. Un bit de Inicio.2. 7bit o 10bit de direccionamiento.3. Un R/W bit que define si el esclavo es transmisor o receptor.4. Un bit de reconocimiento.5. Mensaje dividido en bytes.6. Un bit de Stop.

    3.1CONDICIONES DE INICIO (START) Y STOPDentro del proceso de transferencia de datos en el Bus I2C hay dos situaciones bsicas que son elInicio y el Stop de toda transferencia de datos. Se define:

    INICIO (START): Una transicin de "1" a "0" (cada) en la lnea de datos (SDA) mientras la lnea delreloj (SCL) esta a "1".

    PARADA (STOP): Una transicin de "0" a "1" (ascenso) en la lnea de datos (SDA) mientras lalnea de reloj (SCL) est a "1".

    3.2TRANSFIRIENDO DATOSEl nmero de bytes que se enven a la lnea SDA no tiene restriccin. Cada byte debe ir seguidopor un bit de reconocimiento (ACK), el byte de datos se transfiere empezando por el bit de mspeso precedido por el ACK.

    Si un dispositivo esclavo no puede recibir o transmitir un byte de datos completo hasta que hayaacabado alguno de los trabajos que realiza, puede mantener la lnea SCL a "0", lo que fuerza almaster a permanecer en un estado de espera. Los datos continan transfirindose cuando eldispositivo esclavo esta listo para otro byte de datos y desbloquea la lnea de reloj SCL.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    29/48

    3.3RECONOCIMIENTOEl bit de reconocimiento es obligatorio en la transferencia de datos. El pulso de relojcorrespondiente al bit de reconocimiento (ACK) es generado por el maestro. El Transmisor

    desbloquea la lnea SDA ("1") durante el pulso de reconocimiento.El receptor debe poner a "0" la lnea SDA durante el pulso ACK de modo que siga siendo "0"durante el tiempo que el master genera el pulso "1" de ACK.Normalmente un receptor cuando ha sido direccionado est obligado a generar un ACK despusde que cada byte ha sido recibido.Cuando un dispositivo esclavo no genera el bit ACK (porque esta haciendo otra cosa y no puedeatender el Bus) debe mantener el esclavo la lnea SDA a nivel "1" durante el bit ACK. El maestroentonces puede generar una condicin de STOP abortando la transferencia de datos o repetir lacondicin de Inicio enviando una nueva transferencia de datos.

    Si un Esclavo -receptor que esta direccionado no desea recibir ms bytes, el master debe detectarla situacin y no enviar ms bytes. Esto se indica porque el esclavo no genera el bit ACK en elprimer byte que sigue. El esclavo pone la lnea SDA a "1" lo que es detectado por el master el cualgenera la condicin de Stop o repite la condicin de Inicio.Si un master-receptor esta recibiendo datos de un esclavo-transmisor debe generar un bit ACK tras

    cada byte recibido de transmisor, para finalizar la transferencia de datos no debe generar el ACKtras el ltimo byte enviado por el esclavo. El esclavo -transmisor debe permitir desbloquear la lneaSDA generando el master la condicin de Stop o de Inicio.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    30/48

    4. ARBITRAJE Y GENERACIN DE SEALES DE RELOJ

    4.1ARBITRAJE

    Un maestro puede iniciar una transmisin slo si el bus esta libre. Dos o ms maestros puedengenerar una condicin de Inicio en el bus lo que da como resultado una condicin de Inicio general.Cada master debe comprobar si el bit de datos que transmite junto a su pulso de reloj, coincide conel nivel lgico en la lnea de datos SDA. El sistema de arbitraje acta sobre la lnea de datos SDA,mientras la lnea SCL esta a nivel "1", de una manera tal que el master que transmite un nivel "1",pierde el arbitraje sobre otro master que enva un nivel "0" a la lnea de datos SDA. Esta situacincontinua hasta que se detecte la condicin de Stop generada por el master que se hizo cargo delBus.En esta figura se ve el arbitraje entre dos master, aunque ms pueden estar involucradosdependiendo de cuantos microcontroladores hay conectados al bus. En el momento en que hayuna diferencia entre el nivel interno de la lnea de datos del master DATA1 y el actual nivel de lalnea de datos SDA, su salida de datos es interrumpida, lo cual significa que un nivel "1" estadominando en el Bus. Esto no afecta los datos transferidos inicialmente por el master ganador.

    El arbitraje puede continuar varios bits hasta que se de la circunstancia de control del Bus por unode los master.Tras el arbitraje los master perdedores se deben poner inmediatamente en modo master-receptor yesclavo pues los datos que enve el master dominante pueden ser para uno de ellos.Un master que pierde el arbitraje puede generar pulsos de reloj hasta el fin de byte en el cual elpierde el arbitraje.En el momento que un master toma el control solo este master toma las decisiones y genera loscdigos de direccin, no existen master centrales, ni existen ordenes prioritarias en el Bus.Especial atencin debe ponerse si durante una transferencia de datos el procedimiento de arbitrajeesta todava en proceso justo en el momento en el que se enva al Bus una condicin de Stop. Es

    posible que esta situacin pueda ocurrir en este caso el master afectado debe mandar cdigos deInicio o Stop.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    31/48

    4.2FORMATOLos datos transferidos tienen la forma de la figura siguiente (esquema de transferencia de bytes enel protocolo I2C):

    Despus de la condicin de Start se enva un cdigo con la direccin de un esclavo. sta direccintiene 7 bits seguidos por un octavo cdigo que corresponde a una direccin R/W (0-indicatransmisin/1-indica solicitud de datos). Una transferencia de datos siempre acaba con unacondicin de Stop generado por el master, sin embargo si un master todava desea comunicarsecon el bus, puede generar repetidamente condiciones de Start y direccionar a otro esclavo singenerar primero la condicin de stop.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    32/48

    XI.) COMUNICACION I2C ENTRE MICROCONTROLADORMSP430F149 Y MEMORIA EEPROM 24LC512

    1. INTRODUCCION

    El protocolo I2C est diseado para comunicar un dispositivo maestro con varios esclavos, a travsde dos lneas de transmisin, una lnea para datos (SDA) y otra para sincronizar (SCL). Lacomunicacin es del ti po serial. En la tarjeta de desarrollo empleada en este ramo, elmicrocontrolador MSP430F149 est conectado a travs de los pines P4.0 y P4.1, a una memoriaEEPROM 24LC512 y a un puerto donde se puede conectar en paralelo otro dispositivo I2C, lafigura 1 muestra un esquema de conexiones I2C de la tarjeta.

    2. COMUNICACION I2C EN MEMORIA EEPROM

    2.1DESCRIPCINDE MEMORIAEEPROM.

    La memoria serial EEPROM 24LC512 est diseada para aplicaciones avanzadas de bajoconsumo, tales como adquisicin de datos o comunicaciones personales. Es capaz de operar entreun rango de 1,8V a 5,5V y su capacidad es de 64 KBytes. La memoria est preparada para operara 400KHz.

    Fig.1. Esquema de conexiones para comunicacin I2C entre microcontrolador y memoriaEEPROM.

    Posee capacidad de escritura por Byte o por conjunto de Bytes. La lectura de la memoria puedeser tanto secuencial como aleatoria. Se puede montar hasta cuatro dispositivos en paralelo sobrela misma lnea de datos. Esto permite crear un sistema de cuatro EEPROM en paralelo con unacapacidad mxima de 256 KByte.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    33/48

    2.2DESCRIPCIN DE PINES

    La EEPROM tiene ocho pines, los cuales se sealan en la Tabla 1.

    Tabla 1 Pines de la memoria serial EEPROM 24LC512 y su funcin

    Nombre Pin FuncinA0 DireccionamientoA1 Direccionamiento

    A2 AlimentacinGND TierraSDA Datos serialSCL SincronizacinWP Bloqueo escrituraVcc +2,5V a +5,5V

    Las entradas A0 y A1 sirven para direccionar el dispositivo esclavo, en este caso la EEPROM.Como son dos bits, existe la posibilidad de cuatro combinaciones posibles y por tanto,comunicacin con cuatro dispositivos diferentes. Los niveles de estos dos pines de entrada soncomparados con los bits de la direccin del esclavo (en este caso direccin 00, ver figura 1) si lacomparacin es verdadera, entonces el dispositivo se selecciona.El pin A2 no est disponible y como se ve en la figura 1, est conectado directamente a +Vcc, locual es un requerimiento para que la EEPROM funcione.Para la transmisin de datos y direcciones se emplea el pin SDA. ste se comporta como unsumidero, para lo cual debe tener conectada una resistencia (usualmente de 2K) a +Vcc, tal comose muestra en la figura 1.La sincronizacin desde y hacia el dispositivo es realizada a travs del pin SCL.

    Existe adems un pin WP, que bloquea la escritura en la memoria si est conectado a +Vcc. Talcomo se aprecia en la figura 1, en la tarjeta utilizada este pin est conectado a GND y por tanto nocuenta con la posibilidad de bloquear la escritura en memoria.

    2.3CARACTERSTICAS DEL BUS Y FUNCIONAMIENTO

    La comunicacin entre el microcontrolador (maestro) y la EEPROM (esclavo), se hace a travs deun bus de dos lneas bidireccionales (SDA y SCL). El Bus es controlado por el dispositivo maestro,el que genera una seal de reloj (SCL), controla el acceso al Bus y genera las condiciones departida y detencin, que sern explicadas ms adelante.Tanto el maestro, como el esclavo pueden ser empleados como transmisor o receptor, lo cual esdeterminado por el microcontrolador.El Bus de comunicaciones se caracteriza por cuatro estados de inters, definidos en la tabla 2.

    De la tabla 2, apreciamos que tras estar el bus desocupado (ambos en alto), se produce un cantode bajada en la lnea SDA (condicin de partida), luego el reloj comienza su ciclo de trabajo. Paraobtener un dato vlido se debe haber dado la condicin de partida y adems durante el ciclo enalto de SCL se debe mantener SDA estable, es decir slo se puede enviar dato cuando SCL esten su ciclo bajo. Si se cambiara SDA mientras est el reloj en alto se generara la condicin deparada. Esta situacin genera que slo se pueda escribir un BIT por cada ciclo de reloj.Por ltimo, la condicin de parada se genera cuando el ciclo de reloj est en alto y SDA genera uncanto de subida. De esta manera vuelve el Bus a estar desocupado.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    34/48

    Tabla 2 Caractersticas del Bus: Estados de inters de acuerdo a la definicin del protocolo

    Estado SDA SCL

    Bus Desocupado alto altoPartida de Tx canto de bajada altoDetencin de Tx canto de subida altoDato Vlido datos bajo

    2.4PULSO DE ACUSO DE RECIBOS (ACK)

    Una vez direccionado un dispositivo, este debe responder con un pulso acuso de recibo (ACK)tras la recepcin de cada Byte, lo cual requiere que el maestro genere un ciclo de reloj extra. Trasenviar los ocho primeros bits (un Byte), el transmisor debe desocupar la lnea de datos parapermitir que el receptor mantenga estable en bajo la lnea de datos, mientras se produce el cicloalto del reloj.Nota: La EEPROM no genera el pulso si existe un ciclo interno programado activo.

    2.5DIRECCIONAMIENTO DE DISPOSITIVO

    Tras la condicin de partida, el maestro enva un Byte de control (ver figura 2), el cual contiene enlos 4 primeros bits un 1010, cdigo que indica operacin de lectura y escritura habilitadas.

    Fig.2. Esquema temporal de Bytes enviados en secuencia de direccionamiento.

    Luego un bit (B0), que corresponde a la direccin de memoria A15 y que permite controlar elacceso a cada mitad del arreglo. Los siguientes dos bits corresponden a A0 y A1, los cualesdeben coincidir con los niveles de los pines para que sea diseccionado el dispositivo. En nuestrocaso, de acuerdo a la figura 1, A0 y A1 deben estar en 00 para que se active el dispositivo. Elltimo bit define si se escribir (en 0) o se leer (en 1). Luego de este Byte el esclavo enva unpulso de acuso de recibo. Tras el envo del Byte de control y el pulso de acuso, se envan los dosBytes que definen la direccin del arreglo donde se realizar la operacin.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    35/48

    2.6ESCRITURA EN MEMORIA

    Existen dos maneras de escribir en memoria, escribiendo por Byte o escribiendo por pgina deBytes (64 Bytes). Para realizar el primer tipo de escritura, se procede como se describe en la figura2, y a continuacin del Byte de Direccin Baja (tras recibir pulso de acuso), se enva el Byte que sedesea escribir en memoria. La EEPROM enva el pulso de acuso de recibo, y luego se genera laseal de parada. Tras haber sido escrito un Byte, el puntero local de direccionamiento seencontrar en la direccin siguiente a la que fue escrita.Para escribir una pgina de Bytes, se procede de igual manera que para escribir un slo Byte, peroen vez de generar la condicin de parada se siguen enviando Bytes. Para finalizar se genera lacondicin de parada y luego comienza el proceso de escritura de la EEPROM.

    2.7LECTURA DE MEMORIA

    Existen tres maneras de leer la memoria, la lectura de direccin actual, la lectura aleatoria y lasecuencial.Para realizar una lectura de direccin actual, se enva el Byte de control con R/W en uno, luego eldispositivo responde un pulso de acuso y enva el Byte que estaba siendo apuntado en esemomento por el puntero local de direccionamiento. (Cabe recordar que si la accin anterior opercon el Byte n, entonces en la siguiente operacin el puntero estar apuntando a n+1)Para una lectura aleatoria, se debe primeramente realizar el proceso de escritura descrito en lafigura 2, con la direccin de memoria que se desea acceder. Luego el maestro genera unacondicin de partida que permite terminar el ciclo de escritura, pero no mueve el puntero local. Asse enva el Byte al cual apuntaba el puntero. Luego de esto se genera la condicin de parada y elpuntero queda sobre la siguiente direccin.El modo de lectura secuencial funciona exactamente igual que para la lectura aleatoria, slo que altransmitir la memoria el primer Byte, el maestro genera un pulso de acuso de recibo, esto haceque la EEPROM transmita la prxima direccin secuencial. Cuando se desee interrumpir la lectura,se enva en vez de un pulso de acuso de recibo, una condicin de parada. El puntero slo permiteleer en serie la mitad del contenido de la memoria durante una sola operacin. Esto se debe a quehay que cambiar el bit B0 para acceder a la otra mitad de la memoria.

    3. COMUNICACIN I2C EN MICROCONTROLADOR

    Como se explic anteriormente, el MSP430F149 no posee un mdulo de hardware dedicado agenerar I2C, por lo que se necesita que este sea implementado por software. Para dicho efectohay dos pines dedicados, el P4.0 dedicado a transmitir datos (SDA) y el P4.1 empleado como reloj(SCL). Estos dos puertos deben ser configurados y inicializados dentro del cdigo de programacin

    del microcontrolador.Para configurar un puerto se necesita de ciertos registros, para nuestro caso estamos ocupando elpuerto cuatro, para el cual slo se deben configurar cuatro registros.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    36/48

    Tabla 3 Registros para Configurar Puerto P4

    Registro Direccin Tipo de Registro

    P4INP4OUTP4DIRP4SEL

    01Ch01Dh01Eh01Fh

    Slo LecturaLectura/EscrituraLectura/EscrituraLectura/Escritura

    El registro P4IN almacena el bit recibido por la lnea SDA y el P4OUT el bit enviado. Para controlarsi se trabajar como receptor o como transmisor, se cuenta con el registro P4DIR, si est en alto elmicrocontrolador actuar como transmisor y utilizar el registro P4OUT para enviar bits, si esta ennivel bajo, se actuar como receptor y el registro P4IN se utilizar para almacenar los bitsrecibidos. El registro P4SEL selecciona el modo en que se ocuparn los pines, cada pin puedetener dos funciones, en nuestro caso necesitamos activar la funcin I/O para SDA/SCL, por lo queP4SEL debe permanecer en 0.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    37/48

    XII.) EJEMPLO DE IMPLEMENTACIN DE I2C POR SOFTWARE(TARJETA DE DESARROLLO EASYWEB II )

    1. CONEXIN FSICA ENTRE MSP430F149 Y EEPROM 24LC512

    En la tarjeta de desarrollo EasyWeb II el microcontrolador MSP430F149 est conectado a travsde los pines P4.0 (SDA) y P4.1 (SCL) a una memoria EEPROM 24LC512. En la figura 1 se apreciala conexin fsica. Ntese que las lneas de SDA y SCL tambin estn conectadas a un puertoexterno de tal forma que puede ser conectado otro u otros dispositivos esclavos en paralelo si esnecesario.

    Nota: Solo podrn ser conectados 3 dispositivos ms, ya que, la EEPROM posee dos bits dedireccionamiento y esto limita a 4 esclavos en el bus. De lo contrario podra ocurrir un conflicto

    entre dispositivos direccionados.

    En el bus I2C las lneas SDA y SCL deben estar conectadas a Vcc mediante resistencias de pull-up. Como se aprecia en la figura 1 solo SDA tiene la resistencia de pull-up, lo cual implica, como sever mas adelante, que la forma en que se manejan ambas lneas es distinta una de la otra.

    Fig.1. Esquema de conexiones para comunicacin I2C entre microcontrolador y memoriaEEPROM.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    38/48

    2. ACCESO A LOS PUERTOS DE I/O

    Cada puerto del MSP posee 4 registros de 8 bits que permiten controlar la forma de trabajo decada uno de los pines del puerto. Cada bit esta asociado a un pin del puerto. Estos registros son:

    Tabla 1 Registros de control de los puertos del MSP430F149

    Registro Bit x FuncinPnSEL

    01

    Indica modo del puertocomo I/Ola otra funcionalidad

    PnDIR01

    Indica la direccincomo entradacomo salida

    PnOUT01

    Indica el valor de salidasalida bajasalida alta

    PnIN01

    Indica el valor de entradaentrada bajaentrada alta

    Nota: la n representa el nmero del puerto que se desea controlar. La xrepresenta cualquiera

    de los 8 bits (en el registro), o pines (en el puerto).

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    39/48

    3. FUNCIONES DE CONTROL DE LNEAS SDA Y SCL

    Las siguientes son funciones que controlan el estado de las lneas SDA y SCL, es decir si seencuentran en alto 1 o bajo 0.

    Tabla 2 Funciones de control de las lneas SDA y SCL

    Nombre Funcin AccinSetLowSDA Lleva a 0 la lnea SDASetHighSDA Lleva a 1 la lnea SDA

    SetLowSCL Lleva a 0 la lnea SCLSetHighSCL Lleva a 1 la lnea SCL

    Se definirn como operaciones al bit en los registros de control de los puertos. Para esto sernecesario definir antes:

    #define SDA 0x01 // 0000 0001#define SCL 0x02 // 0000 0010

    3.1SETLOWSDAY SETHIGHSDA

    // SDA o P4.0 como salida#define SetLowSDA P4DIR|= SDA;

    // SDA o P4.0 como entrada

    #define SetHighSDA P4DIR&= ~SDA;

    Con lo anterior se declara al pin P4.0 con direccin de salida o entrada respectivamente. En estecaso solo se modifica el registro P4DIR ya que esta lnea posee una resistencia de pull-up y estasdefiniciones provocarn el cambio de estado. Para la lnea SCL la definicin se har de otra forma.

    3.2SETLOWSCL YSETHIGHSCL

    // SCL o P4.1 arroja un 0 a la salida#define SetLowSCL P4OUT &= ~SCL;

    // SCL o P4.1 arroja un 1 a la salida#define SetHighSCL P4OUT |= SCL;

    En este caso, para cambiar el estado de SCL (P4.1) se modifica el registro P4OUT ya que estalnea no esta conectada a una resistencia de pull-up y por lo tanto debe especificarse lo que sedesea que salga por el pin P4.1.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    40/48

    4. FUNCIONES DE TRANSFERENCIAS DE DATOS

    Las siguientes funciones permiten la transferencia de datos entre el MSP y la EEPROM:

    Nombre Funcin Accin

    i2cInit Inicializa el bus.(SDA y SCL en 1)

    i2cStart Establece condicinde partida.

    i2cStop Establece condicinde trmino.

    i2cReadEl MSP lee bytesenviados por laEEPROM

    i2cWrite El MSP escribe bytesen la EEPROM.

    Antes es necesario definir dos constantes:

    #define NO_I2C_ACK0#define OK_I2C_ACK1

    4.1FUNCIN I2CINIT()

    La funcin anterior se encarga de inicializar el bus I2C de tal forma de asegurar que ambas lneasqueden en alto para que despus con una condicin de partida empiece la transferencia de datos.En la figura 4 se puede apreciar est condicin (A).

    void i2cInit(){int j;

    P4SEL &= ~SDA;P4SEL &= ~SCL; // I/O para SDA Y SCL

    P4OUT &= ~SCL; // Salida a ceroP4OUT&= ~SDA; // SDA Open Colector

    P4DIR|= SCL; // SCL COMO SALIDAP4DIR&= ~SDA; // SDA COMO ENTRADA

    SetHighSCL();SetLowSDA();SetHighSDA();

    // Ambas lneas quedan en alto}

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    41/48

    4.2FUNCIN I2CSTART()

    Con esta funcin se genera la condicin de partida necesaria para que los dispositivos esclavos delbus (en este caso la memoria) se preparen para ser direccionados y por ende establecer unaposible conexin con el maestro (MSP). La condicin de partida (B) se representa en la figura 4.Ntese que el cdigo de la funcin asegura primero tener ambas lneas en alto para luego poderbajarlas en el instante correcto.

    4.3FUNCIN I2CSTOP()

    Esta funcin genera la condicin de trmino que corta la conexin establecida entre el maestro yel esclavo diseccionado. En la figura 4 se aprecia dicha condicin (C). Al igual que la funcin en3.2, el cdigo de esta se asegura primero que ambas lneas estn en bajo para luego subirlas enlos instantes correctos de tiempo.

    void i2cStart(){

    SetHighSCL();SetHighSDA();

    SetHighSCL();SetLowSDA();

    SetLowSCL();SetHighSDA();

    // Visto en el analizador lgico como:// SCL ------------------_________________

    // SDA -----____________________---------// 0 2.7 5.5 [s]

    }

    void i2cStop(){int j;

    SetLowSCL();SetLowSDA();SetHighSCL();SetLowSDA();SetHighSCL();SetHighSDA();}

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    42/48

    4.4FUNCIN I2CWRITE()

    A esta funcin se le debe pasar como argumento un char el cual corresponde al byte que setransmitir. A su ves, est retornar un entero de valor 1 que significa que el pulso dereconocimiento ACK fue enviado correctamente. El proceso de escritura de todo el byte lo hacecon el ciclo for. Ntese que las sentencias dentro del ciclo for aseguran la condicin de Datovlido, la cual, establece que un dato (SDA) ser vlido mientras este estable en el perodo alto dela seal de reloj (SCL). En la figura 4 (D) representa la condicin de Dato vlido.

    Estados del Bus I2C

    Fig. 2. Diferentes estados del bus I2C

    int i2cWrite(char a){int i,j;int retorno;

    for(i=0; i

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    43/48

    4.5FUNCIN I2CREAD()

    La funcin i2cRead() permite al MSP leer bytes de datos desde la memoria EEPROM. Con estfuncin se pueden implementar los tres tipos de lectura: De direccin actual, aleatoria y secuencial.Se le debe pasar como argumento un int cuya funcin principal es la de enviar un pulso ACK dereconocimiento a la memoria (transmisor ahora). Recurdese que cuando se leen datos de lamemoria, al finalizar la lectura, el maestro (MSP) no genera pulso de ACK (Ver figura 3) sino quesolo la condicin de parada. Por este motivo es que se le pasa este int de argumento, de tal formaque cuando se quiere dejar de leer el valor de este int es 0 y no se enva el ACK.

    Envos de ACK por parte del MSP en unproceso de lectura

    Fig. 3. Envos de ACK en un proceso de lectura

    Ntese que dentro del ciclo for se asegura la lectura vlida de datos haciendo el reconocimientodel bit durante el perodo alto de SCL.

    char i2cRead(int ack){int i,j;charcaracter=0x00;

    SetLowSCL();SetHighSDA();

    for(i=0; i

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    44/48

    XIII.) PROGRAMACION DE I2C

    1. DIAGRAMA DE FLUJO DE LA PROGRAMACIN DE I2C

    El microcontrolador utilizado debe ser programado para la implementacin del protocolo I2C. Acontinuacin presentamos un diagrama de flujo, el cual nos ayudar a describir la programacin deeste protocolo.

    Fig.1. Diagrama de flujo de la programacin de I2C.

    Lo primero que tenemos que definir en nuestro programa es una seccin de Inicializaciones. Enesta seccin debemos configurar los puertos de nuestro microcontrolador, de manera de podergenerar en la lneas de comunicacin un valor estable (ambas en niveles altos).Una vez que se tiene esta configuracin, se genera una condicin de Start, la cual tal como seobserva en el diagrama, equivale a un cambio (canto de bajada) en la lnea de SDA, mientras semantiene en alto SCL.Luego se deben enviar 8 bits (byte de control), en los cuales se encuentran valores caractersticosde nuestra memoria y el bit de R/W el cual tomar valor cero o uno dependiendo de si se quiere

    escribir o leer.En el caso en que el bit de R/W es cero, procedemos a hacer un llamado a la funcin de escritura,la cual debe enviar datos de 8 bits y verificar si se recibe un acuse de recibo (ACK), en el caso que

    ACK es igual a cero significa que contine el proceso de escritura, de lo contrario pueden haberfinalizado nuestros datos, y debemos generar una condicin de Stop. Para producir esta paradaen la comunicacin es que debemos crear una funcin que genere esta condicin (funcin Stop).

    Ahora, en el caso que el bit R/W es 1, debemos generar la rutina para lectura. Es importanterecordar que existen tres tipos de lectura: Aleatoria, secuencial y lectura de la direccin actual.Es importante recordar que la memoria Eeprom posee una especie de puntero, el cual se queda enel ltimo valor ya sea escrito o ledo.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    45/48

    Si optamos por la lectura de la direccin actual, solo es necesario llamar a la funcin de lectura, yestar verificando constantemente si hay generacin de ACK, ya que tal como ocurre en el procesode escritura, este bit nos indicar si debemos continuar o terminar el proceso generando lacondicin de parada (Stop ).

    Ahora bien, si queremos realizar una lectura secuencial o una aleatorio, debemos antes decomenzar a leer, mover el puntero interno de nuestra memoria. Para realizar esto debemosgenerar un proceso de escritura, donde se enviar la direccin a la cual queremos acceder, demanera de mover el apuntador hacia esa direccin. Una vez realizado este envo, al primer ACKigual a cero salimos de la rutina de escritura, sin generar una condicin de Stop sino que entrandoinmediatamente a la rutina de lectura. De esta forma realizamos el proceso de lectura desde ladireccin en la cual hemos dejado el puntero interno.

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    46/48

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    47/48

    2.1EJEMPLO DE ESCRITURA

    CDIGO COMENTARIOS

    #define EEPROM 0xA0

    main(){int i;char writeText[] = "I2C la lleva";i2cInit ();i2cStart ();i2cWrite(EEPROM);

    i2cWrite(0x00);

    i2cWrite(0x00);

    for(i = 0; i < strlen(writeText); i++)

    i2cWrite(writeText[i]);

    i2cStop();}

    // Inicializamos los puertos

    // Se enva el byte decontrol de la EEPROM// Bits ms significativospara direccionamiento// Bits menos significativosdel direccionamiento// Se escriben los datos enla EEPROM

  • 7/28/2019 A09-A10 - Memoria 24LC512 Con Interfaz I2C

    48/48

    XIV.) BIBLIOGRAFIA

    - www.semiconductors.philips.com/buses/i2c/

    - www.elo.utfsm.cl/~lsb/elo325/datos/msp430x1xx.pdf

    - www.elo.utfsm.cl/~lsb/elo325/clases/Memoria%20Jaime%20Z.pdf

    - www.elo.utfsm.cl/~lsb/elo325/aplicaciones/ApplicatioNotes/slaa115.pdf

    - www.elo.utfsm.cl/~lsb/elo325/datos/24LC512.pdf