Uma maneira personalizada de fazer amizade com o STM32: não com o Arduino ou o Discovery

Para todos que usam ou estão interessados ​​em microcontroladores da STMicroelectronics , quero apresentar meu pequeno projeto de hobby.


Tanto o Habré quanto os geeks já têm muitos artigos dedicados aos microcontroladores da série STM32F, por exemplo: placa STM32 barata + IDE Arduino , tentando fazer amizade com o STM32 e a resposta para ele Como fazer amizade com o STM32 e muitos outros. No total, eles cobrem esse tópico muito bem, mas há uma coisa, mas ... Em todos esses artigos, são consideradas placas prontas e um controlador específico que estão nesta placa. E aqueles que querem brincar com diferentes controladores, e até na tábua de pão? Por exemplo, muitas placas que conheço com o controlador STM32F4 (o mesmo STM32F4-Discovery) não podem ser inseridas na placa de ensaio. Mas eu pessoalmente quero algo assim (atenção, todas as imagens são clicáveis):



Ao mesmo tempo, como já escrevi, não quero estar conectado a um controlador específico, mas quero poder substituí-lo facilmente. Aqueles que estão interessados ​​em como eu percebi essas Desejos não muito comuns, peço gato.


Introdução (inspirado nos comentários do artigo, pule antes de lê-los)

A questão de usar ou não tábuas de pão com conectores é um ponto discutível. Obviamente, começando com um certo número de componentes, eles se tornam desconfortáveis. Porém, embora o componente não seja muito grande e o número de experimentos no estágio inicial da prototipagem ainda seja grande, na minha opinião, as tábuas de pão são convenientes. E aqui, se você quiser usar o STM32, uma emboscada nos espera - eles simplesmente não estão nos pacotes DIP, ao contrário do Atmega. Você pode comprar placas de demonstração prontas, mas aqui novamente uma emboscada - a maioria dessas placas com controladores mais antigos não pode ser presa na tábua de pão por causa dos pentes duplos . Ou seja, usando placas de demonstração prontas, somos forçados a trabalhar com os controladores mais jovens da série (veja o mesmo Núcleo na versão DIP ou Blue Pill ). A segunda maneira é fazer adaptadores especializados. Este artigo discute esse segundo caminho.


Mostre imediatamente o resultado final. São pequenos lenços de dupla face para diferentes casos, cuja impressão pode ser solicitada no Reino do Meio (os chineses não têm nada contra a impressão de painéis de dupla face com um design de painel):



Um conjunto (à direita) é simplesmente adaptadores simples para a placa de ensaio para caixas LQFP32 / 48/64, mas o segundo conjunto (à esquerda) também são adaptadores, mas com um conector JTAG, quartzo de potência, baixa e alta frequência e um botão de redefinição. Todos os outros pinos do controlador estão no pente. Em geral, o mínimo. Infelizmente, o conector JTAG não é padrão, portanto a placa adaptadora do JTAG-20 para esse mesmo JTAG-10 também está incluída.


Essas placas são soldadas com bastante facilidade por um secador de cabelo em casa; portanto, se você tiver vários controladores, várias placas e componentes passivos do tamanho 0805, poderá obter algo assim em um período de tempo razoável:



E isso, me parece, dá uma boa liberdade de criatividade. Se alguém parece ter esgotado o tópico, aqui está um link para o repositório do github .


Mas quero lhe contar mais detalhadamente como chegar a essa vida. Imagem para atrair atenção (declaração gráfica do problema):



Há uma dispersão de controladores (séries L0, F3, F4), energia, conversor USART-USB, placa de ensaio. Eu quero piscar os LEDs. Este passo é facilitado. Tomamos qualquer controlador, placa adaptadora do primeiro conjunto, soldamos com um secador de cabelo. Em seguida, você precisa de documentação sobre como conectar o poder, programador, quartzo. Aqui o ST possui um pedido completo, tudo está na página com a documentação do controlador selecionado. Por exemplo, para o STM32F303K8 , precisamos de apenas um documento: AN4206: Introdução ao desenvolvimento de hardware da série STM32F3 , em que existem circuitos de fonte de alimentação, osciladores e um programador, com base no qual você pode criar esse modelo:



Este controlador não possui quartzo externo de baixa frequência, portanto, conectei apenas alta frequência a 16 MHz. Para a programação, é utilizado um conector JTAG-20 padrão, equipado com um programador padrão da ST ST-LINK / V2 .


Se você estiver usando Linux

Já existem drivers no kernel, mas você precisa adicionar manualmente algumas regras ao arquivo /etc/udev/rules.d, veja, por exemplo, aqui


Como o artigo é dedicado principalmente à parte do hardware, mencionarei apenas brevemente a parte do software. Sistema operacional: Fedora 25. Ambiente de desenvolvimento: O System Workbench for STM32 é um sistema totalmente gratuito baseado no Eclipse da Comunidade OpenSTM32. O único momento - para fazer o download, você deve se registrar em http://www.openstm32.org . É conveniente usar o utilitário gráfico STM32CubeMX para modelar, documentar e gerar exemplos. Por exemplo, a configuração do controlador na foto acima é assim:



Arquivos com esses esquemas também estão no repositório. Por exemplo, para STM32F303K8, veja aqui


O System Workbench para STM32 possui um assistente de projeto embutido e bastante avançado que gera a estrutura inicial do projeto e pode opcionalmente incluir no projeto: drivers de controlador de baixo nível (CMSIS), biblioteca HAL (camada de abstração de hardware), FatFS, FreeRTOS. Eu mesmo uso minha biblioteca de drivers orientada a objetos, que é executada no topo do HAL. Quem se importa, veja aqui .


Aqui está um exemplo de código usando essa biblioteca, que pisca os LEDs de um timer (durante a interrupção) e registra (via conversor USART-USB no console da estação de trabalho) o status do contador conectado ao relógio em tempo real. Tudo isso é semelhante à ideologia do Arduino, mas eu gosto de programar essas coisas sozinho.


Aqui está um exemplo do uso de um controlador STM32F410RB bastante poderoso:



Da mesma forma, o documento principal é AN4488: Introdução ao desenvolvimento de hardware do STM32F4xxxx MCU , onde existem todos os esquemas de conexão necessários. O segundo documento importante é AN2867: Guia de design do oscilador para microcontroladores STM8AF / AL / S e STM32 , que detalha como conectar um oscilador de alta frequência.


Naturalmente, cercar constantemente esses esquemas é bastante demorado, então decidi fazer os próximos possíveis lenços universais, que realizam esses esquemas. A versatilidade é alcançada devido ao fato de que os controladores de séries diferentes, mas no mesmo caso (por exemplo, STM32F303RB e STM32F410RB, ambos no caso LQFP64) têm as mesmas conclusões (com exceção de pequenas diferenças no circuito da fonte de alimentação). Essas diferenças levam a isso:



Todos os elementos com denominações assinadas são comuns a diferentes controladores, mas elementos como P30, P31, P47, em que o número significa o número do pino, devem ser selecionados dependendo do modelo específico. Como resultado, a tábua de pão ficará assim:



Aqui está uma pequena melhoria.


Projeto no github
Licença: Licença Pública Geral GNU, Versão 3


Circuitos e placas de circuito preparados por Eagle Cad. O imensamente respeitado DiHalt tem uma maravilhosa série de artigos sobre esse sistema . A versão gratuita do Eagle Cad para uso doméstico pode ser baixada do site oficial .


Convido todos a participarem do projeto.

Source: https://habr.com/ru/post/pt406313/


All Articles