Índice:
- Suprimentos
- Etapa 1: O circuito do transceptor
- Etapa 2: Leitura e gravação no barramento CAN
- Etapa 3: conectando nós
- Etapa 4: Faça o PCB
- Etapa 5: Expandindo o Quadro
- Etapa 6: Solicite seus PCBs do JLCPCB
- Etapa 7: Obtenha suas placas
Vídeo: Interface STM32 CAN: 7 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
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
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
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
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
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
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
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
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:
Interface do sensor capacitivo de impressão digital com o Arduino UNO: 7 etapas
Interface do sensor capacitivo de impressão digital com o Arduino UNO: Ei, e aí, pessoal! Akarsh aqui da CETech. Hoje vamos adicionar uma camada protetora aos nossos projetos. Não se preocupe, não vamos nomear nenhum guarda-costas para o mesmo. Será um sensor de impressão digital bonito e bonito da DFRobot. Então
Interface do sensor de gás com o Arduino: 4 etapas
Interface do sensor de gás com Arduino: O sensor de fumaça MQ-2 é sensível à fumaça e aos seguintes gases inflamáveis: GLP, Butano, Propano, Metano, Álcool, Hidrogênio. A resistência do sensor é diferente dependendo do tipo de gás. O sensor de fumaça tem um potenciômetro embutido
Introdução à interface do sensor I2C ?? - Interface do seu MMA8451 usando ESP32s: 8 etapas
Introdução à interface do sensor I2C ?? - Faça a interface do seu MMA8451 usando ESP32s: neste tutorial, você aprenderá tudo sobre como iniciar, conectar e fazer com que o dispositivo I2C (acelerômetro) funcione com o controlador (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Botão de interface de interface - Noções básicas do Arduino: 3 etapas
Botão de interface - Arduino Básico: O botão de pressão é um componente que conecta dois pontos em um circuito quando você o pressiona. Quando o botão de pressão está aberto (não pressionado), não há conexão entre as duas pernas do botão de pressão, então o pino é conectado a 5 volts (através do pull-up resi
Interface do sensor ADXL335 no Raspberry Pi 4B em 4 etapas: 4 etapas
Interface do sensor ADXL335 no Raspberry Pi 4B em 4 etapas: Neste instrutivo, iremos fazer a interface de um sensor ADXL335 (acelerômetro) no Raspberry Pi 4 com Shunya O / S