STM32, ¿una buena alternativa al AVR?

Hola a todos.

En esta ocasión quiero crear un espacio de opinión sobre las placas basadas en el STM32F1x; más específicamente esta:

Tengo pensado adquirir uno para fines experimentales, sorprendentemente para las características del micro, su precio es similar al de un Arduino Nano :o Características como:

  • 64 KB memoria del programa.
  • 24 KB memoria RAM.
  • Microprocesador de 32 bits a 72 MHz (4.5 veces más rápido que un Arduino Nano, 4 veces más "ancho" que cualquier AVR).
  • Más IOs que el Nano.
  • ADCs de 12 bits.
  • A pesar de trabajar a 3.3v, la mitad de los IOs toleran 5v.
  • Resistencias pull-down internas (al menos yo esto lo veo genial, ahorrarsela para un botón y sin tener que invertir la lógica).
  • PWM de hasta 16 bits (con desbordamiento configurable para poder variar la frecuencia).
  • 3 timers de 16 bits (y tengo entendido que más otro que es exclusivo para PWM).
  • Todos los IOs con capacidad de ejecutar interrupciones externas.
  • 2 buses I2C, 2 SPI, 1 CAN (UART no estoy seguro si 1 o 2).
  • Capacidad de DMA (paralelismo verdadero entre la ejecución del programa y transferencia de datos).
  • Compatibilidad con la IDE de Arduino (debe agregarse en el gestor de tarjetas).
  • Configuración avanzada pero amigable de los timers/PWM; algo que para AVR hay que hacer con librerías externas.

Y lo mejor de todo, es que todo eso por el módico precio de un Arduino Nano.

Quizá alguna característica se me haya ido, pero creo que he mencionado el 99% de lo que esta placa ofrece.
La única desventaja que le conozco, es que no todas las librerías "para Arduino" ya existentes son compatibles de momento; en especial aquellas que se valen de registros o código ensamblador.

Como pueden ver, toda una maravilla para el precio que le ponen; sin embargo quisiera saber si alguien en este foro ya ha experimentado con uno de estos o similar, y si en la práctica en realidad vale la pena.

Gracias por leer :slight_smile:

Concuerdo que es una maravilla y que por alguna razón la gente no lo tiene en cuenta. Yo los descubri gracias a TFTLCDCyg y LightCalamar.
Compré un par y ahora son mis nuevos NANOs con Esteroides, ADC de 12bits, timers 16 bits y el bus CAN!!!
No he usado aun la capacidad DMA pero lo reservo para una pantalla con WS2811.

En ese caso, y por económicos que son; ya no pediré uno, sino dos.

Quien sabe, así quizá pruebe que tan rápidos son para transferirse datos el uno al otro; con UART ("serial") a tasas de baudios descomunales, y con una especie de puerto paralelo creado por software (en AVR, de esta forma podía transferir datos a un ritmo de hasta 1 MB/s). Esto último sería posible si supiera cómo leer puertos (grupos de pines) en STM32.
De CAN no sé mucho, desconozco si tan siquiera está diseñado para volúmenes grandes de datos (o para aplicaciones tipo streaming).

Ah y luego mi ansiada prueba de velocidad de lectura y escritura de tarjetas SD; con la fe de que las librerías realmente aprovechen la capacidad DMA del micro.

Se que puedes hacer transferencias altísimas por DMA. Pero hay que averiguar sobre librerías adecuadas.
A ver si lo ve LightCalamar que creo nos lleva la delantera en el tema.

Precisamente tengo uno pedido para probar.

Hola amigos.

No hay problema alguno en escribiros mis experiencias.

Vaya por delante que todo lo conseguido hasta ahora y con el fin de no quedar en saco roto, creamos este verano pasado (y no quiero realizar spam) pero hay que escribirlo para obtener los resultados optimos.

Creamos como dije un espacio llamado https://foro.ft81xmania.com/comunidad/ y alli encontraran mucha información en Español sobre STM32 aunque nosotros lo usemos para nuestras pantallas de FTDI tales como FT8xx.

