can felipe augusto da silva paulo ricardo cechelero villa programação de periféricos 07/1 profº...

21
CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

Upload: internet

Post on 17-Apr-2015

106 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

CANFelipe Augusto da Silva

Paulo Ricardo Cechelero Villa

Programação de Periféricos 07/1Profº Eduardo Bezerra

Page 2: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

CAN - ?

Mas, o que é CAN?

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

Page 3: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

CAN - Controller Area Network

O que é: Foi criado pela Bosch GmbH (Gesellschaft mit

beschränkter Haftung, Empresa limitada, Ltd. em alemão) nos meados de 1986.

Uma demanda da Mercedes-Benz e BMW, pois haviam dificuldade em conectar e compartilhar as informações da ECU (Electronic Control Units).

O padrão UART não servia, pois era somente para comunicação ponto-a-ponto, e era necessários conectar vários nodos.

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

Page 4: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

CAN - Controller Area Network

O que é: O primeiro CAN Chip foi disponibilizado pela

Intel em 1987, e depois disso várias outras empresas.

Baseadas em RTO’s (sistemas de tempo real), possuem um controle rígido de erros e garantia de recebimento de mensagens.

As mensagens são geradas no modo de broadcast para um barramento único.

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

Page 5: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

CAN - Controller Area Network

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

Page 6: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

CAN - Controller Area Network

São 4 os tipos de mensagens trafegando nas redes CAN. São elas:

Mensagens enviadas quando o sistema esta num estado funcional: Data Frame

Remote Frame

Mensagens enviadas quando o sistema esta num estado

característico de erro: Error Frame

Overload Frame

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

Page 7: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

CAN - Controller Area Network

Data Frame: Tipo de mensagem enviada na rede para transportar

informações correntes do sistemas, dados normais. Por exemplo;

em sistemas automotivos serve para sinalizar o estado da

temperatura do óleo (sensor que deve enviar informações

constantes).

Remote Frame: Mensagem enviada solicitando informação do

sistema, ou seja, quando um dispositivo precisa verificar se há água

no reservatório do sistema de limpeza do pára-brisa este envia uma

mensagem para o controlador do reservatória solicitando o estado

atual do mesmo.

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

Page 8: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

CAN - Controller Area Network

Overload Frame: Mensagem que serve para indicar um estado

ocupado do sensor, ou seja, quando um dispositivo envia uma

mensagem de Remote Frame para um dispositivo ocupado é

retornado uma mensagem Overload indicando congestionamento

do dispositivo.

Error Frame: Mensagem característica quando um dispositivo indica

que não foi possível enviar uma mensagem de controle por ser

recessiva. Este tipo de mensagem também serve para indicar que o

dispositivo apresenta falhas.

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

Page 9: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

CAN - Controller Area Network

Pacote de dados:

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

SOF (1 bit dominante): Marca o início de uma mensagem. Quando o

barramento se encontra ocioso, uma borda de descida do SOF sincroniza os

nodos da rede (hard sincronization);

Dados (0 a 64 bits): Contém o dado da mensagem;

CRC (16 bits): Contém o checksum dos bits precedentes da mensagem. Esse

checksum é usado para fazer detecção de erros;

ACK (2 bits): É composto pelo bit ACK Slot e pelo bit Delimitador de ACK.

Transmissores enviam ambos os bits em recessivo. Um receptor indica que

recebeu a mensagem enviando um bit dominante no ACK Slot. Isso indica ao

transmissor que ao menos um nodo recebeu a mensagem corretamente;

Page 10: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

CAN - Controller Area NetworkCAN - Controller Area Network

EOF (7 bits recessivos): End Of Frame delimita o fim de uma mensagem. Bit

stuffing é desativado enquanto EOF está ativo;

IDLE (0 ou + bits recessivos): Sinaliza que o barramento está livre. Qualquer

nodo pode começar uma transferência de mensagem;

Intermission ou IFS - InterFrame Space (3 bits recessivos): IFS é o tempo

necessário para que um nodo transfira um pacote corretamente recebido do

barramento para área de armazenamento local (mailbox). É o tempo mínimo

entre a transmissão de dois pacotes (tempo interno para nodo processar o

pacote ).

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

Pacote de dados:

Page 11: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

Arbitração e Controle: Esses campos são sub-divididos de acordo com a

figura abaixo.

CAN - Controller Area Network

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

Page 12: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

Identificador (11 ou 29 bits): É o endereço lógico e a prioridade da

mensagem. Valores menores tem maior prioridade. O formato padrão

