Go Down

Topic: STM32, ¿una buena alternativa al AVR? (Read 607 times) previous topic - next topic

Lucario448

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 :)

surbyte

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.

Lucario448

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.

surbyte

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.

_jose_

Precisamente tengo uno pedido para probar.

lightcalamar

#5
Feb 14, 2018, 09:40 am Last Edit: Feb 14, 2018, 11:27 am by lightcalamar
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 ... :)

Por cierto aqui tienen un video demo de la placa que han comprado con una pantalla FT8xx
Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

surbyte

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

Lucario448

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?


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  :( ; 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?


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).


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


Creo estan en el inicio;  las compras, luego vendrá el lio ... :)
¿Qué lío? No ne digas que los STM32 tienen sus problemas...

lightcalamar

#8
Feb 14, 2018, 07:28 pm Last Edit: Feb 14, 2018, 07:30 pm by lightcalamar
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
Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

surbyte

Vaya que son potentes. Precio/perfomance garantizado.

Lucario448

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

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.

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...

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.


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".


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...

surbyte


lightcalamar

#12
Feb 15, 2018, 09:31 am Last Edit: Feb 15, 2018, 09:44 am by lightcalamar
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á https://ft81xmania.com/comunidad/Foro-Instalación-CORES-STM32 en este anterior enlace
Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

surbyte

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

lightcalamar

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 ...  :) . Toca esperar.
Mi proyecto Radio FM con RDS -  MDC v1.0;
https://forum.arduino.cc/index.php?topic=400484.0
https://forum.arduino.cc/index.php?topic=448606.0
https://github.com/lightcalamar

Go Up