Está en la página 1de 6

ITSS MODULO CAN

MODULO CAN Eduardo Luis Romero Len e-mail: edurom.pollo@hotmail.com 25.1. INTRODUCCION AL MODULO CAN El bus CAN es un protocolo de comunicacin serie utilizado para l 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. 25.2 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 1bit bytes S ARBI O TRAJ F E 12bits 6 bits 0-8 16 bits 2 bits 7 bits R CON DA Ca C A E T TRO TO mp R C O R L S o C K F (0-8 CR Byt C es) 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

25.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 ARBI R CON DA Ca C A E O TRAJ T TRO TO mp R C O F E R L S o C K F (0-8 CR Byt C es) 25.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 12 bits 6 bits 16 bits 7 bits SO ARBITR RT CONTR Cam CR EO F AJE R OL po C F CRC 25.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 6 bits

25.3. FORMATO DE MENSAJE El modulo CAN soporta los siguientes tipos de tramas: Trama estndar Trama extendida Trama de peticin Trama error Interface Space 25.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 Flag de Delimitador campos (1) mostrados en error la siguiente figura:

25.4 MODOS DE FUNCIONAMIENTO

ITSS MODULO CAN

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. 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 reseteados y todos los registros contienen sus valores reseteados. 2

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. 25.5 REGISTROS DEL MODULO CAN Los registros asociados al modulo CAN son: 1. Registros de control y estado. 2. Registros de buffer de salida 3. Registros de buffer de entrada 4. Registros de tasa de transmisin 5. Registros de estado y control de interrupciones REGISTRO DE CONTROL Y ESTADO CICTRL 15 0 TS C C A RE OPM ICO T A SI B QO ODE DE A N D A P<2: <2:0 <2: M C L T 0> > 0> P KS 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

ITSS MODULO CAN

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 Bit 0 No implementado: su valor es 0

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

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

TXP RI - - - - - - - - <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 EID<17:14> - - - - EID<13:6> TXREQ TXLAR B TXERR TXABT

= mensaj e 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 Nota: este bit se resetea cuando TXREQ es reseteado Bit 3 enviado TXREQ: bit de peticin de mensaje

Fiagura: 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. 3

EID<5:0>

DLC<3:0>

SRR -

SID<1:6>

SID<5:0>

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

TXIDE

ITSS MODULO CAN

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

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 - - - - - - - - - RXRTRRO RXFUL FILHIT< 20>

CiTXnBm: Buffer de transmisin 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 FILHITO RXFUL

Bits 15-8 0 Bit 7

No implementados, sus valores son

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.

DBEN

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 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 25.6 RECEPCION DE MENSAJES 25.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 denominado MAB. Hay dos buffer de entrada visibles, RXB0 y RXB1, que pueden

JTOFF

ITSS MODULO CAN

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. 25.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. 25.6.3 FILTROS DE ACEPTACION DE MENSAJES 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. 25.6.4 SOBREESCRITURA DE ENTRADA La condicin de sobre escritura 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 sobre escritura RXnOVR y el bit ERRIF son puestos a uno y el mensaje del MAB ser descartado. Durante es estado de sobre escritura el modulo esta sincronizado con el bus CAN y puede transmitir mensajes pero no puede recibirlos 25.7 TRASMISION DE DATOS 25.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.

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

ITSS MODULO CAN

25.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. 25.8 CONCLUCIONES El modulo CAN tiene tres buffer de transmisin. El modulo CAN es un controlador de comunicaciones y trabaja como full CAN. 25.9 BIBLIOGRAFIA Microcontroladores Avanzados en dsPICs Diseo y Arquitectura