Está en la página 1de 7

ITSS CAN

CAN
Westher Eduardo Anchundia Riofrio
e-mail: westher99@hotmail.com

RESUMEN: Analizaremos como funcionan el modulo CAN de los dsPIC30F 1. INTRODUCCION AL MODULO CAN El bus CAN es un protocolo de comunicacin serie utilizado para la transferencia de informacin con otros perifricos o microcontroladores en tiempo real, que permite la comunicacin dentro de ambientes ruidosos. En el bus CAN los mensajes transmitidos por un nodo no contienen los tradicionales campos de direccin origen y destino, sino que estn caracterizados por un identificador El modulo CAN de los dsPIC30F satisface las especificaciones de la versin 2.0B que permite la transmisin de mensajes con identificador de 11 y/o 29 bits. Un identificador de 29 bits admite hasta 536 millones de identificadores de mensaje. 2. CARACTERISTICAS DEL MODULO

El modulo CAN soporta los siguientes tipos de tramas: Trama estndar Trama extendida Trama de peticin Trama error Interface Space

3.1. Trama estndar Es generada por un nodo cuando quiere transmitir datos a una o varias estaciones remotas. El productor introduce un objeto en la red que puede ser consumido por cualquier nmero de estaciones remotas. La trama CAN esta formada por los campos mostrados en la siguiente figura:
1bit SOF 12bits ARBITRAJE RTR 6 bits CONTROL 0-8 bytes DATOS (0-8 Bytes) 16 bits Campo CRC CRC 2 bits ACK 7 bits EOF

El modulo CAN es un controlador de comunicaciones y trabaja como full CAN, es decir, puede tratar un nmero limitado de tramas. Tiene las siguientes caractersticas relevantes: Dos buffers de entrada (RXB1 y RRXB1) con prioridad. Tres buffers de transmisin (TXB0, TXB1, TXB2) Tramas de envi de datos estndar y extendido Longitud de datos 0-8 bytes Tasa de transmisin ajustable hasta 1 Mbit/s 2 patitas de E/S Varios filtros de aceptacin de identificadores Generacin de interrupcin ante errores

Fig. 1. Trama estndar Inicio de Trama(1 bit) Campo de arbitraje(12 bits) Campo de control(6 bits) Campo de datos Secuencia de deteccin de errores( 16 bits) Campo ACK Fin de trama

3.2. Trama extendida La diferencia con respecto a la trama estndar reside en el campo de arbitraje en el cual el identificador es de 29 bits en vez de 18 bits.
1 bit SOF 29 bits ARBITRAJE RTR 6 bits CONTROL 0-8 bytes DATOS (0-8 Bytes) 16 bits Campo CRC CRC 2 bits ACK 7 bits EOF

Fig. 2. Trama extendida 3. FORMATO DE MENSAJE 1

ITSS CAN

3.3. Trama de peticin Se utiliza para pedir a una estacin remota que envi a la red una trama de tipo data. En este caso, tanto la trama de peticin como la respuesta data tiene el mismo identificador.
1 bit SOF 12 bits ARBITRAJE RTR 6 bits CONTROL 16 bits Campo CRC CRC 7 bits EOF

Modo de operacin normal. Cuando REQOP<2:0>= 000. El modulo tiene actividades las entradas y salidas. El modulo puede transmitir y recibir mensajes. Modo deshabilitado Selecciona REQOP<2:0>=001. Este modo de operacin el modulo no transmite ni recibe nada. Las interrupciones pendientes y los contadores errores retienen sus valores, el modulo esta en modo activo y espera los 11 bits recesivos del bus CAN y se activa como modo deshabilitado. La interrupcin WALKIP es la nica interrupcin que sigue activa en modo deshabilitado. Si el bit WALKIP (CINTIE<6>) vale 1 se pueden recibir interrupciones siempre que el bus CAN detecte un estado dominante como ocurre en el SOF. Modo realimentado Las entradas y salidas vuelven ser soportadas por su puesto E/s. El transmisor recibe un acuse de recibo por mensajes enviados. Modo de escucha de un mensaje. Los modos realimentacin y de escucha de una mensaje son casos especiales del modo normal de operacin. Esta activado solo el modo de escucha de mensaje, el bus CAN esta pasivo. Los contadores de errores estn desactivados. El modo de operacin solo puede ser utilizado para detectar la tasa de transmisin en el bus CAN. Modo de configuracin Modo de operacin el modulo no podr transmitir ni recibir. Los contadores de errores son reseteados y flags de interrupciones se mantienen. El programador tiene acceso en los registros de configuracin los cuales tiene acceso restringido en otros modos de operacin. Despus de un reset del dispositivo el modulo CAN esta en modo de configuracin (OPMODE<2:0>=100). Los contadores de errores estn