Es primordial tener una clara idea de STM32 si se va a usar en IDE Arduino y lo hay. Mi consejo es no usar el core llamado libmaple del foro del canguro. Es un grave error. Usen un core que describimos en nuestro foro.

La placa STM32F103C8T6 que vais a comprar no esta mal para empezar. Pero necesitan el programador llamado STlink por ejemplo este. Es muy indispensable comprarlo si vais a usar STM32F;

STM32 STLink v2.0

No usen el puerto serie para subir codigo alguno a la placa STM32, no hagan caso no lo hagan e insisto, usen este programador, evitaran dolores de cabeza por los cuales @TFTLCDCyg y yo hemos pasado ...

Luego si van a pedirlo no estaría de mas de realizar esta bellisima STM32F407VET6;

donde la pueden encontrar en la misma tienda; STM32F407VET6 placa

El tema de las librería como escribí, hay que realizarles unos cambios. Yo he logrado realizar los ajustes y es mas librerías del mundo Arduino, funcionan pero con unas condiciones para ser funcionales en STM32, cambia el concepto, creo que vosotros lo tiene superado.

El problema son las librerias. Cambia el concepto. Muchas fueron escritas para Arduino y su principal problema son la definición de los pines, en el core por ejemplo STM332GENERIC (el cual usamos, al menos yo) te da un incapie de lo que se tiene que modificar para funcionar. Otras como por ejemplo la TinyGPS++ va a pelo sin modificaciones tan solo hay que decirle al hardware el constructor de la misma. Otro ejemplo, no usen jamas una libreria llamada softwareserial (vamos la de toda la vida en Arduino), pues en STM32 se hace fisico a nivel de pins del propio hardware nunca los dispositivos han de ir por "virtual". Esta es la experiencia que he sacado a lo largo de estos meses anteriores y bueno un sin fin de censejos mas que les puedo escribir, pero claro dependerá de que tipo de adversidad tengamos que batallar.

No es necesario modificar una por una las miles que hay, tan solo las que vayamos a usar. Es fácil hacerlo.
La anterior placa es una de las mejores que he probado, su estabilidad y su extraordinaria forma del diseño del PCB. Es sin lugar a dudas mi favorita, tengo 5 de estas. Corren a 160MHz

Mi experiencia dice; que son placa muy baratas, porque a mi modo de ver muy pocos le dan soporte, y ademas, si tubiesen muchos programadores por detras, no tendrian estos precios, por un lado bien, por el otro no tan bien.

No se desanimen, todo al contrario, exploten estas MCUs. El juego esta segurado todo sin decir las enormes ventajas que poseen respecto a otras MCUs.

Aqui queda la cosa, ustedes deciden. Cualquier duda, para ello estamos. Creo estan en el inicio; las compras, luego vendrá el lio ... :slight_smile:

Por cierto aqui tienen un video demo de la placa que han comprado con una pantalla FT8xx

Bueno nos has ahorrado muchos semanas de dolores de cabeza.
En mi caso seguramente hasta que no doy mas no pregunto.

lightcalamar:
Es primordial tener una clara idea de STM32 si se va a usar en IDE Arduino y lo hay. Mi consejo es no usar el core llamado libmaple del foro del canguro. Es un grave error. Usen un core que describimos en nuestro foro.

El que tengo pensado adquirir (de hecho va en camino) es el de la imagen del primer post, se le apoda "Blue Pill" ("Píldora azul", vaya apodo). ¿Debería ir por el core alternativo de todos modos?

lightcalamar:
La placa STM32F103C8T6 que vais a comprar no esta mal para empezar. Pero necesitan el programador llamado STlink por ejemplo este. Es muy indispensable comprarlo si vais a usar STM32F;

STM32 STLink v2.0

No usen el puerto serie para subir codigo alguno a la placa STM32, no hagan caso no lo hagan e insisto, usen este programador, evitaran dolores de cabeza por los cuales @TFTLCDCyg y yo hemos pasado ...

Creo que estoy en problemas :frowning: ; lo único que tengo para programarlo, es un adaptador USB-serial, el del chip FTDI.
Además, ¿es esa interfaz compatible con la IDE de Arduino?

lightcalamar:
Luego si van a pedirlo no estaría de mas de realizar esta bellisima STM32F407VET6;

Se ve genial, debe ser como el Arduino Mega de la placa que pedí. Sin embargo, de momento creo que prefiero el reducido tamaño, sobre todo que funciona para protoboad (como el Nano).

lightcalamar:
Mi experiencia dice; que son placa muy baratas, porque a mi modo de ver muy pocos le dan soporte, y ademas, si tubiesen muchos programadores por detras, no tendrian estos precios, por un lado bien, por el otro no tan bien.

No se desanimen, todo al contrario, exploten estas MCUs. El juego esta segurado todo sin decir las enormes ventajas que poseen respecto a otras MCUs.

¿Quieres decir que los STM32 en este momento están subvalorados?
En ese caso, mejor aprovecharlos ahora, antes de que suban de precio. :o

lightcalamar:
Creo estan en el inicio; las compras, luego vendrá el lio ... :slight_smile:

¿Qué lío? No ne digas que los STM32 tienen sus problemas...

Hola Lucario

Como dije lo mejor es el programador.

Es un concepto diferente por que tendras que pelear con DFU serie y da problemas, ademas por serie el programa de "come" unos cuantos Kb (unos 20Kb)de su flash ...

Es mejor usar el STLink v2 ademas esta tirado de precio y si quieres es hasta depurador.

Se usa el IDE de Arduino, hasta donde yo lo tengo es con 1.8.5, solo leer las instrucciones que escribimos en su día.

Sobre el lio, me refiero a que tienes el juego asegurado, problemas algunos hay como en todos lados , sin embargo se solucionan casi todos. Si observaste el video que puse, te haces una idea de lo que pueden estas MCUs.

Sin embargo la STM32F407VET6 es una joya, hay otras como la M4-DEMO esta es la bestia negra, como una pantera, (unos 14€), lo que digo, quizas sea tiempo de aprovechar estos precios.

Por cierto te comento que la placa "pildora azul" no hagas caso, son de origen chino y tienen 128 Kb de Flash y no 64 ... Asegurado

Vaya que son potentes. Precio/perfomance garantizado.

lightcalamar:
Como dije lo mejor es el programador.

Es un concepto diferente por que tendras que pelear con DFU serie y da problemas, ademas por serie el programa de "come" unos cuantos Kb (unos 20Kb)de su flash ...

Creo que será cuestión de suerte entonces... :o

lightcalamar:
Es mejor usar el STLink v2 ademas esta tirado de precio y si quieres es hasta depurador.

Ya veo, pero el problema es que compré las "píldoras azules" sin ese programador; así que de momento no me queda de otra que hacerlo por serial.

lightcalamar:
Se usa el IDE de Arduino, hasta donde yo lo tengo es con 1.8.5, solo leer las instrucciones que escribimos en su día.

Y supongo que funciona bien hasta con el programador del que hablas...

lightcalamar:
Si observaste el video que puse, te haces una idea de lo que pueden estas MCUs.

Ojalá y se pueda hacer hasta reproducción de video (con audio) desde tarjeta SD.

lightcalamar:
Sin embargo la STM32F407VET6 es una joya, hay otras como la M4-DEMO esta es la bestia negra, como una pantera, (unos 14€), lo que digo, quizas sea tiempo de aprovechar estos precios.

Tienes razón, sin embargo prefiero empezar con algo que se vea simple y no tan abrumador. Lo que pasa es que apenas me he decidido de salir de mi zona de comfort llamada "microcontroladores AVR".

lightcalamar:
Por cierto te comento que la placa "pildora azul" no hagas caso, son de origen chino y tienen 128 Kb de Flash y no 64 ... Asegurado

Pues mejor todavía. Y además eso también explica el ridículamente bajo precio...

Esta es la mas aproximada a lo que mencionas Lightcalamar, que dices

o esta

Unas puntualizaciones.

  • STM32F103xx = 80MHz
  • STM32F407vv = 168MHz

