Um microcontrolador habilitado para CAN é suficiente para dirigir um barramento CAN?

45

Atualmente, existem vários módulos CAN integrados em microcontroladores. O PIC18F2480 é um exemplo disso. Esse microcontrolador (com CAN embutido) é capaz de dirigir um barramento CAN por conta própria ou é necessário um transceptor / controlador CAN externo?

Acredito que o CAN tenha uma camada de software e hardware e, pelo que parece, esses microcontroladores habilitados para CAN parecem ter apenas o software, mas não afirma que pode ou não pode dirigir o barramento CAN como está.

Estou procurando conectar mais de seis microcontroladores através de um barramento CAN e gostaria de saber se preciso de um transceptor em todos eles ou se o material embutido pode lidar com a comunicação da perspectiva de software e hardware.

Suponha que eu tenha resistores de terminação necessários e outros pequenos componentes discretos (tampas, resistores etc.)

efox29
fonte

Respostas:

55

Esta é uma pergunta muito boa. Como regra geral, o CAN requer um transceptor para cada nó:

insira a descrição da imagem aqui

No entanto, sob certas circunstâncias, você pode realmente fugir sem nenhum transceptor! Essas circunstâncias são:

  • Comprimento curto do barramento (muito menos que 1 metro)
  • De preferência, todos os microcontroladores estão no mesmo PCB, ou pilha de PCBs.
  • A taxa de bits é baixa
  • O ambiente não é muito eletricamente barulhento

Estas não são regras difíceis. Você pode obter uma taxa de bits máxima (1 MB / s) se tiver um barramento muito curto (10 cm).

Para conseguir isso, você precisa saber um pouco sobre o que o transceptor faz. Como a maioria dos transceptores, eles podem emitir um alto ou baixo para o barramento (representando 1 e 0), mas o 0 pode dominar um 1. IE Se dois transceptores tentam falar ao mesmo tempo e um está dizendo 1 e o outro está dizendo 0, então o 0 ganhará. Podemos recriar a mesma situação simplesmente usando diodos:

CAN simples

Consulte a nota de aplicação Seimens AP2921: Comunicação a bordo via CAN sem transceptor

Mas aqui está algo ainda mais interessante: o PIC realmente tem suporte de hardware para CAN sem transceptor!

CIOCON Register

Você pode configurar o pino CAN TX para que se comporte exatamente da mesma maneira que o transceptor. Isso significa que você pode conectar o barramento CAN sem os diodos. Você ainda precisará do resistor.

CAN mais simples

Rocketmagnet
fonte
2
Resposta absolutamente fantástica. Aprecio muito o tempo que você levou para responder. Talvez eu precise ir com o transceptor porque pode haver muito ruído elétrico e, embora tudo esteja alojado em uma "caixa", eles estarão em vários PCBs. Obrigado novamente!
efox29
@ efox29 - De nada. Certamente é melhor usar transceptores, se puder.
Rocketmagnet
Essa configuração sem transceptor era nova para mim e parece muito interessante para configurar uma rede simples de controladores em distâncias maiores. Agradável!
0x6d64
@ 0x6d64 - Se você precisar disso por muito tempo, não se esqueça de usar uma taxa de bits baixa e a taxa de giro limita as bordas.
precisa
1
Observe que isso funcionará se todos os dispositivos no barramento usarem a mesma configuração e usar um barramento CAN de fio único. Se você deseja interagir com qualquer outra coisa que seja realmente "ISO" ISO CAN e use um barramento de dois fios, esse modo não funcionará.
22417 Jon Watte
10

A família de microcontroladores LPC11Cxx (baseada em ARM Cortex-M0) inclui o transceptor CAN no chip.

timrorr
fonte
3
Sim. Direito. O OP pergunta sobre o PIC18. Isso não é realmente útil.
Federico Russo
4
@FedericoRusso, ele dá um exemplo com o PIC18, e o timrorr deu uma solução com o driver embutido. O que há de errado nisso?
Clabacchio
8
@FedericoRusso - Não seja tão anal. Esta resposta é muito interessante.
precisa
1
@Rocketmagnet: Então, P: "Como faço para fazer o X?" A: "Sim". está bem depois de tudo? (De sua própria resposta)
Federico Russo
2
@FedericoRusso - Se a pergunta foi bem respondida para a satisfação do OP, e alguém menciona algumas informações relacionadas interessantes, com certeza, por que não?
precisa
9

Sim, você precisa de um tranceiver. Os pinos CAN no micro são recebidos e transmitidos. O próprio barramento CAN usa um par trançado com sinalização diferencial em dois fios chamados HIGH e LOW.

Um dos trabalhos do transceptor é obter o nível lógico presente no pino TX e transformá-lo em sinais de barramento CAN:

  • uma lógica '1' é representada por não dirigir o barramento; portanto, as linhas HIGH e LOW "flutuam" para 2,5V - chamadas de "bit recessivo" na terminologia CAN.
  • uma lógica '0' é representada elevando a linha HIGH alta e a linha LOW baixa - chamada de "bit dominante", pois substituirá quaisquer bits recessivos que estão sendo transmitidos.

A outra é pegar o que está no barramento e transformá-lo novamente em um nível lógico para enviar de volta do pino RX para o seu micro.

Martin Thompson
fonte
8

Você precisa de um chip transceptor CAN entre a CPU e o barramento CAN. Confira o MCP2551.

Atualização 17 de agosto de 2017:

Estou na conferência Microchip Masters agora. Foi-me dito claramente pelos engenheiros da Microchip que uma das novas peças resultantes da aquisição da Atmel é mais barata e melhor que a MCP2551.

Olin Lathrop
fonte
1
Microchip está recomendando o 2561 sobre o 2551 agora. O NXP também possui alguns chips CAN interessantes. A maioria dos MCUs precisa de um transceptor.
Ludwig Schreier
2

Os dispositivos analógicos têm um exemplo de circuito transceptor CAN usando um amplificador diferencial.
Eu não tentei isso, estou ciente disso. Também interessado se poderia ser implementado com um amplificador operacional

circuito analógico

As vantagens de usar o transceptor IC CAN dedicado é que eles administrarão a arbitragem para você e você não precisa se preocupar em interferir no barramento. Se você estiver apenas observando o barramento e não for um ambiente crítico para falhas, o circuito pode estar correto. Embora o mcp2551 seja muito popular, existem muitas opções para chips de interface.

Uma nova evolução são os chips do tipo System Base, que incluem regulação de tensão, modos de energia e proteção ESD do barramento.

Como o timorr disse acima, o LCP11C24 da NXP é único, pois o processador inclui o transceptor CAN. Uma placa de demonstração com isso custa apenas US $ 19. Outra solução de baixo custo é usar a placa de demonstração Cypress PSoC5, de US $ 9,38, a CY8CKIT-059. O PSoC5 não possui um controlador CAN; vai além: o controlador é implementado nos blocos universais do tipo FPGA. Os registros do controlador são configurados através da GUI do IDE, facilitando bastante a filtragem e o P&D.

Um método chave que encontrei ao examinar as folhas de dados é que o mcu TTL é rotulado como CAN-Tx e CAN-Rx, enquanto as linhas de dados dos transceptores para o barramento são sempre rotuladas como CAN-H e CAN-L. Não gosto dos diagramas da outra resposta em que o TxRx é mostrado conectado ao barramento; isso vai contra a convenção e contribui para a confusão.

Chris K
fonte