Tutorial: Rede CAN -> STM32F103

Velocidade da Rede: 500 kbps
Modo de Funcionamento: Normal

IDE: STM32CubeIDE | CubeMx
Microcontrolador: STM32F103C8T6TR (BluePill)

Gravador: ST-Link
Transceiver: TJA1050

Outro Nó de Exemplo:
IDE: Arduino IDE
Microcontrolador: Arduino Mega R3 AT2560
Controlador Can: MCP2515
Transceiver: TJA1050

Aqui utilizaremos a placa bluepill para fazer o lado do Slave e ter muito processamento e um controlador can nativo do microcontrolador.
Utilizaremos a biblioteca HAL (Hardware Abstraction Layer) na IDE STM32CubeIDE do STM32F103 e faremos a configuração através do arquivo .ioc que é gerado pelo CubeMX.

No CubeMX, habilitaremos o clock de 72Mhz e um prescaller da Rede Can de 18, o que irá gerar um clock de 500kbps da rede can. Também utilizaremos o SysTrick para debugar nosso código, além de um GPIO no pino PC_13 pois na bluepill há um led soldado nessa porta.

Assim que salvar as configurações no CubeMX, vamos para o código em C!


OBS: Lá no código há trechos que estão como comentários delimitando onde deve fazer a programação (uma dica, siga a delimitação ou senão seu código será deletado).

No código em C haverá algumas funções que já foram criadas pelo microcontrolador e outras que são nativas da biblioteca HAL. Elas dão um bom suporte para começar e a gente desenvolver nossas lógicas de controle. Mas antes preciso falar que toda programação C++ tem structs e aqui é onde está todo o segredo dessa implementação!

OBS2: CAN_XXXXXXTypeDef : é uma struct com um conjunto de dados que tem nela e vamos utilizar bastante:
CAN_FIFO0MailBox_TypeDef
CAN_FilterRegister_TypeDef
CAN_FilterTypeDef
CAN_HandleTypeDef
CAN_RxHeaderTypeDef
CAN_TxHeaderTypeDef
CAN_TxMailBox_TypeDef
CAN_TypeDef
Depois vou destrinchar cada uma dessas structs e os valores que podemos atribuir a elas!

Na Parte 2 vou colocar mais coisas e vamos alimentando cada vez mais, até amanhã!

Exibições: 191

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço