SW Manual del Software por Raúl Milla Pérez www.arcan.es
Indice La librería Método: init Método: check_message Método: byte get_message Método: boolean check_free_buffer Método: byte send_message Método: int mode_loopback Método: int mode_normal pag.3 pag.5 pag.5 pag.6 pag.6 pag.7 pag.7 pag.8 3
La librería Toda la funcionalidad de ArCan es accesible mediante la clase tarcan. En la parte pública se definen todos los métodos a funciones básicas para el uso de ArCan, en ellos se implementa lo necesario para enviar/recibir cualquier mensaje CAN 2.0 A. La parte privada de la clase no es accesible desde las aplicaciones que podamos hacer en Arduino, pero con el conocimiento suficiente del Hardware podemos realizar configuraciones más concretas, como por ejemplo, habilitar los mensajes CAN 2.0 B. Lo primero que encontramos en la declaración de la clase, ArCan.h, es la definición de registro tcan, este registro contiene los parámetros de un mensaje CAN 2.0 A. Como podemos ver, en la estructura se detallan todas las partes configurables de un mensaje CAN 2.0 A. Recordemos que significan las distintas partes de un mensaje CAN, Start of Frame, este bit se encarga de avisar a los demás dispositivos que se va a iniciar un mensaje, y de esta forma se sincronizan. El inicio de mensaje se marca por un bit dominante 0. Arbitration Field, consta del identificador del mensaje, 11 bits, y un bit de control adicional (RTR). Cuanto más bajo sea el valor del Identificador más prioridad tendrá el mensaje. Durante la transmisión de este campo, el emisor comprueba en cada bit si todavía está autorizado para emitir o si está emitiendo otro dispositivo con un mensaje de mayor prioridad. El bit RTR indica si el mensaje contiene datos (RTR=0) o si se trata de una trama remota sin datos 4
(RTR=1). Una trama de datos siempre tiene una prioridad más alta que una trama remota. La trama remota se emplea para solicitar datos a otras unidades o para realizar un chequeo. Control Field, Este campo informa sobre las características del Data Field, se com-pone por un primer bit IDE, que indica que tipo de mensaje es, 0 para una trama estándar y 1 para una trama extendida. Después un bit reservado y los cuatro últimos contienen la longitud en Bytes del campo de datos Data Field. Data Field, en este campo se encuentra la información que puede variar entre 0 y 8 Bytes. Un mensaje de longitud 0 puede emplearse para la sincronización de procesos distribuidos. CRC Field, es un código de 15 bits para verificar posibles errores de transmisión, está basado en una codificación Hamming con distancia 6, el último bit es siempre un 1 y delimita el campo CRC. Ack Field, el campo ACK está compuesto por dos bit que son siempre trasmitidos como recesivos 1. Todas los dispositivos que que verifican el CRC modifican el primer bit del campo ACK por uno dominante 0, de forma que el periférico que está todavía trasmitiendo reconoce que al menos algún dispositivo ha recibido el mensaje correc-tamente. De no ser así, el emisor interpreta que su mensaje presenta algún error. End of Frame, este campo indica el final del mensaje con una cadena de 7 bits rece-sivos 1. Puede ocurrir que en determinados mensajes se produzcan largas cadenas de ceros o unos, y que esto provoque una pérdida de sincronización entre los dispositivos. CAN resuelve esta situación insertando un bit de diferente polaridad cada cinco bits iguales: cada cinco 0 se inserta un 1 y viceversa. El dispositivo que utiliza el mensaje, descarta un bit posterior a cinco bits iguales. Estos reciben el nombre de bit stuffing. A continuación vamos a describir todos los métodos públicos de la clase tarcan. Para facilitar la comprensión del documento vamos a suponer que previamente se ha declarado una Clase tipo tarcan y un mensaje tipo tcan. 5
6
7
8
9