possui 11 bits, enquanto o estendido possui 29.

RTR (1 bit): Remote Transmission Request identifica se a mensagem é de

dados (dominante) ou de requisição de dados (recessivo);

IDE (1 bit): O IDE (Identifier Extension) identifica se a mensagem é do

formato padrão (dominante) ou estendido (recessivo);

SRR (1 bit recessivo): Substitute Remote Request;

r0 e r1( 2 bits dominantes): São bits de reserva;

CAN - Controller Area Network

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

Page 13: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

DLC (4 bits): Data Length Code informa o número de bytes que será

transmitido. Originalmente CAN suporta o envio de até 8 bytes de dados

em um único pacote. Porém, em aplicações específicas, pode-se fazer

uso de até 16 bytes de dados por pacote. A tabela abaixo mostra a

codificação do campo DLC.

CAN - Controller Area Network

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

Page 14: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

Pacote de requisição de dados:

CAN - Controller Area Network

Existem duas diferenças entre pacotes de dados e pacotes requisição de

dados:

Primeiramente o bit RTR é transmitido dominante em pacotes de dados e

recessivo em pacotes requisição de dados.

A outra diferença é que não existe campo de dados em pacotes requisição

de dados. Quando um pacote de dados e um pacotes requisição de dados

com mesmo identificador são transmitidos no mesmo instante, o pacote de

dados ganha a disputa devido ao bit RTR dominante. Assim, o nodo que

requisitou o dado recebe-o imediatamente.

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

Page 15: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

CAN - Controller Area Network

Pacote de erro:

Um pacote de erro é gerado por qualquer nodo que detecte um erro. Sua

função, por tanto, é notificar a ocorrência de falhas. O pacote de erro é

formado por dois campos: flag de erro e delimitador de erro.

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

Page 16: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

CAN - Controller Area Network

Flag de Erro – 6 bits – É o campo que sinaliza a existência de um erro.

Existem dois tipos de flag de erros: flag erro ativo e flag erro passivo. Um

nodo em estado de erro ativo envia um flag de erro ativo (dominante),

enquanto um nodo em estado de erro passivo envia um flag de erro passivo

(recessivo).

Delimitador de Erro – 8 bits (recessivos) - É transmitido pelo nodo que

enviou o dado que continha erro. Sua função é recomeçar comunicações

no barramento após uma falha.

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

Page 17: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

CAN - Controller Area Network

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

Page 18: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

CAN - Controller Area Network

Pacote Overload

É usado, basicamente, para sinalizar a um transmissor que o receptor não

está pronto para receber as próximas mensagens, portanto o transmissor

deve esperar para fazer a próxima transmissão.

O formato do pacote é idêntico ao pacote de erro com a diferença que

Overload Flag é sempre dominante e que o envio de um pacote de

overload ocorre sempre após os 3 bits de IFS, ou seja, depois do fim de um

mensagem.

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

Page 19: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

CAN - Controller Area Network

Tamanho máximo do cabo: A 1 Mbit/s, um cabo com 40 metros pode ser

utilizado. Outros comprimento para o cabo (esses valores

são aproximados) 100m@500 kbit/s 200m@250 kbit/s 500m@125 kbit/s 6km@10 kbit/s

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

Page 20: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

CAN - Controller Area Network

Outros padrões de CAN: ISO 11898-2: CAN high-speed

ISO 11898-3: CAN fault-tolerant (low-speed)

ISO 11992-1: CAN fault-tolerant for truck/trailer communication

ISO 11783-2: 250 kbit/s, Agricultural Standard

SAE J1939-11: 250 kbit/s, Shielded Twisted Pair (STP)

SAE J1939-15: 250 kbit/s, UnShielded Twisted Pair (UTP)

(reduced layer)

SAE J2411: Single-wire CAN (SWC)

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra

Page 21: CAN Felipe Augusto da Silva Paulo Ricardo Cechelero Villa Programação de Periféricos 07/1 Profº Eduardo Bezerra

CAN - Controller Area Network

Links sobre o assunto: www.google.com/search?q=can

http://en.wikipedia.org/wiki/Controller_Area_Network

TCC utilizando CAN: http://www.inf.pucrs.br/~eduardob/disciplinas/ProgPerif/can/tc_c

an/TCFinal.pdf

Links aleatórios: www.entensity.net

www.collegehumor.com

Felipe Augusto da Silva – Paulo Ricardo Cechelero Villa – Programação de Periféricos 07/1 – Profº Eduardo Bezerra