0% encontró este documento útil (0 votos)
38 vistas6 páginas

Pre Informe 3

Este documento presenta un pre-informe sobre la práctica de protocolos de comunicación I2C y serial utilizando un microcontrolador PIC18F47K42. El objetivo es almacenar datos binarios enviados por el PC en una memoria 24LC256 utilizando las interfaces serial e I2C. Se diseña una máquina de estados finitos para gestionar los comandos de lectura, escritura y transferencia de datos entre dispositivos. El documento también incluye el marco teórico sobre los protocolos I2C, serial y la estructura de
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
38 vistas6 páginas

Pre Informe 3

Este documento presenta un pre-informe sobre la práctica de protocolos de comunicación I2C y serial utilizando un microcontrolador PIC18F47K42. El objetivo es almacenar datos binarios enviados por el PC en una memoria 24LC256 utilizando las interfaces serial e I2C. Se diseña una máquina de estados finitos para gestionar los comandos de lectura, escritura y transferencia de datos entre dispositivos. El documento también incluye el marco teórico sobre los protocolos I2C, serial y la estructura de
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

PRE-INFORME PRACTICA No.

3
PROTOCOLOS DE COMUNICACIÓN: I2C Y SERIAL

AUTORES:

Dorymar Gómez Chin


Cristhiam Felipe González Méndez
Leonardo Jose Viana De Ávila

PRESENTADO A:
Nini Vanessa Rueda Algarra, Ing.

PONTIFICIA UNIVERSIDAD JAVERIANA


FACULTAD DE INGENIERÍA
DEPARTAMENTO DE ELECTRÓNICA
BOGOTÁ D.C. 2021
1. Introducción:

En esta práctica se busca profundizar los conocimientos obtenidos a través de la asignatura sobre
protocolos de comunicación, en este caso haciendo uso de los protocolos de comunicación serial e
I2C en un microcontrolador PIC18F47K42 de la familia Microchip, para lo cual se establece diseñar
una máquina de estados finitos o FSM por sus siglas en inglés, la cual tiene la función de describir
los estados que debe adoptar el sistema para cumplir con los requisitos establecidos, los cuales se
centran en almacenar en la memoria 24LC256 datos en formato binarios enviados a través del PC
por método serial para ser recibidos por el PIC18F47K42 y posteriormente ser almacenados en la
memoria a través de la interfaz I2C. Para lograr el flujo de datos entre PC, microcontrolador y
memoria se hará uso de diferentes tramas que permitan realizar los comandos de lectura de un byte
(RB), escritura de un byte (WB), lectura de una serie sucesiva de bytes (RS) y escritura de una
serie de bytes (WS).

2. Objetivos
Objetivo General

 Conocer y aplicar los protocolos de comunicación I2C y serial en un microcontrolador.

Objetivos Específicos

 Diseñar una máquina de estados para dar solución a un problema de comunicación serial,
detectando errores y detectar la llegada de una trama errónea.
 Identificar el protocolo I2C a nivel de protocolo software y hardware.
 Implementar la solución propuesta en un microcontrolador mediante lenguaje C.
 Utilizar herramientas de depuración hardware-software.

3. Marco Teórico:

I2C: Es un tipo de bus y protocolo que permite la comunicación serial entre dispositivos maestros y
esclavos, su nombre es la abreviación de Inter Integrated circuits y fue creado a principio de los
años 80s por Philips Semiconductors; este protocolo facilita la comunicación entre
microcontroladores, memorias y demás dispositivos electrónicos, ya que solo requiere de dos cables
de comunicación y una referencia común. Haciendo uso de este bus se pueden interconectar
múltiples dispositivos maestros, los cuales pueden intercambiar información con múltiples esclavos
al iniciar la transferencia de datos, dicha transferencia es de tipo serial y sincrónica, por lo tanto,
una de las líneas de señal marca los pulsos de reloj necesarios para el funcionamiento del protocolo
y la otra se utiliza para intercambiar los datos.

Ilustración 1. Diagrama del bus I2C.

Las señales mencionadas se definen a continuación:


SCL (System Clock): Esta señal trasmite los pulsos de reloj que hacen al sistema síncrono,
permite el inicio de la transferencia de datos y es controlada únicamente por los dispositivos que
son maestros.

SDA (System Data): Esta señal permite la transferencia de datos entre los dispositivos
conectados al bus.

GND: Es la referencia común entre todos los dispositivos conectados. [1][2]

USART: Proviene de las siglas de Universal Synchronous/Asynchronous Receiver Transmitter.


Es un protocolo empleado en comunicaciones Duplex, está en la capacidad de transmitir y
recibir simultáneamente datos, utiliza comunicación serial para transmitir un dato, es decir, sólo
se envía un bit por el canal al tiempo.

Ilustración 2. Protocolo USART.

El formato de envío como se muestra en la ilustración anterior que es utilizado es mediante USART
basado en ventanas o frames, cada ventana posee los elementos mencionados a continuación:
 Un bit de inicio
 Bits de datos
 Uno o dos bits de parada
 Bits de paridad (opcionales) [3]

Trama de comunicación: Es una unidad de envío de datos. Constituye una serie sucesiva de
bits organizados de tal manera que permiten transportar información y que esta sea extraída con
éxito en la recepción.