Fig. 3. Trama de peticin 3.4. Trama de error Cualquier nodo que detecte un error puede generar una trama de error. Los controladores de CAN verifican el formato de todas las tramas junto con el cdigo CRC. A su vez si no se detecta el cambio del bit ACK se determina que el mensaje no ha sido recibido adecuadamente.
6 bits Flag de error 6 bits Delimitador (1)

Fig. 4. Trama de error 3.5. Interframe Space Despus de cada trama de datos o de peticin se enva siempre una trama denominada interframe spacing. Esta trama consiste en tres bits recesivos y su finalidad es garantizar el tiempo.

4.

MODOS DE FUNCIONAMIENTO

El modulo CAN funcionar en distintos modos de operacin seleccionados por el usuario: Modo normal Modo deshabilitado Modo realimentado Modo de escucha de un mensaje Modo de configuracin Modo de escucha de todos los mensajes

Los modos de operacin se controlan mediante los bits REQOP<2:0> (CiCTRL<10:8>). Para monitorizar el estado de operacin se recurre a los bits OPMODE<2:0> (CiCTRL<7:5>), este no ser actualizado hasta q sea aceptado el nuevo modo se ejecuta generalmente en el estado de reposo empleado los ltimos 11 bits recesivos.

ITSS CAN

reseteados y todos los registros contienen sus valores reseteados. Modo de escucha de todos los mensajes. Este modo es un caso especial del modo de operacin normal. Cuando esta activado el modulo bus CAN esta pasivo. El buffer transmisor adquiere las funciones del puerto E/S. 5. REGISTROS DEL MODULO CAN

Bit 10-8 REQOP<2:0>: bits de operacin de repeticin 111= Modo de escucha a todos los mensajes 110= reservado 101= reservado 100= modo de configuracin 011= modo de escucha 010= modo de realimentacin 001= modo desactivado 000= modo de operacin normal bits de modo de

Los registros asociados al modulo CAN son: 1. 2. 3. 4. 5. Registros de control y estado. Registros de buffer de salida Registros de buffer de entrada Registros de tasa de transmisin Registros de estado y control interrupciones

Bit 7-5 OPMODE<2:0>: operacin

Bit 4 No complementado: su valor es 0 de Bit 3-1 ICODE<2:0>: bits de interrupcin de cdigo FLAG. 111= activar interruptor 110= interrupcin RXB0 101= interrupcin RBX1 100= interrupcin TXB0 011= interrupcin TXB1 010= interrupcin TBX2 001= error de interrupcin 000= sin interrupcin

REGISTRO DE CONTROL Y ESTADO CICTRL


15 TSTA MP CSI DL AB AT CAN CKS 0 REQOP <2:0> OPMODE <2:0> ICODE <2:0>

Fig. 5. Estructura del registro CICTRL Bit 15 TSTAMP: bit de permiso de captura de mensajes 1= permite captura 0= no permite captura Bit 14 No implementado: su valor es 0 Bit 13 CSDIL: bit de paro en Idle.

Bit 0 No implementado: su valor es 0

TXLARB

TXREQ

TXERR

TXABT

TXPRI <1:0>

1= detencin del modulo CAN cuando el dispositivo entra en modo Idle 0= el modulo CAN no se detiene cuando el dispositivo entra en modo Idle.

