Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Grupos 03-04
ndice
1. INTRODUCCIN
1.1. Motivacin histrica .................................................. pag. 4
1.2. Caractersticas bsicas del bus CAN ....................... pag. 7
1.3. Competencia y futuro ............................................. pag. 10
1.4. Campos de aplicacin .............................................. pag. 13
1.5. Ejemplo de aplicacin prctica: Domtica ................ pag. 14
2. TRANSMISIN DE DATOS
2.1. Arquitectura de capas
2.1.1. Capa fsica................................................. pag.
2.1.2. Capa de enlace de datos ........................... pag.
2.2. Estructura de un nodo CAN.................................... pag.
2.3. Formato de codificacin y sincronizacin de datos...pag.
2.4. Tramas
2.4.1. Tipos de tramas ......................................... pag.
2.4.2. Trama de datos ......................................... pag.
2.4.3. Trama remota ............................................ pag.
2.4.4. Trama de error........................................... pag.
2.4.5. Trama de sobrecarga ................................ pag.
2.4.6. Espacio entre tramas................................. pag.
2.5. Acceso mltiple y abitraje de acceso al bus ........... pag.
2.6. Deteccin de errores
2.6.1. Deteccin de errores ................................. pag.
2.6.2. Aislamiento de nodos defectuosos ............ pag.
2.7. Especificaciones..................................................... pag.
2.8. Implementaciones .................................................. pag.
18
21
22
23
24
25
27
28
30
30
31
33
34
35
35
39
41
43
46
48
51
52
53
55
56
69
1. INTRODUCCIN
Razones
A comienzos de los 80, los ingenieros de Bosch evaluaron el posible uso de los
sistemas de bus serie existentes en los coches de pasajeros, pero ninguno de
los protocolos de red disponibles satisfacan los requisitos de estos.
Estandardizacin
La especificacin CAN (versin 2.0) de Bosch fue sometida a la
estandardizacin internacional a comienzos de los 90.
Concretamente en Noviembre de 1993, despus de diversos
conflictos polticos, se public el estndar ISO 11898, que defina
adems una capa fsica para velocidades de hasta 1 Mbit/s.
Paralelamente, un formato de CAN tolerante a fallos se incluy en la ISO
11519-2. En 1995, el estndar se ampli con la descripcin del identificador
CAN de 29 bits.
Desafortunadamente, todas las especificaciones y estandarizaciones
publicadas acerca de CAN contenan errores o estaban incompletas. Para
evitar incompatibilidades, Bosch se cercior, y sigue hacindolo, de que todos
los micros CAN cumplen con el modelo de referencia que ellos definieron.
De todas formas, las especificaciones CAN han sido revisadas y
estandarizadas con el tiempo en diferentes secciones: la norma ISO 11898-1
describe la 'capa de transmisin de datos CAN'; la ISO 11898-2 la capa fsica
CAN no tolerante a fallos'; y la ISO 11898-3 la capa fsica CAN tolerante a
fallos. Los estndares de ISO 11992 (referente a la interfaz para camiones y
remolques) e ISO 11783 (referente a la maquinaria agrcola y forestal) definen
los perfiles del uso de CAN basados en el US-protocol J1939.
Pioneros
A pesar de que CAN surgi con la idea de ser utilizado en coches de pasajeros,
un gran nmero de las primeras aplicaciones llegaran desde otros segmentos
de mercado distintos:
Entre otros, el fabricante finlands de ascensores Kone, fue uno de los
primeros en aprovecharse de sus ventajas.
La oficina de ingeniera Suiza Kyaser lo introdujo a los fabricantes de
maquinaria textil del pas, que acabaron fundando el Grupo de usuarios textiles
CAN, bajo el liderazgo de Lars-Berno Frediksson.
En Holanda, Sistemas mdicos Philips lo utiliz para las redes internas de sus
mquinas de Rayos X. La especificacin para mensajes de Philips (PMS),
desarrollada principalmente por Tom Suters, represent la primera capa de
aplicacin para redes CAN.
Tambin se sucedieron todo tipo de propuestas acadmicas, como por
ejemplo, la creacin a finales de los 80 de un sistema de bus basado en CAN,
para vehculos agrcolas (LBS).
Capas de aplicacin
Desde 1993, dentro del alcance del proyecto ASPIC, un consorcio europeo
liderado por BOSCH, desarroll un prototipo conocido como CANopen para
las redes internas de las celdas de produccin. En 1995, se public el perfil
totalmente revisado de las comunicaciones de CANopen, que en el plazo de
cinco aos ya se haba convertido en la red integrada estandarizada ms
importante de Europa, puesto que ofreca una gran flexibilidad y un gran
nmero de opciones de configuracin, as como diversos perfiles de dispositivo,
interfaz y uso.
Actualmente, CANopen se sigue utilizando especialmente en Europa:
mquinas de moldeado por inyeccin en Italia, mquinas expendedoras en
Inglaterra, gras en Francia, control de maquinaria en Austria, o maquinaria de
fabricacin de relojes en Suiza... Mientras que en Estados Unidos CANopen se
abre camino en el mbito de los toros mecnicos y las mquinas clasificadoras.
Poco despus de aquello, a comienzos de 1994, Allen-Bradley desarroll la
tecnologa DeviceNet, enfocada esencialmente a la automatizacin de las
fbricas. Pronto ganara adeptos en Estados Unidos debido sobretodo a su
funcionamiento plug & play (enchufar y listo).
Programacin sencilla.
Velocidad flexible: ISO define dos tipos de redes CAN: una red de alta
velocidad (de hasta 1 Mbps) definida por la ISO 11898-2, y una red de
baja velocidad tolerante a fallos (menor o igual a 125 Kbps) definida por
la ISO 11898-3.
Tiempo de bit
(S)
1
1.25
2
4
8
20
50
100
Vemos que J1850, pero sobretodo LIN, que tiene una mayor presencia en la
industria, son opciones ms econmicas, pero hasta qu punto son estas
tecnologas competidoras de CAN?
En la siguiente tabla, se exponen las diferentes caractersticas de LIN y CAN (y
de cmo extra el I2C de Philips), para detallar la similitud entre ellas:
CAN
Compaa que lo desarroll
Bosh
1Mb/s
Velocidad
Tamao de datos
Prioridad de mensajes
Garanta de latencia
Flexibilidad en la configuracin
Sistema Multimaestro
Deteccin y sealizacin de
errores
Retransmisin de tramas
LIN
Open source
20 Kb/s
I2C
64bits
Si
Si
Si
Si
Si
8bits
No
***
***
No
Si
Philips
0.1Mb/s /
0.4Mb/s
8bits
No
No
Si
Si
Si
automtica
No
programable
10
11
CAN Ethernet
Aun cuando las similitudes entre CAN y Ethernet son obvias, CAN posee algn
beneficio clave cuando se compara con el protocolo Ethernet. El esquema de
arbitraje que usa el protocolo CAN es de bit inteligente no destructivo. Esto
significa que se comparan los mensajes con cada bit en un momento
determinado, pero el mensaje con la prioridad ms alta no se destruye y se
retransmite; slo el mensaje que no gana el arbitraje de bus se detiene y se
retransmite. ste es un punto importante que ayuda a minimizar el tiempo de
fuera de servicio del bus y aumentan al mximo uso eficaz del ancho de banda
disponible.
Otra ventaja importante del arbitraje del bit inteligente no destructivo, que usa
CAN, es el hecho que esto da al bus caractersticas muy predecibles. Con
Ethernet, ambos transmisores se detienen cuando se detecta una colisin y
una cantidad de tiempo aleatorio se permite pasar antes de que ambos
prueben de la retransmisin. Con este elemento aleatorio de tiempo eliminado
de la funcin del bus, es posible lograr casi el 100% de eficacia en trminos de
utilizacin del ancho de banda.
Futuro
A da de hoy, el futuro de CAN se prev esperanzador, ya que incluso las
estimaciones ms conservadoras coinciden en que la presencia de CAN en el
mercado y en diversos campos de la industria, va a seguir en aumento durante
los prximos diez o quince aos.
12
13
CI
Dimensiones:
4 mdulos DIN
Frontal:
LED de estatus de alimentacin
7 LED's de reconocimiento de nodo
de expansin Botn de RESET
Entradas / Salidas:
1 entrada de bus CAN
1 entrada para 5 sondas de
temperatura
1 entrada para 2 receptores IR
1 salida para 4 emisores de IR
1 salida de bus IEE para nodos de
expansin
Comunicaciones externas:
Puerto RS-232
14
Dimensiones:
2 mdulos DIN
Lateral:
Interruptor final de bus
Entradas / Salidas:
3 conectores bus CAN, configurable
segn topologa
1 entrada alimentacin 24 VCD
1 entrada para lnea de telfono
1 entada aux.
1 salida de bus IEE para nodos de
expansin
Comunicaciones externas:
No
15
En este otro ejemplo de topologa podemos ver una instalacin tpica para un
adosado con tres CI, uno por planta de la vivienda, uno de los cuales (el
primero de ellos) se encontrara al lmite de su capacidad; podra ser el que se
encontrara en la primera planta del adosado, por ser esta planta la que
mayores controles requiere.
Para una mejor compresin en este ejemplo solo se han representado los CI y
no sus respectivos mdulos de ampliacin. Este sera un ejemplo de aplicacin
en un edificio de oficinas, residencia o en un hotel, donde tenemos distintas
plantas que controlar. En funcin de la totalidad de elementos que vamos a
controlar dispondremos de una mayor o menor cantidad de CI por planta.
16
2. TRANSMISIN
DE DATOS
17
18
Estndar 11519
A diferencia del bus de alta velocidad, el bus de baja velocidad requiere dos
resistencias en cada transceptor: RTH para la seal CAN_H y RTL para la
seal CAN_L. Esta configuracin permite al transceptor de bus de baja
velocidad (fault-tolerant) detectar fallas en la red. La suma de todas las
resistencias en paralelo, debe estar en el rango de 100-500.
19
Estndar 11898
Los nodos conectados en este bus interpretan los siguientes niveles lgicos:
-
20
21
22
23
2.4 Tramas
2.4.1.Tipo de tramas
El protocolo CAN est basado en mensajes, no en direcciones. El nodo emisor
transmite el mensaje a todos los nodos de la red sin especificar un destino y
todos ellos escuchan el mensaje para luego filtrarlo segn le interese o no.
Existen distintos tipos de tramas predefinidas por CAN para la gestin de la
transferencia de mensajes:
-
24
25
26
Los nodos tienen habilidad para requerir informacin a otros nodos. Un nodo
pide una informacin a los otros y el nodo que tiene dicha informacin enva
una comunicacin con la respuesta que puede ser recibida adems por otros
nodos si estn interesados.
En este tipo de mensajes se enva una trama con el identificador del nodo
requerido, a diferencia con los mensajes de datos, el bit RTR toma valor
recesivo y no hay campo de datos.
En caso de que se enve un mensaje de datos y de peticin remota con el
mismo identificador, el de datos ganar el acceso al bus puesto que el RTR
lleva valor dominante.
27
28
La regla de relleno de bits que aparece lneas superiores, consiste en que cada
cinco bits de igual valor se introduce uno de valor inverso tal y como se ve en la
figura siguiente:
29
Una trama de sobrecarga tiene el mismo formato que una trama de error activo.
Sin embargo, la trama de sobrecarga slo puede generarse durante el espacio
entre tramas. De esta forma se diferencia de una trama de error, que slo
puede ser transmitida durante la transmisin de un mensaje. La trama de
sobrecarga consta de dos campos, el Indicador de Sobrecarga, y el delimitador.
El indicador de sobrecarga consta de 6 bits dominantes que pueden ser
seguidos por los generados por otros nodos, dando lugar a un mximo de 12
bits dominantes. El delimitador es de 8 bits recesivos.
Una trama de sobrecarga puede ser generada por cualquier nodo que debido a
sus condiciones internas no est en condiciones de iniciar la recepcin de un
nuevo mensaje. De esta forma retrasa el inicio de transmisin de un nuevo
mensaje. Un nodo puede generar como mximo 2 tramas de sobrecarga
consecutivas para retrasar un mensaje. Otra razn para iniciar la transmisin
de una trama de sobrecarga es la deteccin por cualquier nodo de un bit
dominante en los 3 bits de "intermission". Por todo ello una trama de
sobrecarga de 5 generada por un nodo dar normalmente lugar a la generacin
de tramas de sobrecarga por los dems nodos dando lugar, como se ha
indicado, a un mximo de 12 bits dominantes de indicador de sobrecarga.
El espacio entre tramas separa una trama (de cualquier tipo) de la siguiente
trama de datos o interrogacin remota. El espacio entre tramas ha de constar
de, al menos, 3 bits recesivos. Esta secuencia de bits se denomina
"ntermission". Una vez transcurrida esta secuencia un nodo en estado de error
activo puede iniciar una nueva transmisin o el bus permanecer en reposo.
Para un nodo en estado error pasivo la situacin es diferente, deber espera
una secuencia adicional de 8 bits recesivos antes de poder iniciar una
transmisin. De esta forma se asegura una ventaja en inicio de transmisin a
los nodos en estado activo frente a los nodos en estado pasivo.
30
31
32
33
34
2.7. Especificaciones
CAN tiene dos formatos diferentes para transmitir datos: el formato de trama
estndar (Standard Frame), segn la especificacin CAN 2.0A y, el formato de
trama extendida (Extended Frame) segn la especificacin CAN 2.0B. La
principal diferencia entre ambos es la longitud del identificador del mensaje
(ID), que en el caso de la trama estndar es de 11 bits (2032 identificadores, ya
que los 16 bits identificadores de menor prioridad estn reservados) y en el
caso de la extendida es de 29 bits (mas de 536 millones de identificadores):
-
2.8. Implementaciones
Existen tres tipos de arquitecturas en microcontroladores: Stand-Alone CAN
controller, Integrated CAN Controller y Single-Chip CAN Node.
35
As pues, si de alguna manera se pretende trabajar en una red CAN con una
placa de pruebas, en un principio no sera factible a no ser que de alguna
manera se le acoplasen el controlador y el transceptor CAN correspondiente.
Pero Microchip ha creado una placa de pruebas especfica para este tipo de
comunicaciones, que desarrolla adems este tipo de arquitectura y que se
puede conseguir tambin a travs de la pgina web de microchip.
36
37
38
39
40
La conexin fsica sera a travs de los pines C1RX (recepcin CAN del micro),
C1TX (transmisin CAN del micro) del microcontrolador, con los pines RXD y
TXD del transceptor. Recordar que la funcin del transceptor es la de adecuar
la seal de entrada del bus a la del sistema. Esta entrada de seal del bus se
efecta a travs de los patillas CANH y CANL del transceptor.
Aqu vemos la conexin entre el micro y el transceptor, representado esta vez
por un diagrama de bloques:
Encapsulado del microcontrolador dsPIC30F4013
42
43
44
45
46
Sobrecarga de recepcin:
Esta condicin de sobrecarga se da cuando el MAB ha ensamblado un
mensaje recibido vlido, cuando el mensaje es aceptado a travs del filtro de
aceptacin, y cuando el bfer de recepcin asociado con el filtro no ha sido
designado como vaco por el mensaje previo.
El flag de error de sobrecarga, RXnOVR (CiINTF<15> o CiINTF<14>), y el bit
ERRIF (CiINTF<5>) son puestos a 1 y el mensaje del MAB es descartado. Si el
bit DBEN est desactivado, RXB1 y RXB0 operan independientemente.
Cuando esto ocurre, un mensaje dirigido a RXB0 no es desviado a RXB1 si el
RXB0 contiene un mensaje no ledo y el RX0OVR se pone a 1.
Si el bit DBEN esta activado, la sobrecarga del RXB0 se trata de forma
diferente. Si se recibe un mensaje vlido para RXB0 y el bit RXFUL = 0, el
mensaje para RXB0 se carga en RXB1. No se genera un mensaje de error de
sobrecarga para RXB0. Si se recibe un mensaje valido para RXB0 y el bit
RXFUL = 1, tanto RXB0 como RXB1 estn llenos, por lo tanto, el mensaje se
perder y se generar un mensaje de error de sobrecarga para RXB1.
Errores de recepcin
El Modulo CAN puede detectar los siguientes errores de recepcin:
- Error de Chequeo de Redundancia Cclica (CRC)
- Error de Relleno de Bits (Bit Stuffing Error)
- Error de Mensaje Invlido Recibido
Estos errores de recepcin no generan una interrupcin. Sin embargo, si que
se incrementa el contador de errores de recepcin. El bit RXWAR (CiINTF<9>)
indica que el contador de errores de recepcin ha alcanzado el lmite de
advertencia de la CPU (este lmite es 96) y se genera una interrupcin.
Interrupciones de recepcin
Las Interrupciones de recepcin se pueden dividir en 3 grandes grupos, cada
uno de ellos incluye varias condiciones que generan interrupciones:
- Interrupcin de recepcin: Un mensaje se ha recibido correctamente
y se ha cargado en uno de los bufers de recepcin. Esta interrupcin
se activa inmediatamente despus de recibir el campo Fin de Trama
(EOF). El flag RXnIF indica que buffer de recepcin ha causado la
interrupcin.
- Interrupcin de despertador (Wake-up Interrupt): El mdulo CAN se
ha despertado del modo Deshabilitado (Disable) o el dispositivo se
ha despertado del modo Durmiendo (Sleep)
- Interrupcin de error de recepcin: Una interrupcin de error de
recepcin se seala en el bit ERRIF. La fuente del error puede ser
determinada comprobando los bits del registro Estatus de
Interrupcin CAN, CiINTF.
47
Secuencia de transmisin:
Para iniciar la transmisin del mensaje, el bit TXREQ (CiTXnCON<3>) debe
ponerse a 1. El mdulo del bus CAN resuelve cualquier conflicto de tiempo
entre el establecimiento del bit TXREQ y el Inicio de Trama (SOF), asegurando
que si la prioridad ha sido cambiada, se ha resuelto correctamente antes de
llegar al SOF. Cuando se pone a 1 TXREQ, los bits del flag TXABT
(CiTXnCON<6>), TXLARB (CiTXnCON<5>) y TXERR (CiTXnCON<4>) son
puestos a 0 automticamente.
Poner a 1 el bit TXREQ simplemente marca un bfer de mensaje como puesto
en cola para transmisin. Cuando el mdulo detecta el bus disponible, empieza
a transmitir el mensaje que tiene mayor prioridad.
48
Errores de transmisin
El modulo CAN detecta los siguientes errores de transmisin:
- Error de Ack
- Error de forma
- Error de bit
Estos errores de transmisin no generan necesariamente una interrupcin,
pero son indicados por el contador de errores de transmisin, incrementndolo
en uno. Una vez que el contador de errores supera el valor de 96, los bits
ERRIF (CiINTF<5>) y TXWAR (CiINTF<10>) son puestos a 1. Adems, se
genera una interrupcin y se pone a 1 el bit TXWAR del registro de banderas
de error.
Interrupciones de transmisin
Las Interrupciones de transmisin se pueden dividir en 2 grandes grupos, cada
uno de estos incluye varias condiciones que generan interrupciones:
-
49
50
51
Debemos, por tanto, cambiar de escala para bajar la frecuencia del reloj, y as
poder adecuar el sistema a nuestras necesidades. Este valor para nuestro
dsPIC30F4013, se define en su correspondiente manual como ajuste de
preescalado (prescaler setting) y se obtiene a partir de la siguiente ecuacin:
TQ =
donde FCAN es FCY (si el bit CANKS est puesto a 1) o 4FCY (si CANKS
est puesto a 0). Adems, FCAN no debe sobrepasar nunca los 30 MHz, es
decir que si CANKS = 0, FCY no debe exceder de 7.5 MHz, ya que como
hemos dicho FCAN=4FCY en este caso.
Adems, para asegurar la funcionalidad de la red, se incluye en una posicin
concreta del tiempo de bit (del cual hablaremos ms adelante), un punto de
muestreo (sample point en ingls). Este es el punto exacto en el que el nivel de
bus es ledo e interpretado como el valor de ese respectivo bit.
En algunos microcontroladores, entre los que se incluye dsPIC30F4013, si la
temporizacin de bits se retrasa y contiene muchos TQ, es posible realizar
tambin, un muestreo mltiple sobre el bus. En este caso, las muestras para
realizar el clculo pueden ser tomadas en el punto de muestreo o en dos
posiciones anteriores a este con una distancia de TQ/2. Adems, el mdulo
CAN permite al usuario elegir entre muestrear tres veces en el mismo punto o
una vez en cada uno de los tres puntos, segn pongamos a 0 o a 1 el bit
SAM (CiCFG2<6>).
Es decir, en este tipo de muestreo el nivel determinado por el bus corresponde
al resultado por mayora de tres valores. Para asegurar la validez del clculo,
este muestreo debe ocupar del 60 al 70 por ciento del tiempo de bit,
dependiendo de los parmetros del sistema.
52
Se puede observar como el punto de muestreo del bit (sample point) se realiza
inmediatamente despus del segmento Phase_Seg1 y antes de Phase_Seg2.
Las funciones y los tiempos de cada uno de los segmentos son los siguientes:
-
53
54
3.7. Programacin
3.7.1. MPLAB
MPLAB es un software que junto con un emulador y un programador de los
mltiples que existen en el mercado, forman un conjunto de herramientas de
desarrollo muy completo para el trabajo y/o el diseo con los
microcontroladores PIC y dsPIC desarrollados y fabricados por la empresa
Arizona Microchip Technology (AMT). MPLAB incorpora todas las utilidades
necesarias para la realizacin de cualquier proyecto y, si no se dispone de un
emulador, el programa permite editar el archivo fuente en lenguaje
ensamblador de nuestro proyecto, adems de ensamblarlo y simularlo en
pantalla, pudiendo ejecutarlo posteriormente en modo paso a paso y ver como
evolucionaran de forma real tanto sus registros internos, la memoria RAM y/o
EEPROM de usuario como la memoria de programa, segn se fueran
ejecutando las instrucciones. Adems el entorno que se utiliza es el mismo que
si se estuviera utilizando un emulador.
Nosotros, durante el desarrollo de la asignatura, utilizaremos la versin MpLab
30 v2 student edition (edicin gratuita que podemos adquirir en la pgina oficial
de Microchip) la cual presenta algunas limitaciones respecto al software original
pero que para nuestro trabajo es ms que suficiente ya que permite simular
directamente sobre la placa de pruebas.
Como ya hemos comentado, la utilizacin de MpLab requiere un emulador de
lenguajes de alto nivel, para evitar la utilizacin del lenguaje de ensamblador
que incluye el mismo MpLab. Nosotros utilizaremos el compilador c30.
55
3.7.2. Funciones
Esta seccin contiene una lista de las funciones para CAN y un ejemplo de uso
de las funciones. El uso de las funciones, nos ahorra tener que conocer en
profundidad las estructuras del mdulo CAN, ya que a travs de ellas podemos
realizar acciones sin tener que cambiar manualmente los valores de los bits de
ciertos registros. Adems, pueden ser puestas en prctica como macros.
Las siguientes funciones definen a toda la familia dsPIC30f, en nuestro caso el
dsPIC30F4013 solamente tiene un CAN.
Funciones individuales
CAN1AbortAll
CAN2AbortAll
Descripcin:
Include:
Prototipo:
Argumentos:
Valores de retorno:
Comentarios:
Archivo de origen:
Ejemplo de cdigo:
CAN1GetRXErrorCount
CAN2GetRXErrorCount
Descripcin:
Include:
Prototipo:
Argumentos:
Valores de retorno:
Comentarios:
Archivo de origen:
Ejemplo de cdigo:
56
CAN1GetTXErrorCount
CAN2GetTXErrorCount
Descripcin:
Include:
Prototipo:
Argumentos:
Valores de retorno:
Comentarios:
Archivo de origen:
Ejemplo de cdigo:
CAN1sBusOff
CAN2sBusOff
Descripcin:
Include:
Prototipo:
Argumentos:
Valores de retorno:
Comentarios:
Archivo de origen:
Ejemplo de cdigo:
CAN1sRXReady
CAN2sRXReady
Descripcin:
Include:
Prototipo:
Argumentos:
Valores de retorno:
57
Comentarios:
Archivo de origen:
Ejemplo de cdigo:
CAN1sRXPassive
CAN2sRXPassive
Descripcin:
Include:
Prototipo:
Argumentos:
Valores de retorno:
Comentarios:
Archivo de origen:
Ejemplo de cdigo:
CAN1sTXPassive
CAN2sTXPassive
Descripcin:
Include:
Prototipo:
Argumentos:
Valores de retorno:
Comentarios:
Archivo de origen:
Ejemplo de cdigo:
nuevo.
Esta funcin devuelve el estado del bit RXFUL
del registro de control de recepcin (control
register)
CAN1IsRXReady.c
CAN2IsRXReady.c
char rx_1_status;
rx_1_status = CAN1IsRXReady(1);
58
CAN1lsTXReady
CAN2lsTXReady
Descripcin:
Include:
Prototipo:
Argumentos:
Valores de retorno:
Comentarios:
Archivo de origen:
Ejemplo de cdigo:
CAN1RecieveMessage
CAN2RecieveMessage
Descripcin:
Include:
Prototipo:
Argumentos:
Valores de retorno:
Comentarios:
Archivo de origen:
Ejemplo de cdigo:
59
CAN1SendMessage
CAN2SendMessage
Descripcin:
Include:
Prototipo:
Argumentos:
Valores de retorno:
Comentarios:
Ninguno
Esta funcin escribe el valor identificador en los
registros SID y EID, los datos que sern
transmitidos en el registro TX, pone la longitud
de los datos e inicializa la transmisin por el bit
TXREQ.
CAN1SendMessage.c
CAN2SendMessage.c
CAN1SendMessage((CAN_TX_SID(1920)) &
(CAN_TX_EID_EN) &
Archivo de origen:
Ejemplo de cdigo:
60
(CAN_SUB_NOR_TX_REQ),
(CAN_TX_EID(12344)) &
(CAN_NOR_TX_REQ),
Txdata, datalen, tx_rx_no);
CAN1SetFilter
CAN2SetFilter
Descripcin:
Include:
Prototipo:
Argumentos:
Valores de retorno:
Comentarios:
ninguno
Esta funcin escribe el valor de 16 bits de sid en
el registro CiRXFnSID y el valor de 32 bits en
CiRXFnEIDH y CiRXFnEIDL, registros
correspondientes al filtro especificado por
filter_no. El filtro 0 es tomado como falta.
CAN1SetFilter.c
CAN2SetFilter.c
CAN1SetFilter(1, CAN_FILTER_SID(7) &
CAN_RX_EID_EN, CAN_FILTER_EID(3));
Archivo de origen:
Ejemplo de cdigo:
61
CAN1SetMask
CAN2SetMask
Descripcin:
Include:
Prototipo:
Argumentos:
Valores de retorno:
Comentarios:
Ninguno
Esta funcin escribe el valor de 16 bits de sid en
el registro CiRXFnSID y otro valor de 32 bits de
eid en CiRXFnEIDH y CiRXFnEIDL, registros
correspondientes a la mscara especificada por
mask_no. El filtro 0 es tomado como falta.
CAN1SetMask.c
CAN2SetMask.c
CAN1SetMask(1, CAN_MASK_SID(7) &
CAN_MATCH_FILTER_TYPE,
CAN_MASK_EID(3));
Archivo de origen:
Ejemplo de cdigo:
CAN1SetOperationMode
CAN2SetOperationMode
Descripcin:
Include:
Prototipo:
Argumentos:
62
Ninguno
Esta funcin configura los siguientes bits de
CiCTRL:-CSIDL, REQOP<2:0> y CANCKS
Archivo de origen:
CAN1SetOperationMode.c
CAN2SetOperationMode.c
CAN1SetOperationMode(CAN_IDLE_STOP &
CAN_MASTERCLOCK_0 &
CAN_REQ_OPERMODE_DIS &
CAN_CAPTURE_DIS);
Ejemplo de cdigo:
CAN1SetOperationModeNoWait
CAN2SetOperationModeNoWait
Esta funcin aborta las transmisiones pendientes y
Descripcin:
configura el mdulo CAN
can.h
Include:
void CAN1SetOperationModeNoWait(
Prototipo:
unsigned int config);
void CAN2SetOperationModeNoWait(
unsigned int config);
Config: valor de 16 bits que sern cargados en el
Argumentos:
registro CiCTRL , la combinacin de la siguientes
definiciones.
CAN_IDLE_CON_NO_WAIT CAN On in Idle mode
CAN_IDLE_STOP_NO_WAIT CAN Stop in Idle
mode
CAN_MASTERCLOCK_1_NO_WAIT FCAN is FCY
CAN_MASTERCLOCK_0_NO_WAIT FCAN is 4
FCY
Modos de operacin de CAN
CAN_REQ_OPERMODE_NOR_NO_WAIT
CAN_REQ_OPERMODE_DIS_NO_WAIT
63
CAN_REQ_OPERMODE_LOOPBK_NO_WAIT
CAN_REQ_OPERMODE_LISTENONLY_NO_WAIT
CAN_REQ_OPERMODE_CONFIG_NO_WAIT
CAN_REQ_OPERMODE_LISTENALL_NO_WAIT
Valores de retorno:
Comentarios:
Archivo de origen:
Ejemplo de cdigo:
CAN1SetRXMode
CAN2SetRXMode
Descripcin:
Include:
Prototipo:
Argumentos:
Valores de retorno:
Comentarios:
Archivo de origen:
Ejemplo de cdigo:
64
CAN1SetTXMode (funcin)
CAN2SetTXMode
Descripcin:
Include:
Prototipo:
Argumentos:
Valores de retorno:
Comentarios:
Archivo de origen:
Ejemplo de cdigo:
CAN1Initialize
CAN2Initialize
Descripcin:
Include:
Prototipo:
Argumentos:
65
CAN_SYNC_JUMP_WIDTH4
Baud Rate prescaler
CAN_BAUD_PRE_SCALE(x) (((x-1) & 0x3f) |
0xC0)
config2: El valor que ser escrito en el registro
CiCFG2, la combinacin de las siguientes
definiciones.
CAN bus line filter selection for wake-up
CAN_WAKEUP_BY_FILTER_EN
CAN_WAKEUP_BY_FILTER_DIS
CAN propagation segment length
CAN_PROPAGATIONTIME_SEG_TQ(x)
(((x-1) & 0x7) | 0xC7F8)
CAN phase segment 1 length
CAN_PHASE_SEG1_TQ(x)
((((x-1) & 0x7) *0x8) | 0xC7C7)
CAN phase segment 2 length
CAN_PHASE_SEG2_TQ(x)
((((x-1) & 0x7) *0x100) | 0xC0FF)
CAN phase segment 2 mode
CAN_SEG2_FREE_PROG
CAN_SEG2_TIME_LIMIT_SET
Valores de retorno:
Comentarios:
Archivo de origen:
Ejemplo de cdigo:
66
ConfigIntCAN1
ConfigIntCAN2
Descripcin:
Include:
Prototipo:
Argumentos:
Valores de retorno:
Comentarios:
67
Archivo de origen:
Ejemplo de cdigo:
Macros individuales
EnableIntCAN1
EnableIntCAN2
Descripcin:
Include:
Argumentos:
Comentarios:
Ejemplo de cdigo:
DisableIntCAN1
DisableIntCAN2
Descripcin:
Include:
Argumentos:
Comentarios:
Ejemplo de cdigo:
SetPriorityIntCAN1
SetPriorityIntCAN2
Descripcin:
Include:
Argumentos:
Comentarios:
Ejemplo de cdigo:
68
69
datalen = 8;
CAN1SendMessage((CAN_TX_SID(1920)) & CAN_TX_EID_EN &
CAN_SUB_NOR_TX_REQ,
(CAN_TX_EID(12344)) & CAN_NOR_TX_REQ,
Txdata,datalen,tx_rx_no);
/* Pone la respuesta en modo Loopback */
CAN1SetOperationMode(CAN_IDLE_CON & CAN_CAPTURE_DIS &
CAN_MASTERCLOCK_1 &
CAN_REQ_OPERMODE_LOOPBK);
while(C1CTRLbits.OPMODE !=2);
/* Espera que el mensaje se transmita completamente */
while(!CAN1IsTXReady(0))
/* Espera que el buffer de recepcin contenga el mensaje vlido */
while(!CAN1IsRXReady(0));
/* Lee los datos recibidos del buffer de recepcin*/
CAN1ReceiveMessage(datareceived, datalen, tx_rx_no);
while(1);
return 0;
}
70
4. ANEXO:
Dispositivos CAN
71
4. Dispositivos CAN
Evidentemente enumerar todos los dispositivos que podemos conectar a CAN
nos es imposible, pero s podemos mostrar algunos de estos productos, para
comprobar la versatilidad y el gran nmero de estos que se encuentran en el
mercado. Nos centraremos principalmente en los sensores, ya que nos van a
ser ms tiles a la hora de realizar nuestro trabajo en el dsPIC30F4013.
SENSORES
Interfaz CAN
Rango de medida: presiones
de 40 bar a 600 bar.
Precisin 0.25 %
Rango de temperatura
soportable: 25 C a +85 C
Tensin: de 10 a 35 VDC
Tasa de transmisin de 10kbit
a 1Mbit (configurable)
Sensores MDT CAN + IDA CAN
- La seal digital tiene una
resolucin de 13 bits sobre los
dos cables del bus CAN.
- El tiempo de medida y de
conversin de la seal de
presin es de 20 milisegundos,
ms que suficiente para la
mayora de las aplicaciones
industriales.
- El cableado interno de CAN,
supervisa de forma automtica
que las funciones del
transductor de presin sean las
correctas, y enva una seal de
alarma en caso contrario.
72
73
74
75
ACTUADORES
DATALOGGERS
MDULOS DE ENTRADA-SALIDA
76
CAN - ETHERNET
CAN-RS232
CAN-CBM-DP / CAN-DP
77
CAN-Wireless
CAN-GSM
CAN-GPRS
CAN-Bluetooth
REPETIDORES
78
5. BIBLIOGRAFA
79
Bibliografa bsica:
1. INTRODUCCIN
www.can-cia.org/can/
www.can-cia.org/can/protocol/history/history.html
www.can-cia.org/applications/cankingdom/
www.serconet.com/usr/laureanog/HPV1B_31.HTM
www.semiconductors.bosch.de/de/20/can/index.asp
www.can.bosch.com
http://es.wikipedia.org/wiki/CAN_bus
www.canbus.galeon.com/electronica/canbus.htm
www.ihs.com.es/
2. TRANSMISIN DE DATOS
http://www.kvaser.com/index.htm
www.unavarra.es
3. CAN DEL MICRO dsPIC30F4013
www.port.de/pdf/CAN_Bit_Timing.pdf
http://cabierta.uchile.cl/revista/19/articulos/pdf/edu4.doc
www.microchip.com
4. ANEXO: Dispositivos CAN
http://www.can-cia.org/products/pg2005/html/index.htm
http://www.canusb.com/index.htm
http://www.ixxat.de/
80