Controller Area Network CAN bus Introdução Desenvolvido pela Bosch para automóveis Padronizado pela ISO 11898 Camada física Camada de enlace Comunicação serial até 1Mbps e até 1km. Sinalização diferencial em par trançado Mensagens pequenas (até 8 bytes) com CRC Sem endereçamento > broadcast apenas Mensagens priorizadas
Características Recepção multicast com sincronização Detecção e sinalização de erro Recuperação em até 29 bit times Multimaster Tempos de Latência garantidos Sleep mode/wake up Reconhecimento Controle totalmente distribuído Camadas Camada física Camada de transferência Enquadramento Arbitragem Detecção e sinalização de erro Camada de objeto Prioriza mensagens a serem transmitidas Seleciona mensagens recebidas Interface para a aplicação
Camada Física Codificação NRZ Bits dominantes (0) ou recessivos (1) > C. A. Bit stuffing Bit complementar inserido após a transmissão de cinco bits identicos consecutivos Diversas implementações de camada física podem ser utilizadas, inclusive proprietárias Não existe um conector padrão. DB9 e mini DIN são usuais. Sinais CAN
Camada de Transferência Quatro tipos de quadros Dados Remoto Erro Overload Mensagem de Wake up rrr rrrd rrrr Quadro de Dados Início de quadro Um único bit dominante Campo de arbitragem Identificador 11 bits (29 bits, CAN2.0B) RTR bit (remote transmision request bit) Campo de controle 4 bit DLC (data length code) 2 bits reservados
Quadro de Dados Campo de dados Até 8 bytes, MSB primeiro Campo de CRC x15+x14+x10+x8+x7+x4+x3+1 Delimitador de CRC = bit recessivo Slot de ACK Bit dominante para indicar reconhecimento Delimitador de ACK = bit recessivo Fim de quadro 7 bits recessivos Quadro de Dados
Quadro Remoto Usado para solicitar dados Possui os mesmo campos do quadro de dados, exceto o campo de dados Identificado por um bit RTR recessivo Quadro de Erro Flag de erro Flag de erro ativo Seis bits dominantes Flag de erro passivo Seis bits recessivos Delimitador de erro 8 bits recessivos Não é utilizado bit stuffing
Detecção de Erros Detecção de erro Monitoramento dos níveis de bits CRC Bit stuffing Formato do quadro de mensagem Erros detectados Erros globais e erros locais no transmissor Até 5 erros aleatórios na mensagem Erros de burst de comprimento até 15 Prob. de erro não detectado = 4.7x 10 11 Quadro de Overload Flag de overload 6 bits dominantes Delimitador de overload 8 bits recessivos Não é utilizado bit stuffing Quadro idêntico ao quadro de erro ativo Gerado por condições internas ou ao detectar um bit dominante durante um intermission
Espaçamento Interframe Espaçamento entre quadros de dados e/ou quadros remotos Intermission bits (3 bits recessivos) Nenhuma estação pode transmitir Bus idle bits Detecção de um bit dominante é interpretado como um início de quadro Espaçamento Interframe
Confinamento de Faltas Estado do dispositivo Ativo em erro estado inicial Passivo em erro Bus off Dois contadores de erro (Tx e Rx) Um dos contadores >= 128 dispositivo passa para Passivo em erro. Contador de erro de TX >=256 Dispositivo passa para bus off Contador de Erros de Tx Incrementado em 8 ao enviar um flag de erro Incrementado em 8 ao detectar um erro de bit ao transmitir um flag de erro ativo ou um flag de overload Decrementado em 1 (a não ser que já seja 0) ao transmitir uma mensagem com sucesso
Contador de Erros de Rx Incrementado em 1 ao detectar um erro de recepção Incrementado em 8 ao detectar um bit dominante imediatamente após enviar um flag de erro. Incrementado em 8 ao detectar um erro de bit ao enviar um flag de erro ativo ou um flag de overload Decrementado em 1 ao receber uma mensagem com sucesso Bit Timing Bit time dividido em quatro segmentos Sincronização (1 quantum) Propagação (1 a 8 quanta) Fase 1 (1 a 8 quanta) Fase 2 (máx {Fase 1, tempo de processamento}) Tempo de processamento <= 2 quanta
Sincronização de Clock Hard synchronization Ocorre na borda de recessivo para dominante do start bit. O bit time é reinicializado Resynchronization Ocorre quando a borda de 1 bit não ocorre dentro do segmento de sincronização. aumentada ou a fase 2 é encurtada.