Академический Документы
Профессиональный Документы
Культура Документы
El módulo maestro síncrono de puerto serie (MSSPx) es una interfaz serie útil
para la comunicación con otros dispositivos periféricos o microcontrolador.
Estos dispositivos periféricos pueden ser EEPROMs de serie, registros de
desplazamiento, controladores juegan dis-, convertidores A / D, etc. El módulo
MSSPx puede operar en uno de dos modos:
• modo maestro
• modo esclavo
• La paridad del reloj
Bus de datos
Leer Escribir
SSPxBUF reg
S DI X
SSPxSR reg
S HACER X
Shift
Reloj
SS X
SSxControl 2 (CKP, CKE)
Habilitar Selección de reloj
Edge
Select
4
( salida TMR2
2
)
S CK X
prescaler T OSC
Seleccione
el filo 4, 16, 64
Generador
velocidad en baudios
el I 2 interfaz de C soporta los siguientes modos y características: El PIC16F1829 tiene dos módulos MSSP, MSSP1 y MSSP2, cada
módulo operativo independientemente de la otra.
• modo maestro
• modo esclavo
• Byte NACKing (modo esclavo) Nota 1: En los dispositivos con más de un MSSP
• Multi-master apoyo limitado módulo, es muy importante prestar mucha atención a los
bus de datos
interno
[SSPxM 3: 0]
Leer Escribir
Generador
(SSPxADD)
S DA X
sdaX Reloj
SSPxSR
MSb LSb
reloj Cntl
Reconocer Generar
(SSPxCON2)
S CL X
XMIT / VN
Dirección detectar Partido
Bus de datos
interno
Leer Escribir
SSPxBUF reg
CAROLINA DEL SUR lx
Shift
Reloj
SSPxSR reg
SSPxMSK reg
SSPxADD reg
25.2 Modo SPI general Durante cada ciclo de reloj SPI, una transmisión completa de datos dúplex se
produce. Esto significa que, si bien el dispositivo maestro está enviando el MSB de
El Serial Peripheral Interfaz de bus (SPI) es una su registro de desplazamiento (en su pasador SDOx) y el dispositivo esclavo está
sincrónica serie bus de comunicación de datos que funciona en modo leyendo este bit y guardarlo como el LSB de su registro de desplazamiento, que el
dúplex completo. Los dispositivos se comunican en un entorno de maestro / dispositivo esclavo también está enviando a cabo la MSB su registro de
esclavo en el que el dispositivo maestro inicia la comunicación. Un desplazamiento (en su pasador SDOx) y el dispositivo maestro está leyendo este
dispositivo esclavo es controlado a través de una selección de chip bit y guardarlo como el LSB de su registro de desplazamiento.
conocido como Slave Select.
El bus SPI especifica cuatro conexiones de señal: Después de 8 bits se han desplazado hacia fuera, el maestro y el esclavo
• Reloj serie (SCKx) han intercambiado valores de registro. Si hay más datos para el intercambio,
• Serie de datos de salida (SDOx) los registros de desplazamiento se cargan con nuevos datos y el proceso se
• Los datos en serie en (DAKOTA DEL SUR ix) repite. Si los datos son significativos o no (datos ficticios), depende del
• Slave Select (SSx) software de aplicación. Esto lleva a tres escenarios para la transmisión de
datos:
Figura 25-1 muestra el diagrama de bloques del módulo MSSPx cuando se
opera en el modo de SPI.
El bus SPI opera con un único dispositivo maestro y uno o más • Maestro envía datos útiles y esclavo envía datos ficticios.
dispositivos esclavos. Cuando se utilizan varios dispositivos esclavos, se
requiere un esclavo Seleccionar nection con- independiente del • Maestro envía datos útiles y esclavo envía datos útiles.
dispositivo maestro a cada dispositivo esclavo.
• Maestro envía datos ficticios y esclavo envía datos útiles.
Figura 25-4 muestra una conexión típica entre un dispositivo maestro y
múltiples dispositivos esclavos. El maestro selecciona sólo un esclavo a la vez. Las transmisiones pueden implicar cualquier número de ciclos de
La mayoría de los dispositivos esclavos tienen salidas de tres estados por lo reloj. Cuando no hay más datos a transmitir, el maestro deja de
que su señal de salida aparece desconectado del bus cuando no se enviar la señal de reloj y dese- lectos el esclavo.
seleccionan.
Transmisiones implican dos registros de desplazamiento, ocho bits de través de su esclavo línea de selección debe disre- gard las señales de reloj y
tamaño, uno en el maestro y uno en el esclavo. Con el maestro o el de transmisión y no debe transmitir a cabo todos los datos de su propio.
Figura 25-5 muestra una conexión típica entre dos procesadores configurados
como dispositivos maestros y esclavos. Los datos se desplazan fuera de los dos
registros de desplazamiento en el flanco de reloj programarse y asegurada en el
extremo opuesto del reloj.
SCKx SCKx
SPI Maestro
SDOx SDIX SDIX SPI esclavo
general de E / Dakota #1
general / E / S
SCKx
Dakota #2
SCKx
Dakota #3
El módulo MSSPx tiene cinco registros encontrados para la operación en modo SPI.
Estos son:
directamente accesible)
25.2.2 SPI MODO DE FUNCIONAMIENTO Cualquier función de puerto serie que no se desea se puede anular
mediante la programación de la dirección de datos correspondiente (TRIS)
Al inicializar el SPI, varias opciones deben ser especificadas. Esto se realiza
registro para el valor opuesto. El MSSPx consta de a / recibir registro de
mediante la programación de los bits de control apropiados (SSPxCON1 <5:
transmisión de cambio (SSPxSR) y un registro tampón (SSPxBUF). El
0> y SSPxSTAT <7: 6>). Estos bits de control permiten que el siguiente a ser
SSPxSR desplaza los datos dentro y fuera del dispositivo, MSB. El
especificado:
SSPxBUF contiene los datos que se escriben en el SSPxSR hasta que los
• Modo maestro (SCKx es la salida del reloj) datos recibidos son listos. Una vez que se hayan recibido los 8 bits de datos,
• Modo esclavo (SCKx es la entrada de reloj) que byte se trasladó al registro SSPxBUF. A continuación, el Buffer Full
• La polaridad del reloj (estado de reposo del SCKx) Detect poco, BF de la SSPxSTAT registro, y el bit indicador de interrupción,
SSPxIF, se establecen. Esta doble tampón de los datos recibidos
• Fase de entrada de datos de la muestra (medio o al final del tiempo de salida de
datos)
(SSPxBUF) permite que el siguiente byte para iniciar la recepción antes de
leer los datos que se acaba de recibir. cualquier escritura
• Reloj EDGE (datos de salida en flanco ascendente / descendente de SCKx)
SPI Maestro SSPxM <3: 0> = 00xx SPI Slave SSPxM <3: 0> = 010x
= 1010
SDOx SDIX
SDIX SDOx
Registro de Registro de
desplazamiento (SSPxSR)
desplazamiento
S l AV mi SE Le Connecticut
E / S generales SSx
(Opcional) procesador 2
procesador 1
25.2.3 SPI MODO MAESTRO La polaridad del reloj se selecciona programando adecuadamente el bit
CKP de los SSPxCON1 registro y el bit de CKE del registro SSPxSTAT.
El maestro puede iniciar la transferencia de datos en cualquier momento,
Esto entonces, daría formas de onda para la comunicación SPI como se
ya que controla la línea SCKx. El maestro determina cuando el esclavo
muestra en Figura 25-6 , Figura 25-8 y Figura 25-9 , Donde el MSB se
(procesador 2, Figura 25-5 ) Es para transmitir datos por el protocolo de
transmite primero. En el modo maestro, la velocidad de reloj SPI
software. En el modo maestro, los datos son transmitidos / recibidos tan
(velocidad de bits) es programable por el usuario para ser uno de los
pronto como el registro se escribe en SSPxBUF. Si el SPI sólo se va a
siguientes:
recibir, la salida SDOx podría ser dis- personas con capacidades
(programada como una entrada). El registro SSPxSR seguirá
desplazándose en la señal presente en el pin SDIX a la velocidad de reloj • F OSC / 4 (o T CY)
programado. Como se recibe cada byte, se carga en el registro SSPxBUF • F OSC / 16 (o 4 * T CY)
como si un byte recibido normal (interrupciones y bits de estado valor • F OSC / 64 (o 16 * T CY)
apropiado). • Salida de Timer2 / 2
Figura 25-6 muestra las formas de onda para el modo maestro. Cuando se
establece el bit CKE, los datos SDOx es válida antes de que haya un flanco de
reloj en SCKx. El cambio de la muestra de entrada se muestra basado en el
estado del bit de SMP. Se muestra el momento en que el SSPxBUF se carga
con los datos recibidos.
Escribir en
SSPxBUF
SCKx (CKP =
0
CKE = 0)
SCKx (CKP =
1
CKE = 0)
4 modos
de reloj
SCKx (CKP =
0
CKE = 1)
SCKx (CKP =
1
CKE = 1)
(SMP = 0)
7 bits bit 0
entrada de
muestras
(SMP
de = 0)
muestras
SSPxBUF
SDIX
(SMP = 1)
7 bits bit 0
SDIX Entrada
= 1)
SSPxIF (SMP
SSPxSR a
25.2.4 MODO SPI ESCLAVO 25.2.5 SLAVE SELECT sincronización La Slave Select
En el modo esclavo, los datos se transmiten y se reciben en forma de pulsos de reloj también se puede utilizar para sincronizar comuni- cación. Seleccione
externas aparecen en SCKx. Cuando está cerrada la última parte, se establece el bit
la línea esclavo se mantiene alta hasta que el dispositivo maestro está
línea de reloj debe coincidir con el estado de reposo adecuado. La línea de reloj se
bajo, el esclavo sabe que una nueva transmisión se está iniciando. Si
determina por el bit CKP del registro SSPxCON1. Mientras que en modo esclavo, el
final de la transmisión, cuando la línea Esclavo Seleccionar vuelve a
un estado alto. El esclavo está listo para recibir una nueva transmisión
reloj externo es suministrado por la fuente de reloj externa sobre el pasador SCKx.
cuando la línea Slave Select está a nivel bajo de nuevo. Si no se
Este reloj exter- nos debe cumplir con los tiempos mínimos de alta y baja según se
utiliza la línea Esclavo Select, existe el riesgo de que el esclavo
especifica en las especificaciones eléctricas. Mientras que en el modo de suspensión,
Eventualmente no estar sincronizado con el maestro. Si el esclavo
el esclavo puede transmitir / recibir datos. El registro de desplazamiento tiene una
pierde un poco, siempre será un bit apagado en el futuro las
velocidad de la entrada de pin SCKx y cuando se recibe un byte, el dispositivo
transmisiones. El uso de la línea de esclavos Select permite el esclavo
generaciones eRate una interrupción. Si está habilitado, el dispositivo despertar de su
y el amo de alinearse al comienzo de cada transmisión. lav Modo de
sueño.
correo. El SPI debe estar en modo esclavo con control de pin SSx
habilitada (SSPxCON1 <3: 0> = 0100).
Cuando se restablece el módulo SPI, la counte bits r es forzado a ' 0 '. Esto se
puede hacer por cualquiera de forzar el pasador SSx a un alto nivel o borrar
el bit SSPxEN.
SCK SCK
SPI Maestro
SDOx SDIX SDIX SPI esclavo
general de Dakota #1
SCK
Dakota #2
SCK
Dakota #3
SCKx (CKP =
0
= 0)
SCKx (CKP =
1
CKE = 0)
Escribir en
SSPxBUF
Registro de desplazamiento SSPxSR y
recuento de bits se restablecen
SSPxBUF a
SSPxSR
SSPxBUF SSx
Interrupt CKE
bit 0
SDIX Entrada
SSPxIF
Bandera
SSPxSR a
opcional
SCKx (CKP =
0
= 0)
SCKx (CKP =
1
CKE = 0)
Escribir en
SSPxBUF
SSPxBUF SSx
SDOx 7 bits 6 bits 5 bits 4 bits 3 bits bit 2 bit 1 bit 0
Interrupt CKE
SDIX Entrada
SSPxIF
bandera
SSPxSR a
detección activa de
no es opcional
SCKx (CKP =
0
= 1)
SCKx (CKP =
1
CKE = 1)
Escribir en
SSPxBUF
Válido
SSPxBUF
SDOx SSx 7 bits 6 bits 5 bits 4 bits 3 bits bit 2 bit 1 bit 0
Interrupt CKE
SDIX Entrada
SSPxIF
Bandera
SSPxSR a
Escribe detección de
colisiones activo
25.2.6 SPI funcionamiento en modo SLEEP en modo maestro SPI, relojes de En el modo Maestro SPI, cuando se selecciona el modo de reposo, todos los
módulo puede estar funcionando a una velocidad diferente que cuando está en relojes del módulo se detuvieron y la transmi- sión / recepción permanecerá en ese
estado hasta que el dispositivo se activa. Después de que el aparato vuelve al
modo de máxima potencia; en el caso del modo de suspensión, todos los relojes
modo de marcha, la ULE mo- reanudará la transmisión y recepción de datos. En el
se detienen. Especial cuidado debe ser tomado por el usuario cuando el reloj
modo SPI esclavo, el SPI Transmitir / Recibir registro de desplazamiento funciona
MSSPx es mucho más rápido que el reloj del sistema. En el modo esclavo, cuando
de forma asíncrona al dispositivo. Esto permite que el dispositivo que se coloca en
se habilitan las interrupciones MSSPx, después de que el maestro se completa el
el modo de suspensión y los datos que se desplaza hacia el / Recibir registro de
envío de datos, una interrupción MSSPx despertará el controlador del sueño. Si no desplazamiento de transmisión SPI. Cuando se han recibido todos los 8 bits, el bit
se desea una salida del modo de suspensión, Rupts MSSPx inter deben ser indicador de interrupción MSSPx se establecerá y si está activado, se activará el
desactivados. dispositivo.
inscribirse en
Nombre El bit 7 El bit 6 bit 5 bit 4 bit 3 bit 2 El bit 1 El bit 0
Página
INLVLC INLVLC7 ( 1) INLVLC6 ( 1) INLVLC5 INLVLC4 INLVLC3 INLVLC2 INLVLC1 ( 1) INLVLC0 ( 1) 142
PIE1 TMR1GIE UNA MUERTE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE 94
SSP1CON3 ACKTIM PCIE SCIE BOEN SDAHT SBCDE UNA GALLINA DHEN 296
TRISC TRISC7 ( 1) TRISC6 ( 1) TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 ( 1) TRISC0 ( 1) 140
Leyenda: - = Unimplemented ubicación, leído como ' 0 '. Las celdas sombreadas no son utilizados por el MSSP1 en modo SPI.
* Página proporciona información de registro.
Nota 1: PIC16F / LF1829 solamente.
2: PIC16F / LF1825 solamente.
V re re
• Reloj serie (SCLx) Dominar Esclavo
• Los datos de serie (sdaX)
sdaX sdaX
Figura 25-11 muestra el diagrama de bloques del módulo MSSPx cuando
se opera en I 2 el modo C.
En algunos casos, el maestro puede querer mantener trol con- del autobús y
volver a iniciar otra transmisión. Si es así, el dispositivo maestro MA Y Se nd
Si existe el esclavo solicitado en el autobús, se res pon d con un bit de
otro bit de inicio en lugar del bit de parada o el último bit de ACK, cuando
reconocimiento, conocido de otra manera como un ACK. El maestro continúa
está en modo de recepción. el I 2 C bus especifica tres protocolos de
entonces, ya sea en modo de transmisión o modo de recepción y el esclavo
mensajes;
continúa en el com- plemento, ya sea en modo de recepción o el modo de
transmisión, respectivamente.
• Un solo mensaje, donde un maestro escribe datos en un esclavo.
Un bit de inicio está indicado por una transición de alto a bajo de la línea de sdaX
mientras que la línea SCLx se mantiene alta. Dirección y datos de bytes se envían, el • Un solo mensaje, donde un maestro lee datos de un esclavo.
bit más significativo (MSB) en primer lugar. El Leer bits / escritura se envía como un
uno lógico cuando el maestro tiene la intención de leer datos desde el esclavo, y se • mensaje donde un maestro inicia un mínimo de dos escrituras, o
envía como un cero lógico cuando se tiene la intención de escribir datos en el esclavo. dos lecturas, o una combinación de escrituras y lecturas, a uno o
más esclavos combinado.
Cuando un dispositivo está transmitiendo un uno lógico, o dejar que el flotador 25.3.2 ARBITRAJE Cada dispositivo maestro debe controlar el bus para
línea, y un segundo dispositivo está transmitiendo un cero lógico, o que los bits de inicio y parada. Si el dispositivo detecta que el bus está ocupado, no
sostiene la línea de baja, el primer dispositivo puede detectar que la línea no puede comenzar un nuevo mensaje hasta que el autobús regresa a un estado
es un uno lógico. Esta detección, cuando se utiliza en la línea de SCLx, se
inactivo.
denomina reloj de estiramiento. Reloj de estiramiento da dispositivos esclavos
un mecanismo para controlar el flujo de datos. Cuando se utiliza esta detección
en la línea sdaX, se llama arbitraje. Arbitraje asegura que sólo hay cando un Sin embargo, dos dispositivos maestros pueden tratar de iniciar una
dispositivo maestro comuni- en cualquier momento único. trans- misión en o alrededor del mismo tiempo. Cuando esto ocurre, el
proceso de arbitraje comienza. Cada transmisor comprueba el nivel de
la línea de datos sdaX y lo compara con el nivel que se espera
encontrar. El primer transmisor de observar que los dos niveles no
25.3.1 ESTIRA RELOJ coinciden, pierde arbitra- ción, y debe dejar de transmitir en la línea
SCLx después de recibir o enviar un poco, lo que indica que aún no está listo
primer transmisor entonces observa que el nivel de la línea es diferente
para con- tinue. El maestro que se comunica con el esclavo intentará elevar la
de lo esperado y concluye que otro transmisor está comunicando.
línea SCLx con el fin de transferir el siguiente bit, pero detectará que la línea de
reloj aún no ha sido puesto en libertad. Debido a la conexión SCLx es de drenaje
abierto, el esclavo tiene la capacidad de mantener que el bajo de línea hasta que
está listo para continuar la comunicación. Reloj de estiramiento permite que los El primer transmisor a notar esta diferencia es la que pierde el arbitraje y
receptores que no pueden mantenerse al día con un transmisor para controlar el debe dejar de conducir la línea sdaX. Si este transmisor es también un
flujo de datos de entrada. dispositivo maestro, sino que también debe dejar de conducir la línea
SCLx. A continuación, puede monitorear las líneas para una condición de
parada antes de intentar volver a emitir su transmisión. Mientras tanto, el
otro dispositivo que no ha notado ninguna diferencia entre los niveles
esperados y reales en la línea sdaX continúa con su transmisión original.
Puede hacerlo sin las complicaciones, ya que hasta ahora, la transmisión
aparece exactamente como se esperaba con ningún otro transmisor de
perturbar el mensaje.
TÉRMINO Descripción
Todo lo MSSPx 2 Comunicación C es el byte orientado y desplazado a
cabo MSB. Seis registros SFR y 2 banderas de interrupción Transmisor El dispositivo que desplaza los datos a cabo en
continuación y se puede utilizar en el resto de este documento sin tiempo son el control del bus.
explicación. Esta tabla se adaptó de la Phillips I 2 especificación C. esclavo El dispositivo esclavo que ha recibido una
direccionado dirección coincidente y activa está siendo
registrado por un maestro.
Estos pasadores deben ser fijados por el usuario a las entradas por SEt- ting de petición de escritura Esclavo recibe una dirección coincidente con R /
los bits TRIS apropiados. W poco clara, y está listo para reloj en los datos.
El tiempo de retención del pasador sdaX se selecciona por el bit del registro SDAHT
SSPxCON3. tiempo de espera es el tiempo sdaX se mantiene válida después del El estiramiento del reloj Cuando un dispositivo en la bodega del autobús
flanco de bajada de SCLx. El establecimiento del bit SDAHT selecciona una más SCLx bajo para detener la comunicación.
larga 300 ns mini-tiempo de retención madre y puede ayudar en los autobuses con
colisión de bus En cualquier momento en la línea sdaX es muestreada
gran capacitancia.
por el módulo bajo, si bien es OUT- putting y estado de
alta esperado.
25.4.5 La condición de arranque I 2 especificación de C define una 25.4.7 REINICIO CONDICIÓN el reinicio es válida cualquier momento que un
condición de arranque como una transición de sdaX de un alto a un parada sería válida. Un maestro puede emitir un reinicio si desea mantener el
estado bajo mientras que la línea SCLx es alta. A condición de arranque autobús después de terminar el paso de la corriente. Un reinicio tiene el mismo
está siempre gene- ated por el maestro y significa la transición del bus de efecto sobre el esclavo que un comienzo sería, restableciendo toda la lógica de
un inactivo a un estado activo. Figura 25-10 esclavos y el acondicionamiento para el reloj en una dirección. El maestro
puede querer abordar el mismo u otro esclavo.
muestra formas de onda para las condiciones de inicio y parada. Una colisión de
bus puede ocurrir en una condición de inicio si las muestras del módulo de la línea
de baja sdaX antes de afirmar que baja. Esto no se ajusta a la I 2 C Especificación En el modo esclavo de direccionamiento de 10 bits es necesario reiniciar para el
que indica ninguna colisión de bus puede ocurrir en un inicio. maestro a los datos del reloj del esclavo direccionado. Una vez que un esclavo se
ha abordado plenamente, Match- ing dos bytes alto y bajo de dirección, el
maestro puede ISS u ea Reiniciar y la alta dirección de byte con el bit R / W. La
25.4.6 CONDICIÓN DE PARADA
lógica esclavo a continuación, mantenga el reloj y se preparan para datos de reloj
Una condición de parada es una transición de la línea sdaX de bajo a estado a cabo. Después de un partido lleno con R / W claro en el modo de 10 bits, una
alto mientras que la línea SCLx es alta. bandera partido antes se establece y mainta yo Ned. Hasta que un estado STOP,
una dirección de altura con fósforo clara, o de alta dirección de R / W falla.
Nota: Al menos un tiempo de baja SCLx debe aparecer
antes de una parada es válida, por lo tanto, si la línea sdaX pasa a nivel
bajo a continuación, una vez más alta, mientras que la línea SCLx se
Los bits SCIE y PCIE del registro SSPxCON3 pueden permitir la generación
de una interrupción en los modos de esclavos que normalmente no
soportan esta función. Modos de esclavos, donde interrumpen el inicio y
parada del detectan ya están habilitados, estos bits no tendrán ningún
efecto.
sdaX
SCLx
S PAG
de inicio parada
sr
Cambio de los
Cambio de los
datos permitió
datos permitió
Reiniciar
Condición
25.4.9 ACUSE DE SECUENCIA El noveno pulso SCLx para cualquier 25.5 yo 2 C Esclavo MODO
byte transferido en I 2 C está dedicado como un acuse de recibo. Permite
dispositivos de recepción para responder de vuelta al transmisor tirando El modo MSSPx Slave opera en uno de cuatro modos seleccionados en los bits
de la línea de baja sdaX. El transmisor debe liberar trol con- de la línea de SSPxM de ister SSPxCON1 REG. Los modos se pueden dividir en modo de
direccionamiento de 7 bits y 10 bits. Modos de direccionamiento de 10 bits
durante Thi s tiempo para cambiar en la respuesta. El Reconocimiento
funcionan de la misma como 7 bits con un poco de sobrecarga adicional para el
(ACK) es una señal activa baja, por tracción ing la línea baja sdaX
manejo de las direcciones más grandes. Modos con Inicio y las interrupciones
indica al transmisor de que el dispositivo ha recibido los datos
bit de parada operado el mismo que los otros modos con SSPxIF
transmitidos y está listo para recibir más.
adicionalmente conseguir crear después de la detección de un Start, Restart o
detener condición.
al transmisor. El bit ACKDT del ister REG SSPxCON2 se establece / Contiene la dirección de modo esclavo. El primer byte recibido
despejado para determinar la respuesta. hardware esclavo va a generar después de un arranque o condición de reinicio se compara con el
una respuesta ACK si los bits Ahen y Dhen del registro SSPxCON3 son valor almacenado en este registro. Si coincide con el byte, el valor se
activo. El bit de estado ACKTIM sólo se activa cuando se activa el determinar si existe una coincidencia de dirección.
25.5.2 RECEPCIÓN SLAVE Cuando el R / W b eso de un byte de 25.5.2.2 Recepción de 7 bits con recepción dispositivo Ahen y DHEN
dirección coincidente recibido es clara, el bit R / W del registro Esclavo con Ahen y DHEN operación ajustado el mismo que sin estas
SSPxSTAT se borra. La dirección recibida se carga en el registro opciones con interrupciones adicionales y reloj de estiramiento añadido
SSPxBUF y reconocido. después del flanco de otoño-ing 8 de SCLx. Estos interrumpe un adicional llo
w el software esclavo que decidir si quiere ACK o la dirección de byte de
datos de recepción, en lugar del Hardware. Esta funcionalidad añade
Cuando existe la condición de desbordamiento para una dirección
soporte para PMBus ™ que no estaba presente en las versiones
recibida, entonces no se reconoce es dado. Una condición de
anteriores de este módulo. Esta lista describe los pasos que deben ser
desbordamiento se define como se establece ya sea bit BF bit del
tomadas por el software esclavo de utilizar estas opciones para que 2 C
registro SSPxSTAT, o se establece bit SSPxOV bit del registro
catión commun-. Figura 25-15 muestra un módulo usando tanto la dirección
SSPxCON1. El bit BOEN del registro SSPxCON3 modifica esta
operación. Para más información, ver Registro 25-4 . y la retención de datos. Figura 25-16 incluye la operación con el bit SEN de
los SSPxCON2 conjunto de registros.
SSPxCON1, excepto algunas veces en el modo de 10 bits. Ver Sección establece y CKP se aclaró después de la caída de borde 8 de SCLx.
2. S poco de SSPxSTAT se establece; SSPxIF se establece si rupt inter en Inicio 10. esclavo borra SSPxIF.
detectar es ena segundo LED.
Nota: SSPxIF todavía se establece después del flanco de bajada de la novena
3. dirección coincidente con / i borrar el bit W R s rec eived. SCLx incluso si no hay reloj de estiramiento y BF se ha
4. El esclavo tira sdaX enviar un ACK al maestro baja, y borrado. Sólo si NACK se envía al maestro se SSPxIF no
establece SSPxIF bits. establecido
5. El software borra el bit SSPxIF. 11. SSPxIF ajustarse y CKP aclarado después del 8 de flanco de bajada de SCLx
6. El software lee dirección recibida de para un byte de datos recibido.
SSPxBUF borrar el indicador BF. 12. Slave mira ACKTIM poco de SSPxCON3 para determinar la
7. Si SEN = 1; el software esclavo ajusta CKP poco para soltar la fuente de la interrupción.
línea SCLx. 13. esclavo lee los datos recibidos desde SSPxBUF BF claro.
8. Los relojes principales fuera un byte de datos.
9. Esclavo impulsa sdaX enviar un ACK al maestro baja, y 14. Pasos 7-14 son los mismos para cada uno recibió byte de datos.
establece SSPxIF bits.
10. Software borra SSPxIF. 15. Communicat ion está terminado por cualquiera de los esclavos
11. Software lee el byte recibido de SSPxBUF BF claro. el envío de un ACK = 1, o el maestro envía una condición de
parada. Si una parada y de alarma se envía sobre el Stop Detect
12. Pasos 8-12 se repiten para todos los bytes procedentes del está desactivada, el esclavo sólo sabrá sondeando el bit P del
SCLx
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
S P Bus Master envía
Preliminar
SSPxIF
SSPxIF estableció el 9 de
Aprobado por el software Aprobado por el software flanco de bajada de SCLx
BF
En primer byte de
SSPxBUF se lee datos está disponible
en SSPxBUF
SSPxOV
yo 2 C SLAVE, DIRECCIÓN 7-BIT, recepción (SEN = 0, Ahen = 0, DHEN = 0)
SSPxOV porque
•
SSP xBUF todavía está lleno.
SSPxIF
SSPxIF estableció el 9 de
Aprobado por el software Aprobado por el software descendente de SCLx
Preliminar
BF
En primer byte de
datos está disponible
Reloj SSPxBUF se lee se mantiene baja hasta CKP se en SSPxBUF
SSPxOV
ACK no se envía.
yo 2 C SLAVE, DIRECCIÓN 7-BIT, recepción (SEN = 1, Ahen = 0, DHEN = 0)
CKP
A7 A6 A5 A4 A3 A2 A1 ACK D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0
SCLx
SSPxIF
Dirección se
lee de SSBUF Los datos se leen desde SSPxBUF
ACKDT
esclavo de software
CLEA rs ACKDT a ACK el esclavo de software
Preliminar
no ACK
CKP
Cuando DHEN = 1:
CKP es despejado por hardware y SCLx CKP establecido por el software,
CKP es despejado por hardware en el
se estira se libera SCLx
octavo flanco de bajada de SCLx
flanco de bajada de SCLx Cuando Ahen = 1:
ACKTIM
ascendente 9 de SCLx
•
S
PAG
comunicados de maestros
R/W=0
SdaX a esclavo para la secuencia de ACK
SCLx
12345678 9 12345678 9 12345678 P maestro envía
9
S
SSPxIF
No en terru pt después si
Aprobado por el software
no ACK del Esclavo
BF
Recibido
dirección se carga en SSPxBUF Los datos recibidos se encuentra SSPxBUF puede ser
disponible en SSPxBUF
byte es cargado
ACKDT
Preliminar
softw esclavo son despeja
eslavo ES No
ACKDT a ACK cualquier momento antes del próximo
termina ACK
el byte recibido
CKP
Cuando Ahen = 1; i CKP N ° s t borra si no
Cuando DHEN = 1;
en el octavo flanco de bajada de Establecido por software, lea ACK
en el octavo flanco de bajada de SCLx
SCLx de un byte de dirección, de un byte de datos recibidos, CKP se liberación SCLx
CKP se borra borra
yo 2 C SLAVE, DIRECCIÓN 7-BIT, recepción (SEN = 1, Ahen = 1, DHEN = 1)
ACKTIM
PAG
PIC16F / LF1825 / 1829
Tras el ACK, hardware esclavo borra el bit CKP y el pasador SCLx se 1. Maestro envía una condición de inicio en sdaX y SCLx.
mantiene baja (ver Sección 25.5.6 “Reloj de estiramiento” para más
detalles). Al estirar el reloj, el maestro será incapaz de hacer valer otro 2. S poco de SSPxSTAT se establece; SSPxIF se establece si rupt inter en Inicio
pulso de reloj hasta que se haga el esclavo la preparación de los datos de detectar es ena segundo LED.
transmisión.
3. dirección coincidente con el bit R / W es recibida por el ajuste
SSPxIF poco esclavo.
Los datos de transmisión ha de ser cargado en el SSPxBUF registro que 4. Esclavo de hardware genera un ACK y establece SSPxIF.
también carga el registro SSPxSR. A continuación, el pasador SCLx debe ser
puesto en libertad al establecer el bit CKP del registro SSPxCON1. Los ocho
5. SSPxIF poco se borra por el usuario.
bits de datos son desplazados hacia fuera en el borde descendente de la
6. El software lee la dirección recibida de SS PAG xBUF,
entrada SCLx. Esto asegura que la señal sdaX es válida durante la hora de
despejando BF.
SCLx.
7. R / W es s et s o CKP se borra automáticamente
después de que el ACK.
El pulso ACK desde el maestro-receptor es pestillos d de
8. El software esclavo carga los datos de transmisión en SSPxBUF.
el flanco ascendente de la novena pulso de entrada SCLx. Este valor ACK se
copia en el ACKSTAT b lo de el registro SSPxCON2. Si se establece ACKSTAT (no
9. bit CKP se establece la liberación de SCLx, permitiendo que el ter Mas- con el reloj
ACK), entonces º ed transferencia de ATA se ha completado. En este caso, cuando
de los datos fuera de l e esclavo.
el ACK no está cerrada por el esclavo, el esclavo va inactivo y espera a que anoth O
er ccurrence del bit de inicio. Si la línea sdaX fue baja (ACK), los datos de 10. SSPxIF se establece después de la respuesta ACK desde el maestro
transmisión siguiente deben ser cargados en el registro SSPxBUF. Una vez más, se carga en el registro ACKSTAT.
el pasador SCLx debe ser liberado mediante el establecimiento de CKP bits. 11. bits SSPxIF se borra.
12. El software esclavo comprueba el bit ACKSTAT para ver si el
maestro quiere marcar salida más datos.
Una interrupción MSSPx se genera para cada byte de transferencia de datos. Nota 1: Si el maestro ACK el reloj será
El bit SSPxIF debe ser despejado por el software y el registro SSPxSTAT se estirado.
utiliza para determinar el estado del byte. El bit SSPxIF se encuentra en el
2: ACKSTAT es el único bit de información actualizada sobre la
flanco de bajada del impulso de reloj novena.
flanco ascendente de SCLx (9º) en lugar de la caída.
25.5.3.1 Modo esclavo del bus de colisión Un esclavo recibe una petición de 13. Pasos 9-13 se repiten para cada byte transmitido.
lectura y comienza el cambio de datos en la línea sdaX. Si se detecta una
colisión de autobús y se establece el bit del registro SBCDE SSPxCON3, se 14. Si el maestro envía un ACK no; el reloj no se lleva a cabo, pero SSPxIF sigue
establece el bit del registro BCLxIF Pirx. Una vez que se detecta una colisión estando ajustado.
de bus, el esclavo va inactivo y espera ser tratado de nuevo. software de 15. El maestro envía una condición de reinicio o una parada.
usuario puede utilizar el BCLxIF bits para manejar una colisión de bus
16. El esclavo ya no va dirigida.
esclavo.
parada
SSPxIF
elimina al software
BF
BF se borra automáticamente
dirección recibida Datos a transmitir se carga en después octavo flanco de bajada de
SSPxBUF SSPxBUF SCLx
CKP
Preliminar
ACKSTAT
Maestros no ACK se
yo 2 C SLAVE, DIRECCIÓN 7-BIT, TRANSMISION (Ahen = 0)
copia en ACKSTAT
R/W
R / W se copia de la
byte de dirección coincidente
D/A
PAG
PIC16F / LF1825 / 1829
El establecimiento del bit del registro Ahen SSPxCON3 permite reloj adicional
de estiramiento y de interrupción gene- ración después del flanco descendente
octavo de una dirección que iguala las recibidas. Una vez que una dirección
coincidente se ha registrado en, CKP se borra y la interrupción SSPxIF se
establece.
Figura 25-18 muestra una forma de onda estándar de un 7 bits dirección del
esclavo Transmisión con Ahen habilitado.
secuencia de ACK
SCLx
12345678 9 123456789 123456789
S
P maestro envía
SSPxIF
software
SSPxBUF Se elimina al
BF
BF se borra automáticamente
dirección recibida se lee de Datos a transmitir se carga en después octavo flanco de bajada de
SSPxBUF SCLx
ACKDT
Preliminar
ACKSTAT
respuesta ACK de
maestría se copia en
SSPxSTAT
yo 2 C SLAVE, DIRECCIÓN 7-BIT, TRANSMISION (Ahen = 1)
CKP
Cuando Ahen = 1; CKP no c Lear ed después
CKP se borra por el hardware después Cuando R / W = 1; Establecido por el de no ACK
de recibir dirección de juego. CKP siempre se borra software, libera SCLx
después de ACK
ACKTIM
ACKTIM se establece el 8 de caída ACKTIM se despeja en el flanco
borde de SCLx ascendente 9 de SCLx
R/W
D/A
PIC16F / LF1825 / 1829
25.5.4 modo esclavo 10-bit de dirección RECEPCIÓN 25.5.5 10-bit de direccionamiento al DIRECCIÓN O DATA HOLD
En esta sección se describe una secuencia estándar de eventos para el módulo Recepción usando 10-bit de direccionamiento al Ahen o conjunto DHEN es el
MSSPx configurado como un I 2 C esclavo en el modo de direccionamiento de 10 mismo que con los modos de 7 bits. La única diferencia es la necesidad de
bits. actualizar el registro SSPxADD utilizando el bit UA. Toda la funcionalidad,
específicamente cuando el bit CKP se borra y la línea SCLx se mantiene baja
Figura 25-19 se utiliza como una referencia visual para esta descripción.
son los mismos. Figura 25-20 se puede utilizar como una referencia de un esclavo
en 10-bit de direccionamiento al conjunto Ahen.
Este es un proceso paso a paso de lo que debe ser hecho por el software de
esclavos para llevar a cabo I 2 comunicación C.
Figura 25-21 muestra una forma de onda estándar para un transmisor esclavo en el modo
1. Bus comienza inactivo.
de direccionamiento de 10 bits.
2. Maestro envía condición de arranque; S poco de SSPxSTAT se establece; SSPxIF
afectada.
parada
SCLx
123456789 123456789 123456789 123456789 P maestro
S
SCLx se mantiene baja
mientras que CKP = 0
SSPxIF
Establecido por hardware en el Aprobado por el software
flanco de bajada noveno
Preliminar
BF
Recibir dirección es Los datos se leen
Si corresponden con las direcciones
leer desde SSPxBUF de SSPxBUF
SSPxADD se carga en SSPxBUF
UA
Cuando UA = 1; Las actualizaciones de software SSPxADD
CKP
Recibe primer byte Dirección Re do eive S CE en Un d re dres s Byte R ECE iv D e ATA Re do eive re a un
SCLx 1 2 3 4 5 6 7 8 9 UA 1 2 3 4 5 6 7 8 9 UA 1 2 3 4 5 6 7 8 9 1 2
S
SSPxIF
PIC16F / LF1825 / 1829
BF
Preliminar
ACKDT
UA
a SSPxADD es
permitió hasta el 9 de actualización
actualización de SSPxADD,
flanco de bajada de SCLx no
SCLx borra UA y libera
yo 2 C SLAVE, DIRECCIÓN 10-BIT, recepción (SEN = 0, Ahen = 1, DHEN = 0)
•
CKP Si cuando Ahen = 1;
en el octavo flanco de bajada de
Establecer CKP con el software
SCLx de un byte de dirección, libera SCLx
CKP se borra
ACKTIM
Re do eiving addr ES s R/W=0 Re do ei vi ng S mi do en re UN dd re s s Byte R mi CEI v mi F rimero Añadir re ss Byte T real academia de bellas artes ns metro eso estaño gramo
ACK = re1 un ejército de reserva segundo yt mi
SSPxIF
BF
Preliminar
recibida es Transferencia de datos está
cargado en SSPxBUF
UA
cargado con dirección recibida
Alta dirección se carga dirección
UA indica SSPxADD SSPxBUF Después SSPxADD se actualiza, de nuevo en SSPxADD
debe actualizarse UA se borra y se libera SCLx bajada 9 de SCLx lee desde SSPxBUF
CKP
Maestros no se copia
yo 2 C SLAVE, DIRECCIÓN 10-BIT, TRANSMISION (SEN = 0, Ahen = 0, DHEN = 0)
ACK
R/W
R / W se copia de la
byte de dirección coincidente
D/A
ha sido recibido
T1 T2 T3 T4 T1 T2 T3 T4 T1 T2 T3 T4 T1 T2 T3 T4 T1 T2 T3 T4 T1 T2 T3 T4 T1 T2 T3 T4
sdaX DX DX, - 1
SCLx
dispositivo maestro
afirma reloj
Reloj maestro
dispositivo libera
WR
SSPxCON1 CKP
25.5.8 LLAMADA GENERAL DIRECCIÓN apoyar el proceso de En el modo de direcciones de 10 bits, el bit UA no se establecerá en la recepción
direccionamiento para el I 2 C bus es tal que el primer byte después de la de la dirección de llamada general. El esclavo se preparará para recibir el
condición de inicio minas generalmente determinantes el dispositivo que va a ser segundo byte como datos, tal como lo haría en el modo de 7 bits.
acuse de recibo. reloj después del borde 8 de la caída de SCLx. El esclavo debe entonces
establecer su valor ACKDT y suelte el reloj con la comunicación progresando
como lo haría normalmente.
La dirección de llamada general es una dirección reservada en el I 2 Protocolo
C, que se define como la dirección 0x00. Cuando el bit GCEN del SSPxCON 2
re Gister está establecido, el módulo esclavo ACK automáticamente la
recepción de esta dirección, independientemente del valor almacenado en
SSPxADD. después de t h e relojes esclavos en una dirección de todos los
ceros con el / W R poco clara, se genera una interrupción y el software de
esclavos pueden leer y responder SSPxBUF.
interrupción
SCLx
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
S
SSPxIF
BF (SSPxSTAT <0>)
Se elimina al SSPxBUF
software se lee
GCEN (SSPxCON2 <7>)
'1'
estándar hasta escrito con un valor de máscara. El registro de máscara FSSPX está
activo durante:
genera todos los impulsos de reloj en serie y las condiciones de inicio y parada.
el modo maestro está habilitado de poner y quitar los bits SSPxM Una transferencia se terminó con una condición de parada o con una condición
apropiadas en el registro SSPxCON1 y activando el bit SSPxEN. En el
de inicio repetida. Puesto que la condición de inicio repetida es también el
modo maestro, las líneas SCLx y sdaX se configuran como entradas y
comienzo de la próxima transferencia en serie, el I 2 bus C no se dará a conocer.
son manipulados por el hardware MSSPx.
(P) y los bits de inicio (S) se borran de un Reset o cuando el módulo MSSPx mientras SCLx emite el reloj en serie. El primer byte transmitido contiene el
está desactivado. trol de la con- I 2 C bus puede ser tomada cuando se esclavo añadir reso o f el dispositivo de recepción (7 bi ts) y la lectura / escritura
establece el bit P, o el bus está inactivo. (R / W) bits. En este caso, el bit R / W será lógica " 0 '. datos en serie se
transmite 8 bits a la vez. Después de cada byte es Transmitir- ted, se recibe
un bit de reconocimiento. De inicio y de parada son las condiciones de salida
En el modo Maestro firmware controlada, código de usuario lleva a cabo todo lo 2 operaciones
para indicar el principio y el final de una transferencia en serie.
de autobuses C sobre la base de inicio y parada del bit de detección del estado. De
• Condición de arranque detecta emite el reloj en serie. datos en serie se recibe 8 bits a la vez. Después de
que se recibe cada byte, se transmite un bit de reconocimiento. Comienzan y
• Detener condición detectada
Condiciones de parada indican el comienzo y el final de la transmisión. Un
• La transferencia de datos byte transmitido / recibido
generador Tasa de baudios se utiliza para establecer la salida cuencia del
• Reconocer transmitidos / recibidos
reloj cuencia en SCLx. Ver Sección 25.7 “Tasa generador de baudios” para
• Inicio repetido genera más detalles.
sdaX DX DX, - 1
SCLx deasserted pero mantiene esclavo SCLx permitió hacer la transición de alto
SCLx
25.6.4 I2 C START MODO MAESTRO por el hardware; la tasa de baudios del generador está suspendido, dejando la
CONDICIÓN DE DISTRIBUCIÓN línea sdaX mantiene baja y la condición de inicio se ha completado.
T BRG T BRG
Escribir en SSPxBUF se produce aquí
T BRG
SCLx
S
T BRG
25.6.5 I2 C MODO MAESTRO REPETIDO SSPxCON2 registro se borrará automáticamente y la Tasa generador de
START condición de temporización Una condición de inicio repetida baudios no se volverá a cargar, dejando el pasador sdaX celebrada bajo. Tan
se produce cuando el bit del registro RSEN SSPxCON2 está programado alta y pronto como se detecta una condición de inicio en los pines sdaX y SCLx, se
la máquina de estado Maestro ya no está activa. Cuando se establece el bit establece el bit S del registro SSPxSTAT. El bit SSPxIF no se establecerá
RSEN, el pasador SCLx está confirmada baja. Cuando el pasador SCLx se hasta que el generador Velocidad de transmisión ha agotado el tiempo.
Escribir en SSPxCON2
ocurre aquí
sdaX = 1,
sdaX = 1, poco RSEN
SCLx (sin cambios) SCLx = 1
y establece SSPxIF
T BRG
SCLx
sr
T BRG
Inicio repetida
25.6.6 I 2 C MODO MAESTRO DE TRANSMISIÓN La transmisión de un byte de 25.6.6.3 ACKSTAT indicador de estado En el modo de transmisión, el bit
datos, una dirección de 7 bits o la otra mitad de una dirección de 10 bits se ACKSTAT de The Register SSPxCON2 r es c leared cuando el esclavo ha
logra simplemente escribiendo un valor al registro SSPxBUF. Esta acción se enviado una RECONOCE (ACK = 0 ) un d se establece cuando el esclavo
establecerá el bit de bandera completa Buffer, BF y permitir que el tipo no reconoce (ACK = 1). Un esclavo envía un RECONOCE cuando se ha
generador de baudios para comenzar el conteo y empezar la siguiente trans- reconocido su dirección (incluyendo una llamada general), o cuando el
misión. Cada bit de dirección / datos se desplazará a cabo en el pasador sdaX esclavo ha recibido correctamente sus datos.
después del flanco de bajada de SCLx se afirma. SCLx se mantiene baja para
un cargo tor vuelco Velocidad de transmisión de Gene- (T BRG). Los datos deben
ser válidos antes de la liberación de alta SCLx. Cuando el pasador se libera
SCLx alta, se llevó a cabo de esa manera para T BRG. Los datos sobre el 25.6.6.4 secuencia de transmisión típico:
pasador sdaX deben permanecer estables para que la duración y un poco de
1. El usuario genera una condición de inicio activando el bit SEN
tiempo de espera después de la siguiente flanco descendente de SCLx.
del registro SSPxCON2.
Después de la octava se desplaza un bit (el flanco de bajada del octavo reloj),
2. SSPxIF se establece por el hardware al finalizar el inicio.
la bandera BF se borra y el maestro libera sdaX. Esto permite que el SLA Dispositivo
ve que se dirige a responder con un bit ACK durante el tiempo de bit noveno si
una coincidencia de dirección occ Urre d, o si se recibió prop- erly datos. El
3. SSPxIF se borra por el software.
estado de ACK se escribe en el bit ACKSTAT en el flanco ascendente de la 4. El módulo MSSPx esperará el tiempo de inicio requerido antes de
novena reloj. Si el maestro recibe un acuse de recibo, el bit de estado cualquier otra operación se lleva a cabo.
Reconocer, ACKSTAT, se borra. Si no es así, se establece el bit. Después de 5. El usuario carga el SSPxBUF con la dirección del esclavo para
la novena reloj, el bit SSPxIF se establece y el reloj maestro (Baud Rate transmitir.
Generator) se suspende hasta que el siguiente byte de datos se carga en el 6. Dirección se desplaza el pasador sdaX hasta los 8 bits se transmiten.
SSPxBUF, dejando SCLx baja y sdaX sin cambios ( Figura 25-27 ). Transmisión comienza tan pronto como se escribe en SSPxBUF.
sdaX A7 A6 A5 A4 A3 A2 A1 ACK = 0 D7 D6 D5 D4 D3 D2 D1 D0
SCLx 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
PAG
SCLx mantiene baja,
SSPxIF
Preliminar
BF (SSP xStat <0>)
SEN
BOLÍGRAFO
I2C MODO MAESTRO forma de onda (TRANSMISIÓN, 7 o 10-bit de dirección)
R/W
PIC16F / LF1825 / 1829
25.6.7 yo 2 C MODO MAESTRO recepción modo Master se 25.6.7.4 típica secuencia de recepción:
activa programando el bit Habilitar Recibir, RCEN bit del registro
1. El usuario genera una condición de inicio activando el bit SEN
SSPxCON2. del registro SSPxCON2.
2. SSPxIF se establece por el hardware al finalizar el inicio.
Nota: El módulo MSSPx debe estar en un estado de inactividad
antes de la broca RCEN se establece o se tuvo en cuenta el 3. SSPxIF se borra por el software.
poco RCEN. 4. El usuario escribe SSPxB T F, con la dirección del esclavo a
transmitir y el conjunto de bits R / W.
La tasa de baudios generador comienza a contar y en cada renovación,
el estado de los cambios pin SCLx 5. Dirección se desplaza el pasador sdaX hasta los 8 bits se transmiten.
(Alto-a-bajo / bajo-a-alto) y los datos se desplaza en el SSPxSR. Después de que el Transmisión comienza tan pronto como se escribe en SSPxBUF.
flanco de bajada del octavo reloj, la reciben habilitar el indicador se borra
automáticamente, las tiendas de campaña del con- SSPxSR se cargan en el 6. Los cambios de módulo MSSPx en el bit ACK del dispositivo
SSPxBUF, el bit de bandera de BF se establece, el bit indicador SSPxIF está fijado esclavo y escribe su valor en el bit del registro ACKSTAT
y la tasa de baudios del generador está suspendido de contar, sosteniendo SCLx SSPxCON2.
baja. El MSSPx se encuentra ahora en estado de reposo a la espera de la próxima 7. El módulo de MSSPx genera una interrupción al final del ciclo
orden. Cuando la memoria es leído por la CPU, el bit de bandera de BF se borra de reloj noveno estableciendo el bit SSPxIF.
automáticamente. El usuario puede entonces enviar un bit de reconocimiento al final
de la recepción mediante el establecimiento de la Secuencia de Reconocimiento
8. usuario activa el bit de la RCEN del registro en SSPxCON2 y el maestro
Habilitar, ACKEN bit del registro SSPxCON2.
de los relojes en un byte desde el esclavo.
25.6.7.1 Bandera BF Estado 10. maestra borra SSPxIF y lee el byte recibido de SS px UF,
borra BF.
En operación de recepción, el bit BF se establece cuando un byte de
11. Maestro establece el valor ACK enviado al esclavo en ACKDT
dirección o de datos se carga en SSPxBUF de SSPxSR. Se borra cuando
poco o f los SSPxCON2 registro e inicia el ACK por s b ie g el
se lee el registro SSPxBUF.
bit ACKEN.
25.6.7.2 SSPxOV indicador de estado 12. Masters ACK es sincronizado a cabo al esclavo y SSPxIF se
establece.
En operación de recepción, el bit se establece cuando SSPxOV 8 bits se
reciben en el SSPxSR y el bit de bandera BF ya está establecido de una 13. usuario borra SSPxIF.
recepción anterior. 14. Pasos 8-13 se repiten para cada byte recibido desde el
esclavo.
25.6.7.3 WCOL indicador de estado
15. Maestro envía un ACK o no Detener para finalizar la
Si el usuario escribe el SSPxBUF cuando un reciben ya en curso es (es decir, comunicación.
SSPxSR se sigue desplazando en un byte de datos), se establece el bit WCOL
y el contenido de la memoria intermedia no se han modificado (la escritura no se
produce).
Transmitir Dirección de Esclavo Recibiendo datos del esclavo Recibiendo datos del esclavo
maestro de bus
ACK no se envía termina
software XMIT SEN = 0 transferencia
responde a SSPxIF
Preliminar
BF
El último bit es puesto en SSPxSR y el contenido
(SSPxSTAT <0>)
se descarga en SSPxBUF
I2C MODO MAESTRO DE ONDA (recepción, dirección de 7 BIT)
ACKEN
RCEN
Maestro
RCEN aclaró
configurado como un receptor mediante la programación SSPxCON2 <3> (= RCEN 1) ACK del Maestro sdaX = RCEN borra
PIC16F / LF1825 / 1829
25.6.8 ACUSE DE TIEMPO SECUENCIA 25.6.9 PARADA condición de tiempo Un poco de parada se afirma en el
pasador sdaX al final de una recepción / transmisión mediante el establecimiento de la
Secuencia de parada bit de habilitación, PEN poco de la SSPxCON2 registro. Al final
Una secuencia se activa la confirmación mediante el establecimiento de la
de una recepción / transmisión, la línea SCLx se mantiene baja después de que el
secuencia de aceptación bit de habilitación, ACKEN bit del registro
flanco descendente de la novena reloj. Cuando se establece el bit PEN, el maestro
SSPxCON2. Cuando este bit está establecido, el pasador SCLx se tira bajo y
hará valer la línea baja sdaX. Cuando la línea se muestrea sdaX baja, la velocidad del
el contenido del bit de datos Reconocer se presentan en el pasador sdaX. Si
generador de baudios se vuelve a cargar y una cuenta atrás hasta ' 0 '. Cuando los
el usuario desea generar un acuse de recibo, entonces el bit ACKDT debe ser
tiempos Velocidad de transmisión del generador fuera, el pasador SCLx serán
limpiado. Si no es así, el usuario debe establecer el bit ACKDT antes de iniciar
llevados alto y una camiseta BRG ( Velocidad de transmisión del generador recuento de
una secuencia de acuse de recibo. La tasa de baudios Generador cuenta
entonces por un periodo de transición (T BRG) y el pasador SCLx se deasserted vuelco) fuera del plazo establecido deasserted el pasador sdaX. Cuando el pasador
(a nivel alto). Cuando el pasador SCLx se muestrea alta (arbitraje del reloj), la sdaX se muestrea alta mientras SCLx es alto, se establece el bit P del registro
Tasa de baudios Generador cuenta para T BRG. El pasador SCLx continuación, SSPxSTAT. A BRG después, el bit PEN se borra y se establece el bit SSPxIF ( Figura
se tira bajo. Después de esto, el bit ACKEN se automática- mente se aclaró, la 25-30 ).
comienza aquí,
ACKEN borra automáticamente
escribir en SSPxCON2
ACKEN = 1, ACKDT = 0
T BRG T BRG
sdaX D0 ACK
SCLx 8 9
SSPxIF
Cero por
SSPxIF fijado en Reconocer secuencia
despejado en software
el final de recibir
software SSPxIF fijado en el final de
Reconocer secuencia
Nota: T BRG = un periodo Velocidad de transmisión del generador.
Escribir en SSPxCON2, SCLx = 1 para T BRG, seguido por sdaX = 1 para T BRG
establecer PEN
después sdaX muestreado alta. se establece P bit (SSPxSTAT <4>).
T BRG
SCLx
sdaX ACK
PAG
06/25/10 SLEEP FUNCIONAMIENTO Mientras que en el modo de suspensión, el I 2 25/06/13 MULTI -MASTER COMUNICACIÓN,
módulo esclavo C puede recibir direcciones o datos y cuando se produce una COLISION BUS y ARBITRAJE modo Multi-Master de apoyo
coincidencia de dirección o de transferencia de byte completo, despertar el se logra en autobús arbitra- ción. Cuando los bits de salidas master de
procesador de sueño (si está activada la interrupción MSSPx). direcciones / datos en el pasador sdaX, el arbitraje tiene lugar cuando el
maestro emite una ' 1 'En sdaX, dejando flotar sdaX alto y otro maestro afirma
un' 0 '. Cuando el pasador SCLx flota alta, los datos deben ser estables. Si los
25.6.11 EFECTOS DE A de RESET datos esperados en sdaX es un ' 1 'Y los datos muestreados en el pasador
sdaX es' 0 ', A continuación, una colisión de bus ha tenido lugar. El maestro
A Restablecer desactiva el módulo MSSPx y termina la transferencia de
corriente. establecerá el indicador de interrupción autobús colisión, BCLxIF y
restablecer la I 2 puerto C a su estado inactivo ( Figura 25-31 ). Si una
25/06/12 MULTI-MASTER MODO transmisión estaba en marcha cuando se produjo la colisión de bus, la
transmisión se detiene, la bandera BF se borra, las líneas sdaX y SCLx se
En el modo Multi-Master, la generación de interrupciones en la detección de
deasserted y la SSPxBUF se puede escribir. Cuando el usuario ser- vicios de
las condiciones de inicio y parada permite la determinación de cuando el
la colisión de autobús de rutina de servicio de interrupción y si el me 2 C
bus está libre. El tope (P) y los bits de inicio (S) se borran de un Reset o
autobús es gratuito, el usuario puede reanudar la comu- nicación mediante la
cuando el módulo MSSPx está desactivado. El control de la I 2 bus C se
afirmación de una condición de inicio. Si un Inicio, Inicio repetido, la parada o
puede tomar cuando se establece el bit P del registro SSPxSTAT, o el bus
Reconocer la condición estaba en marcha cuando se produjo la colisión de
está inactivo, tanto con el S y P bits de claro. Cuando el bus está ocupado,
bus, la condición se interrumpe, las líneas sdaX y SCLx son deas- serted y
lo que permite la interrupción FSSPX generará la interrupción cuando se
los bits de control respectivos en el registro SSPxCON2 se borran. Cuando
produce la condición de parada. En la operación multi-master, la línea sdaX
los servicios del usuario del bus COL- lision rutina de servicio de interrupción
debe ser monitoreado de arbitraje para ver si el nivel de señal es el nivel de
y si el me 2 C autobús es gratuito, el usuario puede reanudar la comunicación
salida esperada. Esta comprobación se realiza por el hardware con el
mediante la afirmación de una condición de inicio.
resultado se coloca en el bit BCLxIF. Los estados en los que el arbitraje se
puede perder son:
• Transferencia de direcciones
• Transferencia de datos
BCLxIF
25.6.13.1 autobús colisión Durante una puesta en Si el pasador sdaX se muestrea baja durante este recuento, el BRG se pone
Condición a cero y la línea sdaX se afirma temprana ( Figura 25-34 ). Si, sin embargo, un
" 1 'Se muestrea en el pasador sdaX, el pasador sdaX está confirmada baja al
Durante una condición de inicio, se produce una colisión de bus si:
final de la cuenta de BRG. La Tasa generador de baudios es luego vuelve a
a) sdaX o SCLx se muestrean baja al comienzo de la condición cargar y una cuenta atrás hasta cero; Si el pasador SCLx se muestrea como " 0
de inicio ( Figura 25-32 ). "Durante este tiempo, no se produce una colisión de bus. Al final de la cuenta
b) SCLx se muestrea bajo antes sdaX se afirma bajo ( Figura BRG, el pasador SCLx está confirmada baja.
25-33 ).
Durante una condición de inicio, tanto el sdaX y los pasadores SCLx son
monitoreados. Nota: La razón de que la colisión del autobús no es un fac- tor
Si el pasador sdaX ya es bajo, o el pasador SCLx ya es baja, entonces durante una condición de inicio es que no hay dos maestros
todas de las siguientes situaciones: de bus pueden valer una condición de inicio exactamente al
mismo tiempo. Por lo tanto, un maestro siempre va a valer
• la condición de inicio se aborta,
sdaX antes que el otro. Esta condición no causa una colisión
• la bandera BCLxIF se establece y
autobús porque los dos maestros se les debe permitir a
• el módulo MSSPx se restablece a su estado inactivo ( Figura arbitrar la primera dirección siguiente al de la condición de
25-32 ). inicio. Si la dirección es la misma, el arbitraje se debe
La condición de arranque comienza con los pasadores y sdaX SCLx permitir que continúe en la parte de datos, que se repite en
deasserted. Cuando el pasador sdaX se muestrea alta, la tasa de baudios del marcha o detener condiciones.
Figura 25-33: BUS colisión durante una condición de arranque (SDAX SOLAMENTE)
Establecer BCLxIF,
sdaX
SCLx
SEN
permiten
SdaXlasmuestreado
condiciones de arranque
baja antes si sdaX = 1, SCLx
Condición de arranque. Establecer BCLxIF.
SSPxIF
sdaX = 0, SCLx = 1
T BRG T BRG
sdaX
BCLxIF
S '0' '0'
Figura 25-35: BRG REAJUSTE POR ARBITRAJE SDA durante el arranque CONDICIÓN
sdaX = 0, SCLx = 1
Establecer S
Menos de T BRG
T BRG
SCLx
S
SEN
SSPxIF
= 1, Las interrupciones despejado por
25.6.13.2 autobús colisión durante una repetida Si sdaX es baja, se ha producido una colisión bus (es decir, otro maestro
Condición de inicio está intentando transmitir un dato ' 0 ', Figura 25-35 ). Si se realiza un
muestreo de alta sdaX, el BRG se vuelve a cargar y comienza el conteo. Si
Durante una condición de inicio repetida, se produce una colisión de bus si:
va de sdaX de alto a bajo antes de los tiempos BRG cabo, ninguna colisión
de bus se debe a que no hay dos maestros pueden valer sdaX
a) Un nivel bajo se muestrea en sdaX cuando SCLx va de bajo exactamente al mismo tiempo. Si va de SCLx de alto a bajo antes de los
nivel a nivel alto.
tiempos BRG fuera y sdaX aún no se ha afirmado, se produce una colisión
b) SCLx pasa a nivel bajo antes de sdaX se afirma bajo, lo que de bus. En este caso, otro maestro está intentando transmitir un dato ' 1 'Durante
indica que otro maestro está intentando transmitir un dato ' 1 '. la condición de inicio repetida, véase Figura 25-36 . Si, al final de la BRG de
tiempo de espera, tanto SCLx y sdaX siguen siendo altos, el pasador sdaX
Cuando el usuario suelta sdaX y se permite que el pasador de flotar alta, es conducido bajo y el BRG se vuelve a cargar y comienza el conteo. Al
el BRG se carga con SSPxADD y cuenta atrás hasta cero. El pasador final de la cuenta, independientemente de la situación del pasador SCLx, el
SCLx es entonces No reafirmada y cuando muestreada alta, se muestrea pasador SCLx es impulsada baja y la condición de inicio repetida es
el pasador sdaX. completa.
Figura 25-36: BUS COLLISION durante una condición de START repetida (caso 1)
sdaX
SCLx
RSEN
BCLxIF
S '
T BRG T BRG
sdaX
SCLx
el software
RSEN
S
'0'
SSPxIF
25.6.13.3 autobús colisión durante una parada La condición de parada comienza con sdaX confirmada baja. Cuando se
Condición muestrea sdaX baja, se permite que el pasador SCLx flotar. Cuando el
pasador se muestrea alta (arbitraje reloj), la Tasa de Generador Baud se
colisión de bus se produce durante una condición de parada si:
carga con SSPxADD y cuenta hacia abajo a 0. Después de los tiempos
a) Después de que el pin sdaX ha sido deasserted y se dejó flotar BRG fuera, sdaX se muestrea. Si se muestrea sdaX baja, se ha producido
alta, sdaX se muestrea bajo después de la BRG ha caducado. una colisión de bus. Esto se debe a otro maestro de intentar conducir un
dato ' 0 '( Figura 25-37 ). Si el pasador SCLx se muestrea baja antes de
b) Después de que se deasserted el pasador SCLx, SCLx se muestrea permitir sdaX flotar alta, se produce una colisión de bus. Este es otro caso
bajo antes sdaX pasa a alta. de otro maestro de intentar conducir un dato ' 0 '( Figura 25-38 ).
establecer BCLxIF
sdaX
PEN
BCLxIF
PAG '
sdaX
PEN
BCLxIF
PAG '
Restablecer los
Nombre El bit 7 El bit 6 bit 5 bit 4 bit 3 bit 2 El bit 1 El bit 0 valores de
Página
INLVLC INLVLC7 ( 1) INLVLC6 ( 1) INLVLC5 INLVLC4 INLVLC3 ( 2) INLVLC2 ( 2) INLVLC1 INLVLC0 142
PIE1 TMR1GIE UNA MUERTE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE 94
SSP1ADD ADD7 ADD6 ADD5 ADD4 ADD3 ADD2 ADD1 ADD0 297
SSP1CON2 GCEN ACKSTAT ACKDT ACKEN RCEN BOLÍGRAFO RSEN SEN 295
SSP1CON3 ACKTIM PCIE SCIE BOEN SDAHT SBCDE UNA GALLINA DHEN 296
SSP1MSK MSK7 MSK6 MSK5 MSK4 MSK3 MSK2 MSK1 MSK0 297
TRISC TRISC7 ( 1) TRISC6 ( 1) TRISC5 TRISC4 TRISC3 ( 2) TRISC2 ( 2) TRISC1 TRISC0 140
Leyenda: - = Ubicación sin aplicarse, como leer ' 0 '. Las celdas sombreadas no son utilizados por el módulo MSSP en modo I 2 C ™.
* Página proporciona información de registro.
Nota 1: PIC16F / LF1829 solamente.
25.7 VELOCIDAD GENERADOR línea de reloj del módulo. El dictado lógica Cuando se emite la señal de
recarga depende del modo de la MSSPx está siendo operado en.
El módulo MSSPx tiene una tasa de baudios Generador dispo- poder de
generación de reloj, tanto en lo 2 C y SPI modos maestro. El (BRG) valor de
Tabla 25-4 demuestra frecuencias de reloj basado en ciclos de
recarga Velocidad de transmisión del generador se coloca en el registro
instrucción y el valor cargado en BRG SSPxADD.
SSPxADD ( Registro 25-6 ). Cuando se produce una escritura en SSPxBUF, la
velocidad en baudios rador Gen- se iniciará automáticamente la cuenta atrás.
Una vez que la operación dada es completa, el reloj interno se detendrá ECUACIÓN 25-1:
automáticamente el recuento y el pin de reloj permanecerá en su último
estado. Una señal interna “Reload” en Figura 25-39 desencadena el valor de F OSC
F RELOJ = -------------------------------------------------
SSPxADD a ser cargado en el contador de BRG. Esto ocurre dos veces para • SSPxADD 1 + • • 4 •
cada oscilación de la
SCLx recarga
F RELOJ
F OSC F CY BRG Valor
(2 Rollovers de BRG)
7 bits bit 0
Leyenda:
R = bit de lectura mecánica W = grabable bits T = poco Unimplemented, leer como '0'
u = bit es sin cambios x = Bit es desconocida - n / n = Valor en POR y BOR / Valor en todos los demás Restablece
0 = control de la frecuencia Slew habilitado para el modo de alta velocidad (400 kHz)
6 bits CKE: SPI Reloj Edge Select bits (modo SPI solamente)
En I2 sólo en el modo C ™:
1 = Habilitar lógica de entrada de modo que los umbrales se cumple con la Especificación SMbus
0 = Inhabilitar SMbus insumos específicos
4 bits PAG: Bit de parada (I2 sólo en el modo C. Este bit se borra cuando el módulo MSSPx está desactivada, SSPxEN se borra.)
1 = Indica que un bit de parada se ha detectado el pasado (esto es poco ' 0 'En Restablecer)
0 = Bit de parada no se detectó el pasado
3 bits S: Bit de inicio (I2 sólo en el modo C. Este bit se borra cuando el módulo MSSPx está desactivada, SSPxEN se borra.)
1 = Indica que un bit de inicio se ha detectado el pasado (esto es poco ' 0 'En Restablecer)
0 = bit de inicio estaba No detectado última
bit 2 R / W: Lectura / Escritura bi TI nformación (I modo 2 C solamente) Este bit contiene la información de bit R / W ss debido al último partido de direcciones. Este bit sólo es válido desde el
partido de direcciones para el siguiente bit de inicio, parada poco, o no bit ACK.
en lo 2 el modo C Esclavo:
1 = Leer
0 = Escribir
en lo 2 Modo Master C:
1 = De transmisión está en curso
0 = De transmisión no está en curso
O-ing este bit con NEE, RSEN, PEN, RCEN o ACKEN indicará si el MSSPx está en el modo inactivo.
1 = Transmitir datos en curso (no incluye XX Un correo CK y los bits de parada), SSPxBUF está lleno
0 = Transmitir datos completa (no incluye los bits ACK y Stop), SSPxBUF está vacía
7 bits bit 0
Leyenda:
R = bit de lectura mecánica W = grabable bits T = poco Unimplemented, leer como '0'
u = bit es sin cambios x = Bit es desconocida - n / n = Valor en POR y BOR / Valor en todos los demás Restablece
'1' = Bit se establece '0' = Bit se borra SA = bit es activado por el hardware C = El usuario borra
0 = sin desbordamiento
en lo 2 Modo C:
1 = Un byte es recibido mientras que el registro SSPxBUF aún se mantiene el byte anterior. SSPxOV es un “no me importa” en el modo de transmisión
(Debe ser aclarado en el software).
0 = sin desbordamiento
en lo 2 el modo C Esclavo:
control de liberación SCLx
1 = Habilitar reloj
0 = Sostiene reloj de baja (estiramiento del reloj). (Se utiliza para garantizar el tiempo de preparación de datos).
en lo 2 Modo Master C:
Sin utilizar en este modo
bits 3-0 SSPxM <3: 0>: Síncronos en serie bits de modo de selección de puerto
0000 = Modo maestro SPI, reloj = F OSC / 4
0001 = Modo maestro SPI, reloj = F OSC / 16
0010 = Modo maestro SPI, reloj = F OSC / 64
0011 = Modo maestro SPI, reloj = ou TMR2 tput / 2
0100 = el modo SPI esclavo, reloj = pin SCKx, SSx pin de control habilitado
0101 = modo SPI Slave, reloj = pin SCKx, control pin SSx deshabilitado, SSx se puede utilizar como pin I / O
0110 = I 2 C Modo esclavo, dirección de 7 bits
0111 = I 2 C Modo esclavo, dirección de 10 bits
1000 = I 2 Modo maestro C, reloj = F OSC / (4 * (SSPxADD + 1)) ( 4)
1001 = Reservado
1010 = Modo maestro SPI, reloj = F OSC / (4 * (SSPxADD + 1)) ( 5)
1011 = I 2 Modo maestro controlado C firmware (Slave Idle)
1100 = Reservado
1101 = Reservado
1110 = I 2 C Modo esclavo, dirección de 7 bits de inicio y parada con interrupciones bits habilitado
1111 = I 2 C Modo esclavo, dirección de 10 bits con inicio y parada interrupciones bits habilitado
Nota 1: En el modo maestro, el bit de desbordamiento no se ha establecido ya que cada nueva recepción (y transmisión) se inicia por escrito al registro SSPxBUF.
2: Cuando está activado, estos pines deben estar correctamente configurados como entrada o salida.
3: Cuando está activado, los pasadores sdaX y SCLx deben configurarse como entradas.
4: valores SSPxADD de 0, 1 o 2 no son compatibles con I 2 C Mode.
5: SSPxADD valor de ' 0 ' no es apoyado. Utilice SSPxM = 0000 en lugar.
Leyenda:
R = bit de lectura mecánica W = grabable bits T = poco Unimplemented, leer como '0'
u = bit es sin cambios x = Bit es desconocida - n / n = Valor en POR y BOR / Valor en todos los demás Restablece
'1' = Bit se establece '0' = Bit se borra HC = Se elimina al hardware S = conjunto de Usuario
7 bits GCEN: Convocatoria general Enable bit (en lo 2 sólo en el modo C Slave)
1 = Habilitar interrupción cuando una dirección de llamada general (0x00 o 00h) es recibido en el SSPxSR
0 = dirección de llamada general deshabilitado
En el modo de recepción:
Valor transmite cuando el usuario inicia una secuencia Reconocer en el extremo de un recibir
1 = no reconoce
0 = Reconocer
4 bits ACKEN: Secuencia reconocer bit de habilitación (en lo 2 Sólo modo Master C)
En Maestro modo de recepción:
1 = Iniciar Reconocer secuencia en los pines sdaX y SCLx, y transmitir ACKDT bit de datos.
limpiado automáticamente por el hardware.
0 = Reconocer Idle secuencia
3 bits RCEN: Recibe Enable bit (en lo 2 Sólo modo Master C)
1 = Activa el modo de recepción de I 2 do
0 = Recibe inactivo
bit 2 BOLÍGRAFO: Detener Condición Enable bit (en lo 2 Sólo modo Master C)
1 = Iniciar la condición de parada en los pines sdaX y SCLx. limpiado automáticamente por el hardware.
0 = Detener condición de reposo
bit 1 RSEN: Repetida poco Habilitado Condición de inicio (en lo 2 Sólo modo Master C)
1 = Iniciar la condición de arranque repetido en los pines sdaX y SCLx. limpiado automáticamente por el hardware.
0 = Repetida condición de reposo de inicio
bit 0 SEN: Condición comenzar poco activada (en lo 2 Sólo modo Master C)
En el modo Maestro:
1 = Iniciar la condición de arranque en los pines sdaX y SCLx. limpiado automáticamente por el hardware.
0 = Condición de arranque inactivo
En el modo esclavo:
1 = Reloj de estiramiento está habilitada tanto para transmitir y recibir esclavo esclavo (habilitado estiramiento)
0 = Reloj de estiramiento está desactivado
Nota 1: Para los bits ACKEN, RCEN, PEN, RSEN, SEN: Si el yo 2 módulo C no está en el modo de espera, este bit no puede ser
set (sin cola de impresión) y el SSPxBUF no se puede escribir (o escribe en la SSPxBUF están desactivados).
Leyenda:
R = bit de lectura mecánica W = grabable bits T = poco Unimplemented, leer como '0'
u = bit es sin cambios x = Bit es desconocida - n / n = Valor en POR y BOR / Valor en todos los demás Restablece
'1' = Bit se establece '0' = Bit se borra
1 = Indica el I 2 C autobús está en una secuencia de Reconocer, situado en 8 TH flanco descendente de reloj SCLx
0 = No es una secuencia Reconocer, se aclaró el 9 de TH el flanco de subida del reloj SCLx
1 = SSPxBUF se actualiza y ACK se genera un byte de dirección / datos recibidos, haciendo caso omiso de la
Estado de la SSPxOV bits sólo si el bit BF = 0.
0 = SSPxBUF sólo se actualiza cuando está claro SSPxOV
1 = Mínimo de 300 ns tiempo de retención en sdaX después del flanco de bajada de SCLx
0 = Mínimo de 100 ns tiempo de retención en sdaX después del flanco de bajada de SCLx
bit 2 SBCDE: Modo esclavo del bus Collision Detect bit de habilitación (I 2 C Modo esclavo) Si está activado el flanco ascendente de SCLx, sdaX se muestrea
baja cuando el módulo está dando salida a un estado alto, se establece el bit del registro BCLxIF PIR2, y autobús entra en inactividad
bit 1 UNA GALLINA: Dirección Mantenga Enable bit (I 2 sólo en el modo C Slave)
1 = Siguiendo el borde octava descendente de SCLx para un byte de dirección coincidente recibida; CKP poco de la
SSPxCON1 registro se borrará y la SCLx se llevará a cabo bajo.
0 = Dirección de retención se desactiva
1 = Tras el octavo flanco de bajada de SCLx para un byte de datos recibidos; esclavo de hardware borra el bit CKP
de los SSPxCON1 registro y SCLx se mantiene baja.
0 = retención de datos está inhabilitado
Nota 1: Para el funcionamiento SPI en cadena; permite al usuario ignorar todos excepto el último byte recibido. SSPxOV sigue estando ajustado
cuando se recibe un nuevo byte y BF = 1, pero el hardware sigue escribiendo el último byte a SSPxBUF.
2: Este bit no tiene ningún efecto en los modos de esclavos que iniciar y detección del estado de parada del autobús aparece explícitamente como habilitado.
3: El bit de estado ACKTIM sólo se activa cuando se activa el bit o bit Ahen DHEN.
7 bits bit 0
Leyenda:
R = bit de lectura mecánica W = grabable bits T = poco Unimplemented, leer como '0'
u = bit es sin cambios x = Bit es desconocida - n / n = Valor en POR y BOR / Valor en todos los demás Restablece
'1' = Bit se establece '0' = Bit se borra
1 = La dirección de recibido el bit n se compara con SSPxADD <n> I para detectar 2 coincidencia de dirección C
0 = La dirección de bit recibida n no se utiliza para detectar I 2 coincidencia de dirección C
bit 0 MSK <0>: bit de máscara porque yo 2 C Modo esclavo, de 10 bits Dirección I 2 C Modo esclavo, dirección de 10 bits (SSPxM <3: 0> = 0111 o 1111):
1 = La dirección de bit recibido es comparado con 0 SSPxADD <0> I para detectar 2 coincidencia de dirección C
0 = La dirección de bit recibido 0 no se utiliza para detectar I 2 C coincidencia de dirección I 2 C Modo esclavo,
dirección de 7 bits, el bit se ignora
7 bits bit 0
Leyenda:
R = bit de lectura mecánica W = grabable bits T = poco Unimplemented, leer como '0'
u = bit es sin cambios x = Bit es desconocida - n / n = Valor en POR y BOR / Valor en todos los demás Restablece
'1' = Bit se establece '0' = Bit se borra
Modo maestro:
bits 7-0 Añadir <7: 0>: Velocidad de transmisión del reloj del divisor bits de período SCLx
bits 7-3 No utilizado: La mayor parte no utilizada de byte de dirección significativo. estado del bit de este registro es un “no me importa”. patrón de bits enviado
por el maestro está fijado por lo 2 especificación C y debe ser igual a ' 11110 '. Sin embargo, esos bits se comparan por hardware y no se ven afectados
por el valor en este registro.
bits 2-1 Añadir <2: 1>: Dos bits más significativos de dirección de 10 bits
bit 0 No utilizado: Sin utilizar en este modo. estado de bit es un “no me importa”.
bits 7-0 Añadir <7: 0>: Ocho bits menos significativos de la dirección de 10 bits
bit 0 No utilizado: Sin utilizar en este modo. estado de bit es un “no me importa”.
NOTAS:
comunicaciones con sistemas periféricos, tales como terminales CRT El módulo EUSART implementa las siguientes características
y personales ordenadores. Medio duplex adicionales, por lo que es ideal para su uso en sistemas de bus de red
El modo síncrono está destinado a las comunicaciones con dispositivos de interconexión local (LIN):
periféricos, tales como A / D o D / A de circuitos integrados, EEPROMs de serie • La detección automática y la calibración de la velocidad en baudios
o de otros microcontroladores. Estos dispositivos generalmente no tienen relojes
• Despertador de la recepción rotura
internos para la generación de la velocidad de transmisión y requieren la señal
• 13 bits diagramas carácter de salto de transmisión bloques del
de reloj externa proporcionada por un dispositivo síncrono maestro.
transmisor y el receptor EUSART se muestran en la Figura 27-1 y la
Figura 27-2.
Bus de datos
TXIE
Interrumpir
TXREG Registro TXIF
Pin Buffer y
0
• • • Control
Transmisión yo t SHIFT t Registro (TSR) (8)
TXEN
TRMT SPEN
Generador velocidad en baudios
F OSC
÷n
TX9
norte
BRG16
BRG16 X 1 0 1 0
BRG16
norte
+1 Multiplicador x4 x16 x64
SINC 1 X 0 0 0
FIFO
SPBRGH SPBRGL BRGH X 1 1 0 0 FERR RX9D RCREG Registro
BRG16 X 1 0 1 0
De bus de datos 8
RCIF
Interrumpir t
RCIE
El EUSART transmite y recibe datos utilizando el formato estándar de no Una transmisión se inicia escribiendo un personaje para el registro
marca que representa un " 1 'Bit de datos, y una V OL estado de espacio que
completamente vaciado de la TSR, los datos de la TXREG se transfiere
inmediatamente al registro TSR. Si el TSR todavía contiene la totalidad
representa un " 0 'Bit de datos. NRZ se refiere al hecho de que transmite
o parte de un carácter anterior, los nuevos datos de carácter se llevó a
consecutivamente bits de datos de la misma estancia valor en el nivel de
cabo en el TXREG hasta que el bit de parada del carácter anterior se ha
salida de ese bit sin volver a un nivel neutral entre cada transmisión de bits.
transmitido. El carácter pendiente en el TXREG se transfiere entonces a
Un puerto de transmisión NRZ ralentí en el estado marca. Cada transmisión
la TSR en una camiseta CY inmediatamente después de la transmisión
de caracteres consta de un bit de inicio seguido por ocho o nueve bits de
de los bits de parada. La transmisión del bit de inicio, bits de datos y la
datos y siempre se termina por uno o más bits de parada. El bit de inicio es
secuencia de bits de parada comienza inmediatamente después de la
siempre un espacio y los bits de parada, son siempre marcas. El formato de
transferencia de los datos a la TSR de la TXREG.
datos más común es de 8 bits. Cada bit transmitido persiste durante un
período de 1 / (Velocidad de transmisión). Un on-chip dedicado de 8 bits /
Rate Generador Baud 16 bits se utiliza para derivar frecuencias de velocidad
de transmisión estándar desde el oscilador sistema. Ver Tabla 27-5 para ver
ejemplos de configuraciones de velocidad de transmisión. El EUSART
26.1.1.3 Transmitir indicador de interrupción
transmite y recibe el LSB primero. transmisor y el receptor de la EUSART son
funcionalmente independientes, pero comparten el mismo formato de datos y El bit de bandera TXIF interrupción del registro PIR1 se establece cada vez que
velocidad de transmisión. La paridad no es compatible con el hardware, pero se activa el transmisor EUSART y sin carácter se lleva a cabo para la transmisión
se puede implementar en software y almacena como el noveno bit de datos. en el TXREG. En otras palabras, el bit TXIF sólo es evidente cuando el TSR está
ocupado con un carácter y un nuevo personaje ha puesto en cola para su
transmisión en el TXREG. El bit de bandera TXIF no se borra inmediatamente
después de escribir TXREG. TXIF vuelve válida en el segundo ciclo de
instrucción después de la ejecución de escritura. Sondeo TXIF inmediatamente
después de la escritura TXREG proporcione resultados válidos. , Que no puede
ser activa o se desactiva por el software de la broca TXIF es de sólo lectura. La
26.1.1 TRANSMISOR EUSART ASÍNCRONO interrupción TXIF se puede activar mediante el establecimiento de la TXIE
interrumpir bit de habilitación del registro PIE1. Sin embargo, el bit indicador TXIF
se establece siempre que el TXREG está vacía, sin importar el estado de TXIE
El diagrama de bloques del transmisor EUSART se muestra en la Figura 27-1.
El corazón del transmisor es la transmisión de desplazamiento en serie Registro bit de habilitación. Para utilizar las interrupciones en la transmisión de datos,
(TSR), que no es accesible directamente por el software. El TSR obtiene sus establecer el bit TXIE sólo cuando hay más datos que enviar. Borrar el bit de
datos de la memoria intermedia de transmisión, que es el registro TXREG. habilitación de interrupción TXIE al escribir el último carácter de la transmisión a
la TXREG.
• TXEN = 1
• SINC = 0
• SPEN = 1
Todos los otros bits de control EUSART se asumen para estar en su estado por
defecto.
El establecimiento del bit TXEN del registro TXSTA permite a los circuitos
transmisor de la EUSART. Despejar el bit SYNC del registro TXSTA
configura el EUSART para la operación asincrónica. El establecimiento del
bit SPEN del registro RCSTA permite al EUSART y configura
automáticamente el / pin TX CK E / S como una salida. Si el pasador / CK TX
es compartida con un periférico analógico, la función de E / S analógica debe
estar desactivado en la limpieza de la broca ANSEL correspondiente.
El bit TRMT del registro TXSTA indica el estado del registro TSR. Esto es 1. Inicializar el par de registro SPBRGH, SPBRGL y los bits BRGH y
un poco de sólo lectura. El bit TRMT se establece cuando el registro TSR BRG16 para lograr la tasa de transmisión deseada (ver Sección 27.3
está vacío y se borra cuando un personaje se transfiere al registro TSR de “EUSART Velocidad de transmisión del generador (BRG)”).
la TXREG. El bit TRMT queda claro hasta que todos los bits se han
desplazado fuera del registro TSR. Ninguna lógica de interrupción está 2. Active el puerto serie asíncrono desactivando el bit SYNC y
atada a este bit, por lo que el usuario tiene que consultar este bit para establecer el bit SPEN.
determinar el estado TSR.
3. Si se desea la transmisión de 9 bits, ajuste el con- trol TX9 bits. Un bit de
datos noveno establecer indicará que los 8 bits de datos menos significativo
Nota: El registro TSR no se asigna en la memoria de datos, por lo son una dirección cuando el receptor está configurado para la detección de
Escribir en TXREG
palabra 1
Salida BRG (Shift
Reloj)
TX / CK
alfiler bit de inicio bit 0 bit 1 7/8 bits bit de parada
palabra 1
TXIF bit
(Transmit Buffer Reg. 1 T CY
Flag vacío)
Escribir en TXREG
palabra 1 palabra 2
Salida BRG (Shift
Reloj)
TX / CK
pin bit de inicio bit 0 bit 1 7/8 bits bit de parada
bit de inicio bit 0
TXIF bit (Transmit 1 T CY palabra 1 palabra 2
Buffer Reg. Flag
vacío) 1 T CY
inscribirse en
Nombre El bit 7 El bit 6 bit 5 bit 4 bit 3 bit 2 El bit 1 El bit 0
Página
INLVLC INLVLC7 ( 1) INLVLC6 ( 1) INLVLC5 INLVLC4 INLVLC3 INLVLC2 INLVLC1 INLVLC0 142
PIE1 TMR1GIE UNA MUERTE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE 94
RCSTA SPEN RX9 SREN CREN Adden FERR OERR RX9D 309
TRISC TRISC7 ( 1) TRISC6 ( 1) TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 140
TXSTA CSRC TX9 TXEN SINC SENDB BRGH TRMT TX9D 308
Leyenda: - = ubicación sin aplicarse, como leer ' 0 '. Las celdas sombreadas no se utilizan para la transmisión asíncrona.
* Página proporciona información de registro.
26.1.2 RECEPTOR EUSART ASÍNCRONO 26.1.2.2 Recepción de datos El circuito de recuperación de datos del receptor
inicia la recepción de caracteres en el flanco descendente del primer bit. El
primer bit, también conocido como el bit de inicio, siempre es un cero. El circuito
El modo asíncrono se utiliza típicamente en sistemas de RS-232. El diagrama de
de recuperación de datos de cuenta de tiempo de un medio poco al centro del
bloques del receptor se muestra en la Figura 27-2. Los datos se reciben en el
bit de inicio y verifica que el bit es todavía un cero. Si no es un cero, entonces el
pin RX / DT y acciona el bloque de recuperación de datos. El bloque de
circuito de recuperación de datos aborta la recepción de caracteres, sin generar
recuperación de datos es en realidad una palanca de cambios de alta velocidad
un error, y reanuda buscando el flanco de bajada del bit de inicio. Si el bit de
que funciona a 16 veces la velocidad de transmisión, mientras que la serie
inicio cero verificación tiene éxito, entonces el circuito de recuperación de datos
Recibir Shift Register (RSR) funciona a la velocidad de bits. Cuando los 8 o 9
bits del carácter se han desplazado en, que son inmediatamente cuenta con un poco de tiempo completo para el centro de la siguiente bit. El bit
es entonces muestreada por una mayoría detectar circuito y el resultante " 0 'O' 1 'Se
transferidos a una dos caracteres desplaza a la RSR. Esto se repite hasta que todos los bits de datos se han
Primero en entrar, primero en salir (FIFO). El búfer FIFO permite la muestreado y desplazado en la RSR. Una vez bit final es medido y el nivel de la
recepción de dos caracteres completos y el inicio de un tercer personaje muestra. Este es el bit de parada, que es siempre un " 1 '. Si la recuperación de
antes de iniciar el software debe dar servicio al receptor EUSART. Los datos de las muestras de circuito un " 0 'En la posición del bit de parada a
registros FIFO y RSR no son accesibles directamente por el software. El continuación, un error de trama se establece para este personaje, de lo contrario
acceso a los datos recibidos a través del registro es RCREG. se borra el error de trama para este personaje. Ver Sección 27.1.2.4 “Recibe
error de trama” Para más información sobre errores de trama. Inmediatamente
después de que se hayan recibido todos los bits de datos y el bit de parada, el
26.1.2.1 Activación del Receptor personaje de la RSR se transfiere a la EUSART FIFO de recepción y se
El receptor EUSART está habilitado para funcionamiento asíncrono mediante la establece el bit bandera RCIF interrupción del registro PIR1. El carácter superior
configuración de los tres bits de control siguientes: en el FIFO se transfiere de la FIFO mediante la lectura del registro RCREG.
• CREN = 1
• SINC = 0
• SPEN = 1
Todos los otros bits de control EUSART se asumen para estar en su estado por
defecto.
El establecimiento del bit CREN del registro RCSTA permite a la circuitería Nota: Si está invadido la FIFO de recepción, no se recibirán
del receptor de la EUSART. Despejar el bit SYNC del registro TXSTA caracteres adicionales hasta que la condición de
configura el EUSART para la operación asincrónica. El establecimiento del desbordamiento. Ver Sección 27.1.2.5 “Recibe error de
bit SPEN del registro RCSTA permite al EUSART. El programador tiene desbordamiento” Para más información sobre errores de
que establecer el correspondiente bit TRIS para configurar el RX / pin DT I / saturación.
O como una entrada.
26.1.2.3 recibir interrupciones El bit indicador RCIF interrupción del registro
PIR1 se establece cada vez que se activa el receptor EUSART y hay un
Nota 1: Si la función RX / DT está en un pin analógico,
carácter no leído de la FIFO de recepción. , Que no puede ser activa o se
el bit correspondiente ANSEL debe ser despejado
desactiva por el software del bit indicador RCIF interrupción es de sólo
para el receptor de funcionar.
lectura.
26.1.2.4 Recibir error de trama 26.1.2.7 Dirección de detección A modo de función especial de detección de
direcciones está disponible para su uso cuando hay varios receptores comparten
Cada carácter en el búfer FIFO de recepción tiene un bit de estado de
error encuadre correspondiente. Un error de trama indica que un bit de la misma línea de transmisión, tales como en los sistemas RS-485. detección de
parada no se observó en el momento esperado. El estado de error de direcciones se habilita estableciendo el bit Adden del registro RCSTA.
trama que se accede a través del bit FERR del registro RCSTA. El bit
FERR representa el estado del personaje sin leer superior en el FIFO
de recepción. Por lo tanto, el bit FERR se debe leer antes de leer el
detección de direcciones requiere la recepción de caracteres de 9 bits. Cuando
RCREG.
se habilita la detección de direcciones, sólo los caracteres con el noveno bit de
datos serán transferidos a la memoria intermedia FIFO de recepción,
El bit FERR es de sólo lectura y sólo se aplica al personaje sin leer estableciendo así el bit RCIF interrupción. Se ignorarán todos los demás
superior en el FIFO de recepción. Un error de trama (FERR = 1) no caracteres. Al recibir un carácter de dirección, el software de usuario determina
impide la recepción de caracteres adicionales. No es necesario borrar si la dirección coincide con su propia. Tras la coincidencia de dirección, el
el bit FERR. Al leer el siguiente carácter de la memoria intermedia software de usuario debe desactivar la detección de direcciones en la limpieza
FIFO avanzará el FIFO al siguiente carácter y el siguiente error de de la broca Adden antes de que ocurra el siguiente bit de parada. Cuando el
trama correspondiente. software de usuario detecta el final del mensaje, determinado por el protocolo de
mensajes utilizado, software coloca el receptor de nuevo en el modo de
El bit FERR puede ser forzado claro en la limpieza de la broca SPEN detección de direcciones activando el bit Adden.
del registro RCSTA que restablece el EUSART. Despejar el bit
CREN del registro RCSTA no afecta el bit FERR. Un error de trama
por sí mismo no genera una interrupción.
26.1.2.8 recepción asíncrona Set-up: 26.1.2.9 9 bits Dirección de detección de modo de configuración
1. Inicializar el par de registro SPBRGH, SPBRGL y los bits BRGH y Este modo normalmente se utiliza en los sistemas RS-485. Para configurar una
BRG16 para lograr la tasa de transmisión deseada (ver Sección recepción síncrona con una Dirección de detección de Habilitación:
27.3 “EUSART Velocidad de transmisión del generador (BRG)”).
5. Si se desea la recepción de 9 bits, establecer el bit RX9. 4. Si se desean interrupciones, establecer el bit RCIE del
6. Habilitar la recepción activando el bit CREN. PIE1 registro y los bits GIE y PEIE del registro INTCON.
7. El bit de bandera de interrupción RCIF se establecerá cuando un personaje se
transfiere desde la RSR a la memoria intermedia de recepción. Una 5. Habilitar la recepción de 9 bits estableciendo el bit RX9.
interrupción se generará si el RCIE habilitación de interrupción también se 6. Activar la detección de direcciones activando el bit Adden.
estableció poco.
8. Lea el registro RCSTA para obtener los indicadores de error y, si está habilitada 7. Habilitar la recepción activando el bit CREN.
la recepción de datos de 9 bits, el noveno bit de datos.
8. Se ajustará la interrupción bit de bandera RCIF cuando un personaje con el
bit noveno se transfiere desde la RSR a la memoria intermedia de
9. Obtener los 8 bits de datos menos significativo recibidas a través del recepción. Una interrupción se generará si el RCIE habilitación de
buffer mediante la lectura del registro RCREG. interrupción también se estableció poco.
10. Si se ha producido un rebasamiento, borrar el indicador OERR despejando el 9. Lea el registro RCSTA para obtener los indicadores de error. se ajustará
receptor CREN bit de habilitación. siempre en el noveno bit de datos.
VN
Reg
Rcv Buffer Reg. Shift
Palabra 1 Palabra 2
RCREG RCREG
Leer recep
Buffer Reg.
RCREG RCIF
(rebasamiento)
(Indicador de interrupción) bit a activar. RCIDL
CREN poco
OERR
Nota: Este diagrama de temporización que muestra tres palabras que aparecen en la entrada RX. El RCREG (búfer de recepción) se lee después de la tercera palabra, haciendo que el OERR
inscribirse en
Nombre El bit 7 El bit 6 bit 5 bit 4 bit 3 bit 2 El bit 1 El bit 0
Página
INLVLC INLVLC7 ( 1) INLVLC6 ( 1) INLVLC5 INLVLC4 INLVLC3 INLVLC2 INLVLC1 INLVLC0 142
PIE1 TMR1GIE UNA MUERTE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE 94
RCSTA SPEN RX9 SREN CREN Adden FERR OERR RX9D 309
TRISC TRISC7 ( 1) TRISC6 ( 1) TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 140
TXSTA CSRC TX9 TXEN SINC SENDB BRGH TRMT TX9D 308
Leyenda: - = ubicación sin aplicarse, como leer ' 0 '. Las celdas sombreadas no se utilizan para la recepción asíncrona.
* Página proporciona información de registro.
La exactitud del reloj con 26,2 Operación El primer método (preferido) utiliza el registro OSCTUNE para
7 bits bit 0
Leyenda:
R = bit de lectura mecánica W = grabable bits T = poco Unimplemented, leer como '0'
u = bit es sin cambios x = Bit es desconocida - n / n = Valor en POR y BOR / Valor en todos los demás Restablece
modo asíncrono : No me
importa
El modo síncrono :
1 = Modo maestro (reloj generado internamente desde BRG)
0 = Modo esclavo (reloj de una fuente externa)
1 = Transmitir habilitado
0 = transmitir discapacitados
1 = El modo síncrono
0 = modo asíncrono
modo asíncrono :
1 = Enviar sincronización en salto en la próxima transmisión (aprobado por el hardware al finalizar)
0 = la transmisión de sincronización rotura completado
El modo síncrono : No me
importa
modo asíncrono :
1 = Alta velocidad
0 = Baja velocidad
El modo síncrono:
Sin utilizar en este modo
1 = TSR vacía
0 = TSR completa
Leyenda:
R = bit de lectura mecánica W = grabable bits T = poco Unimplemented, leer como '0'
u = bit es sin cambios x = Bit es desconocida - n / n = Valor en POR y BOR / Valor en todos los demás Restablece
'1' = Bit se establece '0' = Bit se borra
1 = puerto serie activada (configura RX / DT y TX / CK pines como pines del puerto serie)
0 = puerto serie desactivado (celebrada en Restablecer)
modo asíncrono : No me
importa
El modo síncrono - Maestro :
1 = Permite recibir sola
0 = Desactiva la única recibir
Este bit se borra después de finalizada la recepción.
El modo síncrono - Esclavo
No importa
modo asíncrono :
1 = Permite receptor
0 = Desactiva el receptor
El modo síncrono :
1 = Permite continua reciba hasta bit de habilitación CREN se borra (CREN anula SREN)
0 = Desactiva recibir continua
3 bits Adden: Dirección Detectar Enable bit
Asíncrono modo de 9 bits (= RX9 1) :
1 = Permite la detección de direcciones, habilitar interrupción y cargar el búfer de recepción cuando <8> se establece RSR
0 = Desactiva la detección de direcciones, todos los bytes son recibidos y noveno bit se pueden utilizar como bit de paridad
importa
1 = error de trama (puede ser actualizado mediante la lectura de RCREG registrarse y recibir siguiente byte válido)
0 = No hay error de trama
Leyenda:
R = bit de lectura mecánica W = grabable bits T = poco Unimplemented, leer como '0'
u = bit es sin cambios x = Bit es desconocida - n / n = Valor en POR y BOR / Valor en todos los demás Restablece
'1' = Bit se establece '0' = Bit se borra
modo asíncrono :
1 = temporizador automático se desbordó en baudios
El modo síncrono : No me
importa
modo asíncrono :
1 = El receptor está inactivo
El modo síncrono :
1 = Los datos se registró en el flanco ascendente del reloj
0 = Los datos se registró en el flanco descendente del reloj
modo asíncrono :
1 = El receptor está esperando a un flanco de bajada. Ningún personaje será recibida, se establecerá RCIF bytes. EUA
se borrará automáticamente después de RCIF se establece.
El modo síncrono : No me
importa
El modo síncrono : No me
importa
26.3 EUSART Velocidad de transmisión del generador (BRG) Ejemplo 26-1: CALCULAR BAUDIO
Error Rate
F OSC deseado
El par de registro SPBRGH, SPBRGL determina el período de ---------------------------------------------
Velocidad de transmisión
X = --------------------------------------------- 1-
el temporizador de velocidad de transmisión de marcha libre. En 64
Modo asíncrono el multiplicador del período de velocidad de transmisión se
16000000
determina por tanto el bit BRGH de la TXSTA registrarse y el bit BRG16 del ------------------------
9600
= ------------------------ 1-
registro BAUDCON. En el modo síncrono, se ignora el bit BRGH. Tabla 27-3 64
contiene las fórmulas para determinar la velocidad de transmisión. Ejemplo
= • 25.042 • = 25
27-1 proporciona un ejemplo de cálculo para la determinación de la velocidad
de transmisión y el error velocidad de transmisión. velocidades de 16000000 64
Calculado velocidad en baudios = ---------------------------
transmisión típicas y los valores de error para varios modos asíncronos se 25 1• + •
registro hace que el temporizador BRG a un reset (o despejado). Esto asegura que el
velocidad de transmisión.
Si se cambia el reloj del sistema durante una operación de recepción activa, una
pérdida de error o de recepción de datos puede resultar. Para evitar este problema,
compruebe el estado del bit RCIDL para asegurarse de que la operación de
recepción está inactivo antes de cambiar el reloj del sistema.
0 0 1 8-bit / asíncrono
F OSC / [16 (n + 1)]
0 1 0 16-bit / asíncrono
0 1 1 16-bit / asíncrono
1 1 X 16-bit / Synchronous
Registrarse en
Nombre El bit 7 El bit 6 bit 5 bit 4 bit 3 bit 2 El bit 1 El bit 0
la página
TXSTA CSRC TX9 TXEN SINC SENDB BRGH TRMT TX9D 308
Leyenda: - = ubicación sin aplicarse, como leer ' 0 '. Las celdas sombreadas no se utilizan para la Tasa generador de baudios.
F = OSC 32.000 MHz F = OSC 20.000 MHz F = OSC 18.432 MHz F = OSC 11,0592 MHz
VELOCIDAD
300 - - - - - - - - - - - -
1200 - - - 1221 1.73 255 1200 0.00 239 1200 0.00 143
2400 2404 0.16 207 2404 0.16 129 2400 0.00 119 2400 0.00 71
10417 10417 0.00 47 10417 0.00 29 10286 - 1.26 27 10165 - 2.42 dieciséis
115.2 K - - - - - - - - - - - -
F = OSC 8.000 MHz F = OSC 4.000 MHz F = OSC 3,6864 MHz F = OSC 1.000 MHz
VELOCIDAD
1200 1202 0.16 103 1202 0.16 51 1200 0.00 47 1202 0.16 12
115.2 K - - - - - - - - - - - -
F = OSC 32.000 MHz F = OSC 20.000 MHz F = OSC 18.432 MHz F = OSC 11,0592 MHz
VELOCIDAD
300 - - - - - - - - - - - -
1200 - - - - - - - - - - - -
2400 - - - - - - - - - - - -
9600 9615 0.16 207 9615 0.16 129 9600 0.00 119 9600 0.00 71
10417 10417 0.00 191 10417 0.00 119 10378 - 0.37 110 10473 0.53 sesenta y cinco
19,2 k 19.23k 0.16 103 19.23k 0.16 64 19.20k 0.00 59 19.20k 0.00 35
115.2K 117.64k 2,12 dieciséis 113.64k - 1.36 10 115.2 K 0.00 9 115.2 K 0.00 5
F = OSC 8.000 MHz F = OSC 4.000 MHz F = OSC 3,6864 MHz F = OSC 1.000 MHz
VELOCIDAD
2400 2404 0.16 207 2404 0.16 103 2400 0.00 95 2404 0.16 25
F = OSC 32.000 MHz F = OSC 20.000 MHz F = OSC 18.432 MHz F = OSC 11,0592 MHz
VELOCIDAD
300 300,0 0.00 6666 300,0 - 0,01 4,166 300,0 0.00 3839 300,0 0.00 2303
1200 1200 - 0.02 3332 1200 - 0.03 1041 1200 0.00 959 1200 0.00 575
2400 2401 - 0.04 832 2399 - 0.03 520 2400 0.00 479 2400 0.00 287
9600 9615 0.16 207 9615 0.16 129 9600 0.00 119 9600 0.00 71
10417 10417 0.00 191 10417 0.00 119 10378 - 0.37 110 10473 0.53 sesenta y cinco
19,2 k 19.23k 0.16 103 19.23k 0.16 64 19.20k 0.00 59 19.20k 0.00 35
115.2 K 117.6k 2.12 dieciséis 113.636 - 1.36 10 115.2 K 0.00 9 115.2 K 0.00 5
F = OSC 8.000 MHz F = OSC 4.000 MHz F = OSC 3,6864 MHz F = OSC 1.000 MHz
VELOCIDAD
300 299,9 - 0.02 1666 300.1 0.04 832 300,0 0.00 767 300,5 0.16 207
1200 1199 - 0.08 416 1202 0.16 207 1200 0.00 191 1202 0.16 51
2400 2404 0.16 207 2404 0.16 103 2400 0.00 95 2404 0.16 25
F = OSC 32.000 MHz F = OSC 20.000 MHz F = OSC 18.432 MHz F = OSC 11,0592 MHz
VELOCIDAD
300 300,0 0.00 26666 300,0 0.00 16665 300,0 0.00 15359 300,0 0.00 9215
1200 1200 0.00 6666 1200 - 0,01 4,166 1200 0.00 3839 1200 0.00 2303
2400 2400 0,01 3,332 2400 0.02 2082 2400 0.00 1919 2400 0.00 1151
9600 9604 0.04 832 9597 - 0.03 520 9600 0.00 479 9600 0.00 287
10417 10417 0.00 767 10417 0.00 479 10425 0.08 441 10433 0.16 264
19,2 k 19.18k - 0.08 416 19.23k 0.16 259 19.20k 0.00 239 19.20k 0.00 143
57.6k 57.55k - 0.08 138 57.47k - 0.22 86 57.60k 0.00 79 57.60k 0.00 47
F = OSC 8.000 MHz F = OSC 4.000 MHz F = OSC 3,6864 MHz F = OSC 1.000 MHz
VELOCIDAD
300 300,0 0.00 6666 300,0 0,01 3,332 300,0 0.00 3071 300.1 0.04 832
1200 1200 - 0.02 1666 1200 0.04 832 1200 0.00 767 1202 0.16 207
2400 2401 0.04 832 2398 0.08 416 2400 0.00 383 2404 0.16 103
9600 9615 0.16 207 9615 0.16 103 9600 0.00 95 9615 0.16 25
19,2 k 19.23k 0.16 103 19.23k 0.16 51 19.20k 0.00 47 19.23k 0.16 12
26.3.1 UN UTO-BAUDIO DETECTAR y registros SPBRGL son temporizados en 1 / octava la tasa de reloj de base
BRG. La medición byte resultante es el promedio de tiempo poco cuando
El módulo EUSART admite la detección y calibración de la velocidad de
corre a toda velocidad.
transmisión automática.
Nota 1: Si el bit de la EUA se establece con el bit Abden,
En el modo Auto-Detect baudios (ABD), el reloj a la BRG se invierte. En lugar
la detección automática de baudios se producirá en el byte
de la BRG registrando la señal RX de entrada, la señal RX es el tiempo del
siguiendo el carácter de salto (ver
BRG. La tasa de baudios del generador se utiliza para el período de tiempo
Sección 27.3.3 “Auto-despertador en Break”). 2: Corresponde
de un 55h recibida (ASCII “T”) que es el carácter de sincronización para el
al usuario determinar que la
bus LIN. La característica única de este personaje es que tiene cinco flancos
de subida incluyendo el borde Bit de parada. Ajuste del bit Abden del registro
BAUDCON comienza la secuencia de calibración automática de baudios velocidad de transmisión de caracteres de entrada está dentro del
(figura 27-6). Aunque la secuencia ABD tiene lugar, la máquina de estado rango de la fuente de reloj BRG seleccionado. Algunas
EUSART se mantiene en ralentí. En el primer flanco ascendente de la línea combinaciones de frecuencia del oscilador y velocidades de
de recepción, después de que el bit de inicio, el SPBRG comienza a contar transmisión EUSART no son posibles.
usando el reloj contador de BRG, como se muestra en la Tabla 27-6. El 3: Durante el proceso de auto-baudios, el
quinto flanco de subida se producirá en el pin RX al final del periodo de bit contrario auto-baudios empieza a contar a 1. Una
octavo. En ese tiempo, un valor acumulado total del período de BRG vez finalizado la auto-baudios
adecuado se deja en el par de registro SPBRGH, SPBRGL, el bit Abden se secuencia, para lograr la máxima precisión, restar
borra automáticamente y la bandera RCIF de interrupción se establece. El 1 del SPBRGH: par de registro SPBRGL.
valor en el RCREG necesita ser leído para borrar la interrupción RCIF.
RCREG contenido debe ser desechada. Cuando se calibra para los modos
que no utilizan el SPBRGH registrar el usuario puede verificar que el registro TABLA 26-6: BRG contador de reloj TARIFAS
SPBRGL no lo hizo desbordamiento mediante la comprobación de 00h en el
BRG ABD
registro SPBRGH. BRG16 BRGH Base BRG
Reloj Reloj
pin RX comienzo bit 0 bit 1 bit 2 3 bits 4 bits 5 bits 6 bits 7 bits Bit de parada
BRG
poco Abden
RCIDL
Reloj RCREG
poco RCIF
(Interrumpir)
Leer
XXh 1 canal
Nota 1: La secuencia ABD requiere la EUSART módulo para ser configurado en modo asíncrono. SPBRGL
del modo de la CPU. Un evento de despertador consiste en una transición de RCIF. El bit de EUA se borra en el hardware por un flanco ascendente en RX / DT.
alto-a-bajo en la línea RX / DT. (Esto coincide con el inicio de una interrupción La condición de interrupción se elimina entonces en el software mediante la lectura
de sincronización o un personaje de la señal de atención para el protocolo del registro RCREG y desechar su contenido. Para asegurar que ningún dato real
LIN.) El módulo EUSART genera una interrupción coincidente RCIF con el se pierde, se comprueba el bit RCIDL para verificar que una operación de recepción
no se encuentra en proceso antes de establecer el bit de EUA. Si una operación de
evento de despertador. La interrupción se genera de forma sincrónica con los
recepción no está ocurriendo, el bit de EUA entonces se puede establecer justo
relojes Q en modos de funcionamiento de la CPU normal (Figura 27-7), y de
antes de entrar en el modo de suspensión.
forma asíncrona si el dispositivo está en el modo de suspensión (Figura 27-8).
La condición de interrupción se elimina mediante la lectura del registro
RCREG. El bit de EUA se borra automáticamente por el de baja a alta
transición en la línea RX al final de las vacaciones. Esto indica al usuario que
el evento ha terminado la rotura. En este punto, el módulo EUSART está en el
modo inactivo a la espera de recibir el siguiente carácter.
Q1Q2Q3Q4Q1Q2Q3Q4Q1Q2Q3Q4 Q1Q2 Q3Q4 Q1Q2Q3 Q4Q1Q2 T3 T4 Q1Q2Q3Q4 Q1Q2Q3Q4 Q1Q2Q3Q4 Q1Q2Q3Q4 OSC1
EUA mordió
RX / DT Línea
RCIF
Limpiado debido al usuario de lectura de RCREG
Nota 1: los EUSART permanece en ralentí mientras que el bit se establece la EUA.
OSC1
Bit programado por el usuario Borrado automático
EUA mordió
RX / DT Línea
Nota 1
RCIF
Limpiado debido al usuario de lectura de RCREG
Comando del sueño Ejecutado Final del sueño
Nota 1: Si el evento de reactivación requiere mucho oscilador de tiempo de calentamiento, la compensación automática de la broca de EUA puede ocurrir mientras el stposc señal todavía está activo. Esta secuencia no
debe depender de la presencia de los relojes Q.
26.3.4 Carácter de salto en secuencia el módulo EUSART tiene 26.3.5 RECIBIR un carácter de salto El módulo EUSART mejorada
la capacidad de enviar las secuencias de caracteres especiales rotura puede recibir un carácter de salto de dos maneras.
que son requeridos por el estándar de bus LIN. Un carácter de salto
consiste en un bit de inicio, seguido de 12 ' 0 "bits y un bit de parada.
El primer método para detectar un carácter de salto utiliza el bit FERR del
Para enviar un carácter de salto, establecer los bits SENDB y TXEN del
registro RCSTA y los datos recibidos según lo indicado por RCREG. La
registro TXSTA. La misión del carácter de salto trans se inicia entonces
Tasa generador de baudios se supone que ha sido inicializado a la
una escritura en el TXREG. El valor de los datos por escrito a TXREG velocidad de transmisión esperada.
será ignorado y todos ' 0 'S se transmitirá.
(típicamente, el carácter de sincronización en la especificación LIN). El segundo método utiliza la función de Auto-despertador descrito en Sección
27.3.3 “Auto-despertador en vacaciones”. Al habilitar esta característica,
El bit TRMT del registro TXSTA indica cuando la operación de transmisión el EUSART muestreará los próximos dos transiciones en RX / DT, causar
está activo o inactivo, tal como lo hace durante la transmisión normal. Ver una interrupción RCIF, y recibir el siguiente byte de datos, seguido por otro
Escribir en TXREG
Escribir ficticia
Descanso
TXIF bit
(Transmit indicador
de interrupción)
TRMT bits
(Shift Transmitir
Bandera vacío)
Aquí SENDB muestreados Borrado automático
SENDB
(enviar rotura
bit de control)
26.4 EUSART modo síncrono Despejar el bit SCKP establece el estado inactivo un precio tan bajo. Cuando se
borra el bit SCKP, los cambios de datos en el flanco ascendente de cada reloj.
comunicaciones en serie síncronos se utilizan normalmente en sistemas con
un solo maestro y uno o más esclavos. El dispositivo maestro contiene la
circuitería necesaria para la generación de velocidad de transmisión y 26.4.1.3 síncrono Maestro de transmisión de datos se transfiere
suministra el reloj para todos los dispositivos en el sistema. Los dispositivos fuera del dispositivo en el pin RX / DT. El RX / DT y controladores
esclavos pueden aprovechar el reloj maestro al eliminar la inter- circuitería de salida de pin TX / CK están automat- camente activa cuando el
de generación de reloj nal. EUSART está configurado para la operación de transmisión
maestro síncrono. Una transmisión se inicia escribiendo un
Hay dos líneas de señal en modo síncrono: una línea de datos unidireccio- bidi- personaje para el registro TXREG. Si el TSR todavía contiene la
y una línea de reloj. Los esclavos utilizan el reloj externo suministrado por el totalidad o parte de un carácter anterior los nuevos datos de
maestro para cambiar los datos en serie dentro y fuera de sus respectivos carácter se llevó a cabo en el TXREG hasta el último bit del
recibir y trans registros de desplazamiento mit. Desde la línea de datos es carácter anterior se ha transmitido. Si este es el primer carácter, o
bidireccional, el funcionamiento síncrono es sólo la mitad-duplex. Semidúplex
el carácter pre vious ha sido completamente vaciado de la TSR, los
refiere al hecho de que los dispositivos maestros y esclavos pueden recibir y
datos de la TXREG se transfiere inmediatamente a la TSR. La
transmitir datos, pero no ambos simultáneamente. El EUSART puede funcionar
transmisión de los caracteres mences com- inmediatamente
como maestro o dispositivo esclavo.
después de la transferencia de los datos al TSR de la TXREG.
RX / DT
alfiler bit 0 bit 1 bit 2 7 bits bit 0 bit 1 7 bits
palabra 1 palabra 2
TX / CK pines
(SCKP = 0)
TX / pin CK
(SCKP = 1)
poco TRMT
'1'
TXEN poco " 1 '
Nota: modo de sincronización del maestro, SPBRGL = 0, transmisión continua de dos palabras de 8 bits.
TX / CK pines
Escribir en
TXREG reg
poco TXIF
poco TRMT
poco TXEN
inscribirse en
Nombre El bit 7 El bit 6 bit 5 bit 4 bit 3 bit 2 El bit 1 El bit 0
Página
PIE1 TMR1GIE UNA MUERTE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE 94
RCSTA SPEN RX9 SREN CREN Adden FERR OERR RX9D 309
TRISC TRISC7 TRISC6 TRISC5 TRISC4 TRISC3 TRISC2 TRISC1 TRISC0 140
TXSTA CSRC TX9 TXEN SINC SENDB BRGH TRMT TX9D 308
Leyenda: - = Ubicación sin aplicarse, como leer ' 0 '. Las celdas sombreadas no se utilizan para la transmisión síncrona Maestro.
* Página proporciona información de registro.
Nota 1: PIC16F / LF1825 solamente.
26.4.1.5 síncrono Maestro de recepción de datos se recibe en el pin RX búfer se puede leer, sin embargo, no se recibirán caracteres adicionales hasta que
/ DT. El controlador de salida de pin RX / DT se desactiva se elimine el error. El bit OERR sólo puede eliminarse en la limpieza de la
automáticamente cuando el EUSART está configurado para el maestro condición de desbordamiento. Si se ha producido el error de desbordamiento
cuando se establece el bit CREN SREN y es claro, entonces, el error se borra
síncrono operación de recepción.
mediante la lectura de RCREG. Si se produce el rebasamiento cuando el bit CREN
se establece a continuación, la condición de error se borra por cualquiera de
En el modo síncrono, la recepción se habilita estableciendo ya sea despejar el bit CREN del registro RCSTA o desactivando el bit SPEN que
el único Recibir Enable bit (SREN del registro RCSTA) o la continua restablece el EUSART.
poco Recibe Enable (CREN del registro RCSTA).
carácter. El bit SREN se borra automáticamente en la terminación de RCSTA la EUSART se desplazará 9-bits en el RSR para cada carácter
un carácter. Cuando se establece CREN, los relojes se generan recibido. El bit RX9D del registro RCSTA es el noveno, y más importante,
continuamente hasta CREN se borra. Si CREN se borra en el medio bit de datos del personaje sin leer superior en el FIFO de recepción.
de un personaje el reloj CK se detiene inmediatamente y el carácter Cuando la lectura de datos de 9 bits de la memoria intermedia FIFO de
parcial se descarta. Si SREN y CREN se establecen ambos, entonces recepción, el bit de datos RX9D debe leerse antes de la lectura de los 8
SREN se borra al finalizar el primer carácter y CREN tiene prioridad. bits menos significativos de la RCREG.
ciclos de reloj deben ser recibidas ya que hay bits de datos. determinar si se ha producido algún error durante la recepción.
RX / DT
bit 0 bit 1 bit 2 3 bits 4 bits 5 bits 6 bits 7 bits
alfiler
TX / CK pines
(SCKP = 0)
TX / CK pines
(SCKP = 1)
Escribir en
poco SREN
poco SREN
CREN mordió
'0' '0'
RCIF bit
(Interrupt)
leer
RCREG
Nota: Cronograma demuestra el modo de sincronización principal con poco SREN = 1 y poco BRGH = 0.
Registrarse en
Nombre El bit 7 El bit 6 bit 5 bit 4 bit 3 bit 2 El bit 1 El bit 0
la página
PIE1 TMR1GIE UNA MUERTE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE 94
RCSTA SPEN RX9 SREN CREN Adden FERR OERR RX9D 309
TXSTA CSRC TX9 TXEN SINC SENDB BRGH TRMT TX9D 308
Leyenda: - = ubicación sin aplicarse, como leer ' 0 '. Las celdas sombreadas no se utilizan para la recepción síncrona Maestro.
* Página proporciona información de registro.
26.4.2 Modo esclavo SÍNCRONOS Los siguientes bits se Si dos palabras se escriben en el TXREG y luego el
utilizan para configurar el EUSART para el funcionamiento síncrono DORMIR la instrucción se ejecuta, ocurrirá lo siguiente:
26.4.2.1 EUSART síncrono esclavo 1. Establecer los bits SYNC y SPEN y borrar el bit CSRC.
Transmitir
2. Borrar el bit ANSEL para el pasador CK (si es aplicable).
El funcionamiento de los maestro y esclavo sincrónicos modos
3. Desactive la CREN y SREN bits.
son idéntico (ver sección 27.4.1.3
“Síncrono Maestro de Transmisión”) , excepto en el caso del modo de 4. Si se desean interrupciones, establecer el bit TXIE del PIE1
suspensión. registro y los bits GIE y PEIE del registro INTCON.
inscribirse en
Nombre El bit 7 El bit 6 bit 5 bit 4 bit 3 bit 2 El bit 1 El bit 0
Página
PIE1 TMR1GIE UNA MUERTE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE 94
RCSTA SPEN RX9 SREN CREN Adden FERR OERR RX9D 309
TXSTA CSRC TX9 TXEN SINC SENDB BRGH TRMT TX9D 308
Leyenda: - = ubicación sin aplicarse, como leer ' 0 '. Las celdas sombreadas no se utilizan para la transmisión síncrona esclavo.
* Página proporciona información de registro.
El funcionamiento de los maestro y esclavo síncronos modos es 1. Establecer los bits SYNC y SPEN y borrar el bit CSRC.
idéntico ( Sección 27.4.1.5 “Maestro recepción síncrona” ), con las
siguientes excepciones: 2. Borrar el bit ANSEL tanto para la CK y los pasadores de DT (si es
• Dormir aplicable).
• CREN bit se establece siempre, por lo tanto, el receptor no está Libre 3. Si se desean interrupciones, establecer el bit RCIE del
PIE1 registro y los bits GIE y PEIE del registro INTCON.
mordió antes de entrar en el sueño. Una vez que se recibe la palabra, el registro 5. Establecer el bit CREN para permitir la recepción.
RSR transferirá los datos al registro RCREG. Si el RCIE habilitación se 6. Se ajustará el bit RCIF cuando la recepción es completa. Una
establece bits, la interrupción generada se despierta el dispositivo del sueño y interrupción se generará si se establece el bit de RCIE.
ejecutar la siguiente instrucción. Si también se establece el bit GIE, el programa
se ramifica al vector de interrupción. 7. Si está activado el modo de 9 bits, recuperar el bit más
significativo desde el bit RX9D del registro RCSTA.
inscribirse en
Nombre El bit 7 El bit 6 bit 5 bit 4 bit 3 bit 2 El bit 1 El bit 0
Página
PIE1 TMR1GIE UNA MUERTE RCIE TXIE SSP1IE CCP1IE TMR2IE TMR1IE 94
RCSTA SPEN RX9 SREN CREN Adden FERR OERR RX9D 309
TXSTA CSRC TX9 TXEN SINC SENDB BRGH TRMT TX9D 308
Leyenda: - = ubicación sin aplicarse, como leer ' 0 '. Las celdas sombreadas no se utilizan para la recepción síncrono esclavo.
* Página proporciona información de registro.
26.5 Operación EUSART durante el sueño 26.5.2 SÍNCRONOS TRANSMITIR durante el sueño para transmitir
Para recibir durante el sueño, las siguientes condiciones deben cumplirse antes • Si se desean interrupciones, establecer el bit del registro TXIE
de entrar en modo de suspensión: PIE1 y el bit PEIE del registro INTCON.
Al despertar del sueño, la instrucción siguiente a la 26.5.3 SITIO DE PIN alternativo Esta módulo incorpora pines I
DORMIR se ejecutará la instrucción. Si el GIE, Global habilitación de interrupción, / O que se pueden mover a otros lugares con el uso de los registros de
también se establece bit del registro INTCON, a continuación, la rutina de servicio de
funciones de pasador alternativos, APFCON0 y APFCON1. Para
interrupción en la dirección 004h será llamado.
determinar qué pines se pueden mover y lo PAR- su defecto ciones
están sobre un Reset, consulte Sección 12.1 “Pin Función
alternativo” para más información.