Ilustración 3. Ejemplo de trama usada para comunicación I2C.


Cola informática: Es una estructura de datos de tipo FIFO (First In First Out), constituye una
secuencia de elementos en la que la operación push (inserción) se realiza por un extremo y la
operación pop (extracción) se realiza por el otro extremo. En una cola informática se cumplen las
siguientes cosas:
- El primer dato en entrar por un extremo de la estructura siempre será el primero en salir por el
otro.
- Sólo se puede acceder al primer y al último elemento de la cola.
- Solo se pueden eliminar elementos al comienzo y solo añadir nuevos elementos al final.[4]

Ilustración 4. Representación de una cola informática.

A continuación, se encuentra nuestra máquina de estados:

Ilustración 5. Máquina de estados del sistema propuesto.


En la ilustración anterior podemos observar la máquina de estados para la práctica. Para esto,
primero que todo inicializamos el sistema y declaramos las variables, se habilita el registro
RXEN para que se pueda iniciar la recepción de los datos y luego a esto se recibe el dato por
UART, procedemos a un estado llamado selector el cual se utiliza para seleccionar que comando
fue el enviado (ya sea RB, RS, WB, WS), al ser seleccionada una de estas, se procede a
almacenar la dirección que en este caso la llamamos ADDx en una variable que será diferente
para cada uno de los casos, además de esto, para el caso de WS y RS se necesita colocar otra
variable llamada datos y num respectivamente, para saber las veces que se necesita que se ejecute
la operación. Luego de tener la dirección, se espera una señal de inicialización (START) del
control Byte Format donde se especifica el esclavo a ser usado, al ser recibida la señal, se
ingresan los 7 primeros bits que corresponden al Control Code y al Chip Select SAddress[0:6] y
el 8 bit que corresponde a la lectura/escritura SAddress[7].

Teniendo en cuenta lo anterior, para el primer caso RB se necesita una lectura aleatoria por lo
cual, la configuración es la siguiente: Después de recibir la señal de START, se procede a
ingresar los 8 bits del control byte format, el bit 8 debe ser configurado en 0, dado el caso que no
se reciba la señal se arrojara un error, por otro lado, si se recibe se espera una señal de
reconocimiento (ACK) si no se recibe también obtendremos una señal de error, si se recibe se
procede a enviar el tramo de 8 bits más significativo de la dirección de la palabra por medio de
comunicación I2C, se espera recibir otra señal de ACK antes de enviar el tramo menos
significativo, al finalizar de enviar la dircción se esperará una señal de ACK y una de START
para proseguir con la instrucción, si no es el caso se obtendrá un error pero si por el contrario si
llegan las señales entonces se procede a configurar el control byte nuevamente pero esta vez
configurando el bit de read/write en “1”, se recibe otra señal de ACK y se procede a enviar los
data bytes de la lectura para posterior a esto enviar una señal negada de ACK y una de STOP para
informar que se acabó la operación de lectura, dado el caso que no se reciban las señales, se
arrojará un error.

El caso para WB es similar al RB solo que, al finalizar el tramo de 8 bits menos significativos, se
procede a escribir el data byte y al finalizar se envía una señal de STOP y ACK para avisar al
sistema que se ha finalizado el comando de escritura. Dado el caso que no se envíen las señales
de ACK durante estados o la de ACK con START, se deberá arrojar un error.

El caso para WS es el mismo para WB solo que al escribir los datos, se tiene una variable i que
incrementará y volverá a ejecutar la operación hasta que la variable que incremente mayor que la
variable datos, también se cumple que, si la señal de ACK no es recibida, se obtendrá un error.

Para RS es similar a lo planteado para RB, pero en este caso se incrementará una variable al
finalizar la lectura de los datos, y toda esta acción será repetida hasta que la variable
incrementada sea mayor a la variable declarada cuando se obtuvo la dirección del dato. Si no se
reciben las señales ACK entre estados, se obtendrá un error.

Referencias:

[1] Robots-argentina.com.ar. 2019. Descripción y funcionamiento del Bus I2C | Robots


Didácticos. [online] Available at: <http://robots-argentina.com.ar/didactica/descripcion-y-
funcionamiento-del-bus-i2c/>

[2] Garcia, A., 2017. Comunicación entre Arduino y Digispark por medio de I2C - Panama
Hitek. [online] Panama Hitek. Available at: <http://panamahitek.com/comunicacion-entre-
arduino-y-digispark/>
[3] Molano, J., 2015. USART Básico - CoffeeBrain-Wiki. [online] Coffeebrain.org. Available at:
<http://www.coffeebrain.org/wiki/index.php?title=USART_B%C3%A1sico&%3A~
%3Atext=USART%20(Universal%20Synchronous%2FAsynchronous%20Receiver%2Cde
%20recibir%20y%20transmitir%20simult%C3%A1neamente>

[4] n.d. [online] Available at: <https://www.ecured.cu/Cola_(Estructura_de_datos)> [Accessed


14 October 2021].

[5] MICROCHIP. 256K I2C™ CMOS Serial EEPROM. [online] Available at:
http://ww1.microchip.com/downloads/en/devicedoc/21203m.pdf

También podría gustarte