Índice:

Interface STM32 CAN: 7 etapas
Interface STM32 CAN: 7 etapas

Vídeo: Interface STM32 CAN: 7 etapas

Vídeo: Interface STM32 CAN: 7 etapas
Vídeo: STM32 CAN Communication || NORMAL Mode 2024, Julho
Anonim
Interface STM32 CAN
Interface STM32 CAN

O barramento de rede de área do controlador, ou barramento CAN, é um protocolo de comunicação muito eficaz graças às suas capacidades de alta velocidade, confiabilidade de longo alcance e imunidade a ruídos. Por essas razões, a comunicação CAN se tornou o padrão em tecnologias automotivas e ambientes de alto ruído. Os dispositivos no barramento CAN são chamados de nós. Todos os nós do barramento CAN são conectados em paralelo, o que significa que cada nó está conectado a todos os outros nós da rede. Um único barramento CAN pode ter até 115 nós de uma vez, dependendo da taxa de transmissão da mensagem, mas para a maioria das aplicações, é recomendado ter até 32 dispositivos. Também é recomendado manter o comprimento entre o primeiro e o último nó menos de 40 metros um do outro.

Este tutorial passo a passo mostrará como configurar um nó CAN usando o microcontrolador STM32, incluindo o circuito e código C simples para ler e gravar no barramento CAN

Suprimentos

Para cada nó CAN:

  • 1 placa de breakout STM32 (Núcleo, Pílula Azul, outros)
  • 1x MCP2551 IC transceptor CAN
  • 1x capacitor 0,1µF
  • 1x resistor 120Ω
  • 1x resistor 1kΩ
  • 1+ entrada legível (botão, interruptor, potenciômetro, etc.) ou saída (LED, MOSFET, etc.)
  • 1x conector Dsub9

Etapa 1: O circuito do transceptor

O Circuito Transceptor
O Circuito Transceptor

Para se comunicar com o barramento CAN, usaremos o IC transceptor CAN MCP2551. O IC atua como um par intermediário de transmissor / receptor para conectar o STM32 ao barramento CAN. O circuito para configurar este IC é bastante simples, mas há algumas coisas a serem observadas:

  • O CAN_RX (pino 4) e CAN_TX (pino 1) no chip MCP2551 só podem ir para alguns pinos no STM32.

    • No STM32F1 Nucleo, conecte a linha RX ao pino PB8 e a linha TX ao pino PB9.
    • No comprimido azul STM32F1, conecte RX ao pino PA11 e TX ao pino PA12.
    • Observe que essas atribuições de pinos têm alternativas. Consulte os manuais do microcontrolador para determinar quais pinos são capazes de CAN_RD e CAN_TD
    • Se estiver usando um Arduino ou uma placa sem um comunicador CAN embutido, o chip MCP2515 IC será necessário para converter outros protocolos de mensagem para CAN.
  • O pino CANL deve ser conectado aos outros pinos CANL dos outros nós de barramento. O mesmo vale para os pinos CANH.
  • O resistor de 120Ω nos pinos CANH e CANL só é necessário se o nó for um nó terminal. Isso significa que ele está no final da fiação de conexão paralela. Em outras palavras, o barramento CAN deve ter apenas dois resistores de 120 e eles devem estar o mais distantes possível um do outro.
  • Por último, o resistor de 1kΩ no RS (pino 8) pode ser trocado por um resistor de 10kΩ para controlar o tempo de subida / descida dos bits de mensagem CAN. Consulte a ficha técnica do chip MCP2551 para obter mais detalhes.

Etapa 2: Leitura e gravação no barramento CAN

Ler e escrever para o CAN Bus
Ler e escrever para o CAN Bus

Agora que o circuito do transceptor está conectado ao STM32, podemos começar a escrever mensagens no barramento CAN. Este guia instrutível não se aprofundará no código STM32. No entanto, certifique-se de verificar nosso código para exemplos aqui. Usar o STM32 como um nó CAN exigirá um arquivo de cabeçalho CAN. Escrevemos o nosso próprio, que pode ser encontrado em nosso github aqui. Aqui, daremos uma breve visão geral do processo de leitura / gravação.

Para ler do barramento CAN, primeiro precisamos saber o ID da mensagem CAN. Cada mensagem deve ter um ID único, com IDs mais baixos tendo prioridade mais alta. O trecho de código mostrado aqui está esperando por uma mensagem CAN com ID 0x622. Em nosso sistema, se o primeiro bit do 6º byte for alto, queremos definir o pino A10 como alto.

Ao escrever uma mensagem CAN, devemos lembrar que as mensagens CAN são multibyte. Cada mensagem escrita deve ter um ID e um comprimento. No segundo trecho de código mostrado, gravamos dados para cada byte e, em seguida, enviamos a mensagem (os parâmetros de ID e comprimento são definidos anteriormente no código).

Etapa 3: conectando nós

Nós de conexão
Nós de conexão

Ao conectar vários nós CAN, deve-se prestar muita atenção ao comprimento dos cabos. Os dois nós mais distantes podem ter até 40 m de distância um do outro. Os nós intermediários que se conectam ao ônibus devem estar a 50 cm das principais linhas de ônibus.

As conexões CAN seguem um padrão da indústria de usar um conector Dsub9 com a linha CANL no pino 2 e a linha CANH no pino 7. A opção de linha CANGND pode ir no pino 3.

Etapa 4: Faça o PCB

Faça o PCB
Faça o PCB

Ao rotear sinais CAN em um PCB, lembre-se de que CAN é um sinal diferencial e, portanto, as diretrizes de roteamento para CANH e CANL devem ser seguidas cuidadosamente.

Etapa 5: Expandindo o Quadro

Expandindo o Quadro
Expandindo o Quadro

Jogue mais alguns nós juntos, adicione algumas entradas / saídas e conecte todos os seus pinos CANH e CANL. Observe que cada STM32 ou outro microcontrolador requer seu próprio chip MCP2551; eles não podem ser compartilhados.

Com isso dito, tente manter seus PCBs menores do que o mostrado aqui

Etapa 6: Solicite seus PCBs do JLCPCB

Solicite seus PCBs do JLCPCB
Solicite seus PCBs do JLCPCB

JLCPCB oferece serviço rápido e de alta qualidade a preços muito razoáveis. Obtenha 5 placas, de qualquer cor com toneladas de personalização, por apenas $ 2! E se for seu primeiro pedido, ganhe 10 pranchas pelo mesmo preço!

Basta enviar seus gerbers e obter um orçamento instantâneo! Envie seu pedido e suas placas serão analisadas para produção dentro de uma hora. Depois de pagar, você pode esperar suas pranchas de alta qualidade em até três dias!

Confira aqui

Etapa 7: Obtenha suas placas

Obtenha suas placas!
Obtenha suas placas!

Um grande agradecimento ao JLCPCB por patrocinar este projeto. JLCPCB (ShenzhenJLC Electronics Co., Ltd.), é a maior empresa de protótipo de PCB na China e um fabricante de alta tecnologia especializado em prototipagem rápida de PCB e produção de pequenos lotes de PCB. Eles tiveram a gentileza de fornecer à UBC Solar nossos novos PCBs para nosso carro de corrida movido a energia solar. Fizemos nosso pedido na sexta-feira e recebemos as pranchas na quarta-feira!

Recomendado: