Para todos los que usan o están interesados en microcontroladores de STMicroelectronics , quiero presentar mi pequeño proyecto de pasatiempo.
Tanto Habré como geektimes ya tienen muchos artículos dedicados a los microcontroladores de la serie STM32F, por ejemplo: placa STM32 barata + IDE Arduino , tratando de hacer amigos con STM32 y la respuesta a cómo hacer amigos con STM32 y muchos otros. En conjunto, cubren este tema muy bien, pero hay una cosa, pero ... En todos estos artículos, se consideran las placas preparadas y un controlador específico que se encuentran en esta placa. ¿Y qué hay de aquellos que quieren jugar con diferentes controladores, e incluso en el tablero? Por ejemplo, muchas placas que conozco con el controlador STM32F4 (el mismo STM32F4-Discovery) no se pueden insertar en la placa de pruebas. Pero personalmente quiero algo como esto (atención, todas las imágenes son clicables):

Al mismo tiempo, como ya escribí, no quiero estar conectado a un controlador específico, pero quiero poder reemplazarlo fácilmente. Aquellos que estén interesados en cómo me di cuenta de que estos no son una lista de deseos ordinaria, les pido un gato.
Introducción (inspirada en los comentarios sobre el artículo, así que omita antes de leerlos)Si usar o no placas de pruebas con conectores es un punto discutible. Por supuesto, comenzando con un cierto número de componentes, se vuelven incómodos. Pero aunque el componente no es muy grande, y el número de experimentos en la etapa inicial de creación de prototipos sigue siendo grande, las placas de prueba, en mi opinión, son convenientes. Y aquí, si desea usar STM32, nos espera una emboscada: simplemente no están en paquetes DIP, a diferencia de Atmega. Puede comprar tableros de demostración ya hechos, pero aquí nuevamente hay una emboscada: la mayoría de estos tableros con controladores más antiguos no pueden quedar atrapados en el tablero debido a los peines dobles . Es decir, utilizando placas de demostración ya hechas, nos vemos obligados a trabajar con los controladores más jóvenes de la serie (vea el mismo Nucleo en la versión DIP o Blue Pill ). La segunda forma es hacer adaptadores especializados. Este artículo discute esta segunda ruta.
Enseñe inmediatamente el resultado final. Estas son pequeñas bufandas de doble cara para diferentes casos, cuya impresión se puede pedir en el Reino Medio (los chinos no tienen nada en contra de imprimir tableros de doble cara con un diseño de panel):

Un conjunto (a la derecha) es simplemente adaptadores simples para la placa de pruebas para cajas LQFP32 / 48/64, pero el segundo conjunto (a la izquierda) también son adaptadores, pero con un conector JTAG, energía, cuarzo de baja frecuencia y alta frecuencia y un botón de reinicio. Todos los demás pines del controlador están en el peine. En general, lo mínimo. Desafortunadamente, el conector JTAG no es estándar, por lo que también se incluye la placa adaptadora de JTAG-20 a este mismo JTAG-10.
Estas placas se sueldan fácilmente con un secador de pelo en el hogar, por lo que si tiene varios controladores, varias placas y componentes pasivos del tamaño 0805, puede obtener algo como esto en un período de tiempo razonable:

Y esto, me parece, da una buena libertad de creatividad. Si alguien parece haber agotado el tema, entonces aquí hay un enlace al repositorio de github .
Pero quiero contarles paso a paso cómo llegar a una vida así. Imagen para llamar la atención (declaración gráfica del problema):

Hay una dispersión de controladores (series L0, F3, F4), alimentación, convertidor USART-USB, placa de pruebas. Quiero parpadear los LED. Este paso se hace muy fácil. Tomamos cualquier controlador, tarjeta adaptadora del primer conjunto, soldamos con un secador de pelo. A continuación, necesita documentación sobre cómo conectar la alimentación, el programador, el cuarzo. Aquí ST tiene un orden completo, todo está en la página con la documentación del controlador seleccionado. Por ejemplo, para STM32F303K8 solo necesitamos un documento: AN4206: Introducción al desarrollo de hardware de la serie STM32F3 , donde hay circuitos de suministro de energía, osciladores y un programador, en función del cual puede construir dicho modelo:
Este controlador no tiene un cuarzo externo de baja frecuencia, por lo que solo conecté alta frecuencia a 16 MHz. Para la programación, se utiliza un conector JTAG-20 estándar, que está equipado con un programador estándar de ST
ST-LINK / V2 .
Si estás usando LinuxYa hay controladores en el kernel, pero debe agregar manualmente algunas reglas al archivo /etc/udev/rules.d, consulte, por ejemplo, aquí
Dado que el artículo está dedicado principalmente a la parte de hardware, solo mencionaré brevemente la parte de software. Sistema operativo: Fedora 25. Entorno de desarrollo: System Workbench para STM32 es un sistema completamente gratuito basado en Eclipse de la comunidad OpenSTM32. El único momento: para descargar, debe registrarse en http://www.openstm32.org . Es conveniente utilizar la utilidad gráfica STM32CubeMX para modelar, documentar y generar ejemplos. Por ejemplo, la configuración del controlador en la foto de arriba se ve así:

Los archivos con estos esquemas también están en el repositorio. Por ejemplo, para STM32F303K8 ver aquí
System Workbench para STM32 tiene un asistente de proyecto integrado bastante avanzado que genera la estructura inicial del proyecto, y opcionalmente puede incluir en el proyecto: controladores de controlador de bajo nivel (CMSIS), biblioteca HAL (Capa de abstracción de hardware), FatFS, FreeRTOS. Yo mismo uso mi biblioteca de controladores orientada a objetos, que se ejecuta en la parte superior de la HAL. A quién le importa, mira aquí .
Aquí hay un ejemplo de un código que usa esta biblioteca, que parpadea en los LED de un temporizador (durante la interrupción) y registra (a través de un convertidor USART-USB en la consola de la estación de trabajo) el estado del contador conectado al reloj en tiempo real. Todo esto es algo similar a la ideología de Arduino, pero me gusta programar esas cosas yo mismo.
Aquí hay un ejemplo del uso de un controlador STM32F410RB bastante potente:
Del mismo modo, el documento principal es AN4488: Introducción al desarrollo de hardware STM32F4xxxx MCU , donde hay todos los esquemas de conexión necesarios. El segundo documento importante es AN2867: Guía de diseño del oscilador para microcontroladores STM8AF / AL / S y STM32 , que detalla el diagrama de conexión de un oscilador de alta frecuencia.
Naturalmente, el cercar constantemente tales esquemas lleva bastante tiempo, así que decidí hacer los siguientes pañuelos universales posibles, que dan cuenta de estos esquemas. La versatilidad se logra debido al hecho de que los controladores de diferentes series, pero en el mismo caso (por ejemplo, STM32F303RB y STM32F410RB, ambos en el caso LQFP64) tienen las mismas conclusiones (con la excepción de pequeñas diferencias en el circuito de suministro de energía). Estas diferencias conducen a esto:

Todos los elementos con denominaciones con signo son comunes a diferentes controladores, pero elementos como P30, P31, P47, donde el número significa el número de pin, deben seleccionarse según el modelo específico. Como resultado, el tablero se verá así:

Aquí hay una pequeña mejora.
→ Proyecto en github
Licencia: GNU General Public License, Version 3
Circuitos y placas de circuitos preparados por Eagle Cad. El inmensamente respetado DiHalt tiene una maravillosa serie de artículos sobre este sistema . La versión gratuita de Eagle Cad para uso doméstico se puede descargar desde el sitio web oficial .
Invito a todos a unirse al proyecto.