You are on page 1of 8

CAN

Xavier Aldemar Jumbo Sarango e-mail: xavieraldemarjumbo@hotmail.com


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.0 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. 1.1 CARACTERISTICAS DEL MODULO 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 1.3 FORMATO DE MENSAJE El modulo CAN soporta los siguientes tipos de tramas: Trama estndar Trama extendida Trama de peticin Trama error Interface space

1.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 12bits 6 bits 0-8 bytes 16 bits 2 bits 7 bits S O F ARBI TRAJ E R T R CON TRO L DA TO S (08 Byt es) Ca mp o CR C C R C A C K E O F

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

1.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 29 bits 6 bits 0-8 bytes 16 bits 2 bits 7 bits S O F ARBI TRAJ E R T R CON TRO L DA TO S (08 Byt es) Ca mp o CR C C R C A C K E O F

Modo de escucha de un mensaje Modo de configuracin Modo de escucha de todos los mensajes

1.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 SO F 12 bits ARBITR AJE RT R 6 bits CONTR OL 16 bits 7 bits Cam po CRC CR C EO F

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. 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

1.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 error de 6 bits Delimitador (1)

1.4 MODOS DE FUNCIONAMIENTO El modulo CAN funcionar en distintos modos de operacin seleccionados por el usuario: Modo normal Modo deshabilitado 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 (OPMO-DE<2:0>=100). Los contadores de errores estn 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. 1.5 REGISTROS DEL MODULO CAN 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 de interrupciones

TS T A M P

C SI D L

A B A T

C A N C KS

RE QO P<2 :0>

OP MO DE< 2:0>

ICO DE <2: 0>

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. 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.

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

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

REGISTRO DE CONTROL Y ESTADO CICTRL


15 0

Bit 7-5 OPMODE<2:0>: bits de modo de operacin Bit 4 No complementado: su valor es 0 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

Nota: este bit se resetea cuando TXREQ es reseteado Bit 3 TXREQ: bit de peticin de mensaje enviado 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
SRR SID<1:6> SID<5:0> TXIDE

Bit 0 No implementado: su valor es 0


TXP RI - - - - - - - - TXLARB TXREQ TXABT TXERR <1:0 >

Figura: 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 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

Figura: 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 estndar. SID<6:0>: bits de identificacin

Bit 1 SRR: bit de control de sustitucin de peticin. 1= el mensaje solicita una transmisin de peticin. 0= mensaje normal. Bit 0 extendida. TXIDE: bit de identificacin

1= el mensaje transmite el identificador extendido. 0= el mensaje transmite el identificador estndar. CiTXnEID: identificador extendido de buffer de transmisin
EID<17:14> EID<13:6>

CTXB<15:0> Figura: 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

RXRTRRO

Figura: 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
EID<5: 0> DLC<3: 0>

Bits 15-8 son 0 Bit 7

No implementados, sus valores 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.

TXRB1

Figura: 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 DLC <3:0>: bits de cdigo de longitud data Bit 2-0 No implementado, su valor es 0

TXRB0

TXRTR

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.

CiTXnBm: Buffer de transmisin

FILHITO

- - - - - - RXFUL

- - -

JTOFF

DBEN

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 JTOFF: bit de Offset (lee solo copias de DBEN) 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 - - RXRTRRO FILHI T<20 >

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>; bits de identificacion extendidos Bit 15-0 CRXB<15:0>; campo de datos de entrada(2 bytes) Bits 15-10 EID<5.0>: bits del identificador extendidos 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 1.6 RECEPCION DE MENSAJES 1.6.1. BUFFER DE ENTRADA El modulo CAN tiene tres buffer de entrada. Sin embargo, uno de ellos es siempre el encargado de los mensajes que provienen del bus. Esta buffer es denominada 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 los 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

Figura: Estructura del registro CiRX1CON. 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

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. 1.6.2 PRIOIDAD DE BUFFER DE ENTRADAD 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. 1.6.3 FILTROS MENSAJES DE ACEPTACION DE

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.

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. 1.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 se 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 puede transmitir mensajes pero no puede recibirlos 1.7 TRASMISION DE DATOS 1.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

1.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 CilNTE<4>) para habilitar o deshabilitar una interrupcin cuando el mensaje se enva. El usuario tambin tiene que inicializar la prioridad de la transmisin. 1.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. 1.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.

1.7.5 Suspensin mensaje

de

transmisin

de

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 2. CONCLUSION CAN es un protocolo de comunicacin, utilizado para la transferencia de informacin El modulo CAN es un controlador de comunicaciones

3. BIBLIOGRAFIA Microcontroladores avanzados dsPIC, CAN, capitulo 25.

You might also like