Fig. 6. Estructura del Registro CiTXnCON. Bit 6 TXABT: bit de suspensin de mensaje 1= mensaje suspendido 0= mensaje no suspendido Nota: este bit se resetea cuando TXREQ es reseteado. Bit 5 TXLARB: bit de prdida de mensaje 1= mensaje perdido durante envo 0= mensaje sin perdida en envo Nota: este bit se resetea cuando TXREQ es reseteado

Bit 12 ABAT: Bit de suspensin de todas las transmisiones pendientes. 1= suspende todas las transmisiones en todos los buffers de transmisin. 0= no tiene efecto

Bit 11 CANCKS: bit de seleccin de reloj CAN 1= reloj FCAN es Fcy 0= reloj FCAN es 4 Fcy

ITSS CAN

Bit 4 TXERR: bit de deteccin de error durante la transmisin. 1= error de bus detectado durante envo de mensaje 0= envo de mensaje sin error de bus Nota: este bit se resetea cuando TXREQ es reseteado Bit 3 enviado TXREQ: bit de peticin de mensaje

EID<17:14>

EID<13:6>

Fig. 8. Estructura del registro CiTXnEID Bit 15-12 EID <17:14>: bits de identificacin extendida. Bit 11-8 No implementado, su valor es 0 Bit 7-0 EID<13:6>: bits de identificacin extendida CiTXnDLC: control de buffer de longitud (n data) de transmisin
TXRTR TXRB1 TXRB0

1= peticin de transmisin de mensaje 0= suspender transmisin de mensaje si TXREQ es reseteado. Nota: este bit se resetea automticamente cuando el mensaje es enviado satisfactoriamente. Bit 2 No implementado, su valor es 0 Bit 1 TXPRI <1:0>: bits de prioridad de transmisin de mensaje. 11= alta prioridad de mensaje 10= alta-intermedia prioridad de mensaje 01=baja-intermedia prioridad de mensaje 00= baja prioridad de mensaje CiTXnSID: identificador extendido de buffer de transmisin

EID<5:0>

DLC<3:0>

Fig. 9. Estructura del registro CiTXnDLC Bit 15-10 EID<5:0>: bits de identificacin extendida Bit 9 TXRTR: bit de solicitud de transmisin de peticin 1= el mensaje solicita una transmisin de peticin 0= mensaje normal Bit 8-7 TXRB<1:0>: bits reservados Nota: los usuarios deben poner a 1 estos bits segn el protocolo CAN. Bit 6-3 data Bit 2-0 DLC <3:0>: bits de cdigo de longitud No implementado, su valor es 0

Fig. 7. Estructura del registro CiTXnSID Bit 15-11 SID<10:6>: bits de identificacin estndar Bit 10-8 No implementado, su valor es 0 Bit 7-2 SID<6:0>: bits de identificacin estndar. Bit 1 SRR: bit de control de sustitucin de peticin. 1= el mensaje solicita una transmisin de peticin. 0= mensaje normal. Bit 0 TXIDE: bit de identificacin extendida. 1= el mensaje transmite el identificador extendido. 0= el mensaje transmite el identificador estndar. CiTXnEID: identificador extendido de buffer de transmisin

SRR

SID<1:6>

SID<5:0>

TXIDE

CiTXnBm: Buffer de transmisin CTXB<15:0> Fig. 10. Estructura del registro CiTXnBm Bit 15-0 CTXB<15:0>: campo de datos de transmisin (2 bytes). Registro de buffer de entrada CiRX0CON: registro de control y estado de buffer de entrada 0
RXRTRR O FILHITO

RXFUL

Fig. 11. 4

JTOFF

DBEN

ITSS CAN

Bits 15-8 0 Bit 7

No implementados, sus valores son