Todo caso @surbyte tus enlaces son de la familia F103, son las de baja velocidad. En la misma tienda hay la que describí la STM32F407VET6; en ente enlace nuevo esta triplica la RAM y doble velocidad y se nota ya tengo STM32F103.

Vuelvo a insistir, quien compré una placa STM32Fxxxx si o si es tener;

en este enlace su precio ronda el ridiculo precio de 1,60€ . . . lo piden y ya llegará...

Lo primero es familiarizarse con la "pildora azul" y poner el core que les comenté y luego si estan satisfechos, cada uno eligirá lo que desee adquirir.

Esta fue la primera prueba con la placa que han comprado este video

Blue Pill con FT810

Otra cosa mas. La tolerancia de los pines en su 95% de estas es compatible a 5V, esto es una grandisima ventaja.

La instalación del core está ft81xmania.com en este anterior enlace

Tus 14 dolares en bangook se convierten en 50 en mi tienda de Mercado Libre, tendré que pedirlo a China.

Eso esta muy claro Ricardo. Ademas que todas estas placas estan fabricadas / vienen de China, vale ya se la respuesta, sin embargo los envios desde China tardan ... :slight_smile: . Toca esperar.

No hay apuro...

Bueno entonces compraré ese programador tan pronto como pueda.

Y sí; acabo de ver que mi "blue pill" es capaz de reproducir hasta video (aunque sólo en una codificación muy específica y a menos de 10 cuadros por segundo). De hecho, nada mal para el precio y mi introducción en el mundo del STM32... :o

Lucario448:
Y sí; acabo de ver que mi "blue pill" es capaz de reproducir hasta video (aunque sólo en una codificación muy específica y a menos de 10 cuadros por segundo).

Si, es capaz de reproducir videos con contenedor AVI y decoder MJPG. Lo estamos trabajado. un adelanto en Teensy 3.5/6 con errores que todavía se tienen que estudiar ya es posible.

FT810 + Teensy 3.5 Playback video con errores

Solo una puntualización; solo será posible con las única pantallas del mercado, las FT81x, no hay otras que puedan reproducir video en la actualidad o bien con pantallas que tengan GPU de al menos 1MBytes de RAM y claro que tenga sus instruciones MEDIAFIFO ... y luego escribir desde cero una libreria compatible a las MCUs que vayan a funcionar.

Este camino ya se ha estudiado y la solución a día de hoy es la pantalla que usamos el Equipo FT81xmania.com

Reproducir video ya se puede hacer en estas MCUs:

  • Arduino
  • ESP8266
  • Teensy 3.2

Una demo con ESP8266 reproduciendo un fichero AVI

Para las STM32F y Teensy 3.5/6 está en preparación. Hay errores que solventar.

Aqui tienes un ejemplo de un video mio con audio. Video tipo AVI de lightcalamar con audio

Ésta es la fuente donde lo escribí; HOWTO Gameduino 3 playback .avi with sound | Gameduino 2 and 3 Community

La librería donde estamos trabajando es la escrita por James Bowman basada en Gameduino2/3

Hoy he recibido mi nueva adquisición. La STM32F767ZI

Esta MCU corre a 216MHz de reloj y tiene 2MBytes de Flash y 524KBytes de RAM, sin dudas la "bestia"
LLeva incomporado el programador STLink v2.1 con otra MCU STM32F103, ethernet GigaLAN y he observado que puede dar salida a HDMI en graficos.

Una placa con ARM Cortex-M7

Aquí en mis manos;

En Linux he podido instalar el GNU del compilador en su versión 7, en win es imposible (bueno era de pronosticar, el sistema de las ventanas vale para lo que es .. desde luego no para programar..)

Les dejo un enlace de como instalar el ARM embebed GNU v7 y las fotos del pinout de la placa:

Enlace de mi tema

Enlace de la instalación para Cortex-M7

Imagenes del PinOUT de la placa Nucleo STM32F767ZI

Nota. Estas placas aunque esten montadas en China, son de la linea original de ST.com, pueden tener mas información en la web oficial de ST; Dejo el enlace al mismo

Estoy pensando en probarlo pero tengo que convencerme mejor hehe