Quiero usar mi primer MCU STM32 en el proyecto. El proyecto involucra algunos periféricos (UART/SPI/I2C) y tiene que hacer un poco de matemática aquí y allá, principalmente cambios de bits y/o cálculos de enteros, así que encontré una MCU con los periféricos que necesito, oscilador interno, suficiente espacio de programa flash y RAM para mi aplicación.
Entonces encontré este smol boi: STM32L051K8T6 en LQFP-32, Hoja de datos
Revisé la hoja de datos, todo parece claro, no tengo ningún problema para elegir cosas nuevas, IDE y todo, sin embargo, tengo un par de preguntas para las que no pude encontrar una respuesta clara en Google, y la comunidad puede ser más útil de todos modos:
Me gustaría poder programarlo a través de SWD. Es una comunicación de 2 hilos, ¿verdad? SWDIO y SWCLK. Entonces, en teoría, siempre que suministre energía para la MCU, solo necesito 2 pines para conectarme a la MCU (¿o tal vez también reiniciar? Conexión a tierra, obviamente). Quiero decir, ¿no necesito un conector grande de 10 pines ni nada? Más o menos como Atmegas a través de UART (que necesita pulso RX, TX y DTR para reiniciar MCU). Buscar en Google el pinout ST-Link v2 me mostró solo estos dos y un pin "SWIM" desconocido para mí. (que nunca se menciona en la hoja de datos; de hecho, tengo un ST-Link v2 e incluso una placa nucleo con programador integrado, pero, de nuevo, nunca está de más preguntar a personas inteligentes).
SWDIO y SWCLK están marcados como "funciones alternativas" de los pines. Por lo tanto, supongo que no podré programarlo a través de SWDIO/SWCLK de fábrica, porque los pines no están configurados como SWDIO/SWCLK de manera predeterminada. ¿Es algo para lo que necesito usar BOOT0? ¿El cargador de arranque de la memoria interna activa los pines SWD para que programe el flash? Tampoco hay pin BOOT1 en este caso específico (Ctrl+F "Boot1" no produce menciones útiles en toda la hoja de datos).
Quiero tener un software actualizable por el usuario. A través de USB. Es fácil hacerlo con ATMega, solo lancé un USB-UART CP2102N, y funciona de maravilla, puede actualizar el software todo el día. Supongo que podría escribir mi propio gestor de arranque UART para STM32, es solo una cuestión de determinación y tomar pastillas para mantenerme cuerdo en el proceso. Pero si hay una manera más fácil, no quiero reinventar la rueda (aunque esa parte de programación en el núcleo parece mucho más grande que solo el chip CP2102N). Encontré este documento sobre el uso de UART: STM32 Bootloader UART parece prometedor, no parece demasiado difícil usar CP2102N para programar STM32, supongo.
Por supuesto, también he visto algunos videos en YouTube sobre STM32, pero básicamente son "parpadeo-parpadeo" con núcleo, no con dispositivo independiente, por lo que no se habla mucho sobre hojas de datos, funciones alternativas, control de cosas a través de registros; y configurar I2C o SPI no será un problema de todos modos. Básicamente, no tengo problemas para controlar los registros y esas cosas, solo necesito que funcione primero. Es como si pudiera conducir un automóvil, pero no tengo una llave para encender el motor, o tal vez la tengo y no me doy cuenta. Para no hacer explotar el auto al encenderlo, prefiero hacer las preguntas primero.
Gracias
Por cierto, el pin SWIM se usa para programar y depurar partes STM8 (sí, ST-Link es capaz de eso). No está relacionado con las piezas STM32.
Kartman
Kartman