Bits 15-8 No implementados, sus valores son 0 Bit 7 RXFUL: bit de estado de entrada 1= buffer de entrada contiene un mensaje recibido valido 0= buffer de entrada esta abierto para recibir un mensaje nuevo. Bits 6-4 No implementados, sus valores son 0 Bit 3 RXRTRRO: bit de solicitud de transferencia de peticin recibida (solo de lectura). Bit 2-0 FILHIT<2:0>: Indica el filtro que activa los bits de recepcin de mensajes. Bits 15-13 no implementados, su valores son 0 Bits12-2 SID<10:0>: bit de identificacin estndar Bit 0 SRR: bit de solicitud de sustitucin de peticin (solo cuando(RXIDE=1) Bits 15-12 No implementado, sus valores son 0 Bits 11-0 EID<17:6>; extendidos bits de identificacion

RXFUL: bit de estado de entrada 1= buffer de entrada contiene un mensaje recibido vlido 0= buffer de entrada esta abierto para recibir un mensaje nuevo Nota: este bit es activado por el modulo CAN y debe ser reseteado por el software antes de leer el buffer. Bits 6-4 No implementado, su valor es 0. Bit 3 RXRTRRO: bit de solicitud de transferencia de peticin recibida (solo de lectura) 1= solicitud de transferencia de peticin recibida. 0= solicitud de transferencia de peticin no recibida. Nota: este bit refleja el estado de los ltimos mensajes cargados en el buffer de entrada 0. Bit 2 DBEN: bit de activacin de doble buffer en buffer de entrada 0. 1= la sobrescritura de buffer 0 se escribe en buffer de entrada 0. 0= el buffer 0 se desborda en buffer de entrada 1. Bit 1 de DBEN) JTOFF: bit de Offset (lee solo copias 1= permite offset entre 6 y 7. 0= permite offset entre 0 y 1. Bit 0 FILHIT0: indica el filtro que activa el bit de repeticin de mensajes. 1= filtro 1 de aceptacin (RXF1) 0= filtro 0 de aceptacin (RXF0) Nota: este bit refleja el estado de los ltimos mensajes cargados en el buffer de entrada 0. CiRX1CON: registro de control y estado de buffer entrante 1
RXFUL RXRTRR O FILHIT<20>

Bit 15-0 CRXB<15:0>; campo de datos de entrada (2 bytes) Bits 15-10 extendidos EID<5.0>: bits del identificador

Bit 9 RXRTR: bit de solicitud de transferencia de peticin de entrada 1= solicitud de transferencia de peticin 0= no solicitud de transferencia de peticin Bit 8 RB1: reservado con valor 0 Bit 4 RB0: reservado con valor 0

6. RECEPCION DE MENSAJES 6.1. Buffer de entrada El modulo CAN tiene tres buffer de entrada. Sin embargo, uno de ellos es siempre el encargado

Fig. 12. Estructura del registro CiRX1CON.

ITSS CAN

de los mensajes que provienen del bus. Esta buffer es denominado MAB. Hay dos buffer de entrada visible, RXB0 y RXB1, que pueden recibir un mensaje: la CPU puede operar con uno de ellos mientras el otro este en espera o recibiendo un mensaje El MAB mantiene la trama de datos o de peticin del bus para permitir el acceso en paralelo de los buffer de entrada y el test de apropiacin. El MAB tambin rene todos los mensajes recibidos, los cuales son transmitidos al buffer RXBn en el caso de haber pasado lps filtros de reaceptacin. Cuando se recibe un mensaje, el flag RXnIF es puesto a uno. Este bit solo puede ser puesto a uno cuando se recibe un mensaje Este bit proporciona una seguridad para confirmar que la CPU ha terminado con el mensaje del buffer. Si el bit RXnIF es puesto a uno, se genera una interrupcin cuando un mensaje es recibido. 6.2. Prioridad de buffer de entrada El RXB0 es el buffer de mayor prioridad y tiene dios filtros de aceptacin de mensajes, mientras que el buffer RXB1 es el de mayor prioridad y tienen cuando filtros de aceptacin de mensajes. El menor numero de posibles filtros de aceptacin ene le buffer RXB0 hace que sea mas restrictivo e implica una mayor prioridad asociada a el. 6.3. Filtros de aceptacin de mensajes

puede transmitir recibirlos

mensajes

pero

no

puede

7. TRASMISION DE DATOS 7.1 Comunicacin en tiempo real Una aplicacin de transmisin de mensajes en tiempo real los nodos deben ser capaces de dominar y mantener el bus para que sus mensajes puedan ganar el arbitraje de accesibilidad. Una aplicacin tpica requiere 3 buffer de transmisin de mensajes. Uno de ellos puede estar transmitiendo, el segundo estar preparando para transmitir tan pronto como el primero acabe y el tercero esta siendo recargado por la CPU.

Fig. 13. Estos filtros y mascaras determinan si un mensaje del MAB debe ser cargado en alguno de los buffers de entrada. Una vez que un mensaje valido ha sido recibido en el MAB los campos de identidad del mensaje son comparados con los del filtro. Si todo es correcto, el mensaje se almacena en el buffer de entrada apropiado. 6.4 Sobreescritura de entrada La condicin de sobreescritura cuando el buffer MAB tiene un mensaje valido, los filtros dan el visto bueno y el buffer asignado al filtro no ha dado del mensaje anterior. El flag de sobreescritura RXnOVR y el bit ERRIF son puestos a uno y el mensaje del MAB ser descartado. Durante es estado de sobreescritura el modulo esta sincronizado con el bus CAN y 6 7.2 Buffer de transmisin de mensajes El modulo CAN tiene tres buffer de transmisin (TXB0, TXB1, TXB2). Cada uno de los tres buffers ocupan 14 bytes y 8 bytes es el mximo q puede tener el mensaje, 5 bytes se encarga de los identificadores, tanto para los extendidos como los estndar. El ltimo byte est asociado con el control de cada mensaje. La informacin de este byte determina las condiciones bajo las que el mensaje es transmitido e indicar el estado de la transmisin del mensaje. Previo al envi del mensaje el usuario debe inicializar el bit TXnIE (CilNTE<2>, CilNTE<3> o

ITSS CAN

CilNTE<4>) para habilitar o deshabilitar una interrupcin cuando el mensaje se enva. El usuario tambin tiene que inicializar la prioridad de la transmisin. 7.3 Prioridad de transmisin de mensaje Previo al envi de SOF(star-of-frame), se comparan las prioridades de todos los buffers preparados para transmitir. El buffer de mayor prioridad es el primero en ser enviado. Si dos buffers tienen el mismo grado de prioridad, el de mayor direccin es el enviado. 7.4 Transmisin de mensaje Para inicializar la transmisin de un mensaje, el bit TXREQ (CiTXnCON<3>) debe de ser puesto a uno. La transmisin empieza cuando se completa satisfactoriamente la primera vez, el bit TXREQ es puesto a cero y ser generada una interrupcin si TXnIQ (CilNTE<2>, CilNTE<3>, CilNTE<4>) es puesto a uno. Si se intentara transmitir el mensaje pero se produce un error el bit TXERR (CiTXnCON<4>) se pone a uno.

7.5 Suspensin de transmisin de mensaje El sistema puede abortar un mensaje poniendo a cero el bit TXREQ asociado a cada buffer del mensaje. Un mensaje en espera es abortado mediante el bit TXREQ. Si el mensaje no ha empezado todava su transmisin, o, si el mensaje ha empezado pero es interrumpido por prdida de arbitraje o un error se ejecutara el aborto. El aborto sealiza cuando el bit TXREQ (CiTXnCON<6>) se pone a uno y el flag TXnIF se pone en cero. Si se ha empezado a transmitir un mensaje, intentara transmitirlo por completo. Si al hacerlo no hay ningn error, el bit TXABT no es puesto a uno.

8. CONCLUCIONES EL modulo Can es de bastante ayuda ya que permite comunicacin entre dispositivos en ambientes ruidos.

9. BIBLIOGRAFIA Microcontroladores avanzados dsPIC, controladores digitales de seales arquitectura programacin y aplicaciones, capitulo 17, la memoria de datos.

Fig. 14.