Comunicación I2C
Enviado por Mikki • 23 de Mayo de 2018 • 2.135 Palabras (9 Páginas) • 438 Visitas
...
El registro SSPCON este es un registro de control para el módulo la comunicación serial síncrona MSSP, en este caso en el modo I2C. [3]
[pic 4]
Figura 3. Registro SSPCON
SSPM3:SSPM0: Sincronización serie de los bits de selección de puerto.
1111= modo I2C esclavo, dirección de 10 bits con inicio y parada con interrupciones bits habilitado.
1110= modo I2C esclavo, dirección de 7 bits de inicio y parada con interrupciones bits habilitado.
MODULO MSSP
El módulo MSSP tiene estos seis registros para el funcionamiento I2C:
• Registro de control MSSP 1 (SSPCON)
• Registro de control MSSP 2 (SSPCON2)
• Registro de estado MSSP (SSPSTAT)
• Receptor en serie / búfer de transmisión (SSPBUF)
• MSSP Shift Register (SSPSR) - No es directamente accesible
• Registro de direcciones MSSP (SSPADD)
• Registro de máscara MSSP (SSPMSK)
El registro SSPCON permite el control de la operación I2C. Los bits de selección de modo SSPM (Registro SSPCON) permiten seleccionar uno de los siguientes modos I2C:
• Modo I2C Master, reloj = OSC / 4 (SSPADD +1)
• Modo esclavo I2C (dirección de 7 bits)
• Modo esclavo I2C (dirección de 10 bits)
• Modo esclavo I2C (dirección de 7 bits), con interrupciones de bit de inicio y parada activadas
• Modo esclavo I2C (dirección de 10 bits), con interrupciones de bit de inicio y parada activadas
• Funcionamiento maestro controlado por el firmware I2C, el esclavo está inactivo
La selección de cualquier modo I2C con el conjunto de bits SSPEN obliga a los pines SCL y SDA a ser de drenaje abierto, siempre que estos pines estén programados para ser entradas configurando los bits TRISC apropiados.
MODO ESCLAVO
En modo esclavo, los pines SCL y SDA deben configurarse como entradas (TRISC set). El módulo MSSP anulará el estado de entrada con los datos de salida cuando sea necesario (transmisor esclavo).
Cuando se combina una dirección o la transferencia de datos después de que se recibe una coincidencia de dirección, el hardware genera automáticamente el impulso de confirmación (ACK) y carga el registro SSPBUF con el valor recibido actualmente en el registro SSPSR.
Si una o ambas de las condiciones siguientes son verdaderas, el módulo MSSP no dará este pulso ACK:
A) Se ajustó el bit completo de memoria intermedia BF (registro SSPCON) antes de recibir la transferencia.
B) Se configuró el bit de desbordamiento SSPOV (registro SSPCON) antes de recibir la transferencia.
En este caso, el valor del registro SSPSR no se carga en el SSPBUF, pero se establece el bit SSPIF del registro PIR1. El bit BF se borra leyendo el registro SSPBUF, mientras que el bit SSPOV se borra a través del software. La entrada del reloj SCL debe tener un mínimo alto y bajo para el funcionamiento correcto. Los tiempos altos y bajos de la especificación I2C, así como el requisito del módulo MSSP, se muestran en el parámetro de temporización # 100 y el parámetro # 101.
MODO MAESTRO
El modo maestro de operación es soportado por la generación de interrupciones en la detección de las condiciones de inicio y parada. Los bits Stop (P) y Start (S) se borran de un Reset, o cuando el módulo MSSP está deshabilitado. El control del bus I2C se puede tomar cuando el bit P está ajustado, o el bus está inactivo, con los bits S y P limpios.
En modo Maestro, las líneas SCL y SDA son manipuladas por el hardware MSSP.
Los sucesos siguientes provocarán que se configure el bit SSP Interrupt Flag, SSPIF (Interrupción SSP si está activado):
• Estado de inicio
• Estado de parada
• Byte de transferencia de datos transmitido / recibido
• Reconocimiento de transmisión
• Estado de inicio repetido
I2C SOPORTE DE MODO MAESTRO
El modo maestro se habilita ajustando y borrando los bits SSPM apropiados en SSPCON y configurando el bit SSPEN. Una vez que el modo Master esté activado, el usuario tiene las siguientes seis opciones:
1. Afirmar una condición de inicio en SDA y SCL.
2. Afirmar una condición de inicio repetido en SDA y SCL.
3. Escribir en el registro SSPBUF iniciando la transmisión de datos / dirección.
4. Genere una condición Stop en SDA y SCL.
5. Configure el puerto I2C para recibir datos.
6. Genere una condición de Acknowledge al final de un byte recibido de datos.
Nota: El módulo MSSP, cuando se configura en el modo Maestro I2C, no permite la cola de eventos. Por ejemplo, al usuario no se le permite iniciar una condición de inicio e inmediatamente escribir el registro SSPBUF para imitar la transmisión, antes de que la condición de inicio esté completa. En este caso, no se escribirá el SSPBUF y se establecerá el bit WCOL, indicando que no se produjo una escritura en el SSPBUF.
Instrucciones I2C
Para este tipo de comunicación se emplea la directiva.
#use I2C
Estas opciones pueden ir separadas por comas y pueden ser cualquiera de las siguientes opciones:
[pic
...