Go Down

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

surbyte


Lucario448

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

lightcalamar

#17
Feb 16, 2018, 05:35 pm Last Edit: Feb 16, 2018, 06:17 pm by lightcalamar
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í; http://gameduino2.proboards.com/thread/401/howto-gameduino-playback-avi-sound

La librería donde estamos trabajando es la escrita por James Bowman basada en Gameduino2/3
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

lightcalamar

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

caramelito

Estoy pensando en probarlo pero tengo que convencerme mejor hehe

Lucario448

#20
Apr 29, 2018, 03:46 pm Last Edit: Apr 29, 2018, 03:58 pm by Lucario448
Hola de nuevo. Esta vez para comentarles que hace varios días me llegaron (por fin) mis "blue pill"; esperé casi dos meses, ya los daba por perdidos :o


Ahora probar las definiciones para la IDE de Arduino, propuestas por lightcalamar.



PD: como hasta ahorita los tengo en mi poder, ahora sí puedo pedir el ST-Link sin miedo a tenerlo en desuso...

lightcalamar

Hola @Lucario

Te tardó mucho en llegar, pero lo mejor es que eres el propietario de un nuevo futuro prometedor.

Hace unos instantes actualicé mi mensaje anterior, concretamente en este enlace de documentación, y tambien te informo, que esta placa que acabas de recibir, con una pantalla de FTDI, de la serie FT81x, te reproducirá videos desde un lector SD ... Tu placa corresponde a la serie F103 de STM32 y ya tiene soporte a lo que estamos desarollando.

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

Lucario448

#22
May 01, 2018, 05:34 am Last Edit: May 01, 2018, 05:34 am by Lucario448
Por cierto, los cores de los que hablan poseen lo básico, pero... faltan por documentar muchas librerías y además dice que analogRead es de 10 bits; ¿no que los ADC eran de 12 bits?

¿Será que la falta de documentación la puedo completar con la que hay para el libmaple?

lightcalamar

#23
May 02, 2018, 11:48 am Last Edit: May 02, 2018, 11:50 am by lightcalamar
Aquí tienes guias para instalar core generico; https://ft81xmania.com/comunidad/Foro-instalación-cores-stm32 , ya te comenté no USAR la libmaple. Este invento, es del foro del canguro y da problemas.

El tema de las librerías, el 90% que funcionan en Arduino, se pueden exportar a STM32, así es como lo tengo, en el enlace anterior, verás una sección de librerias tambien. Si necesitas alguna, nos lo dices y se podría modificar.
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

Lucario448

Aquí tienes guias para instalar core generico; https://ft81xmania.com/comunidad/Foro-instalación-cores-stm32
Ya lo hice y funcionó. El detalle es ver si me deja subir algo con el método "UART1" (con un adaptador FTDI y el jumper en 3.3v); recuerda que aún no tengo el ST-Link.

Si mal no recuerdo, ese método era: conectar tierras, TX al A10 y RX al A11 (¿o era al revés?), poner el jumper BOOT0 en 1 y finalmente darle a "Subir". Devolver BOOT0 a 0 o si no el programa se borra en el próximo reinicio.


ya te comenté no USAR la libmaple. Este invento, es del foro del canguro y da problemas.
No hablo de usar el core, sino su documentación. Porque STM32GENERIC también tiene las "librerías del sistema". Por ejemplo: el HardwareTimer que me permite fácilmente modificar el prescaler, desbordamiento/resolución (frecuencia del PWM) y hasta crear interrupciones temporizadas.

LeafLabs tiene esas librerías documentadas, pero los de STM32GENERIC no. Si son exactamente lo mismo, entonces me puedo valer de esa documentación.


El tema de las librerías, el 90% que funcionan en Arduino, se pueden exportar a STM32
Las que no se valgan de código ensamblador o registros AVR si sé que funcionan sin ningún cambio en absoluto. Ya que aún la Blue Pill es como 6 veces más potente que cualquier AVR a 16 MHz, muchas librerías se podrían adaptar con funciones portables (ej.: digitalWrite)



Si necesitas alguna, nos lo dices y se podría modificar.
Me gustaría ver una adaptación de la librería TMRpcm para los STM32 (y a ver si hay soporte con SdFat también). Aclaro de una vez que ya había visto antes dicha adaptación; lo que no me queda claro es, funcionalmente, que tanto se asemeja a la versión original para AVR.

La idea es traer mi mini proyecto del reproductor de música, a la Blue Pill. Tengo más o menos idea del potencial de los micros STM32, pero no me cabe duda que con estos sí le pueda agregar soporte a archivos MP3 (TMRpcm es solo para WAV).

Lucario448

Actualizo: estaba intentando subirle el clásico "hola mundo" de Arduino (el Blink), peeeeeeeeero... ni siquiera me deja compilar:

Code: [Select]
Arduino:1.8.5 (Windows 7), Tarjeta:"F103Cx, BluePill F103C8/B[LED PC13], flash(128k+20k), NONE, 8M(HSE)_72M, STLink, Disabled USB, SerialUART1, JTAG [reserved: PA13, PA14, PA15, PB3, PB4], Release(no-exceptions)"

In file included from C:\Program Files (x86)\Arduino\hardware\STM32GENERIC\STM32\cores\arduino/stm32/stm32_def.h:4:0,

                 from C:\Program Files (x86)\Arduino\hardware\STM32GENERIC\STM32\variants\BLUEPILL\variant.c:1:

C:\Program Files (x86)\Arduino\hardware\STM32GENERIC\STM32\cores\arduino/stm32/stm32_build_defines.h:7:18: error: missing binary operator before token "("

 #if __has_include("hal_conf.h")

                  ^

C:\Program Files (x86)\Arduino\hardware\STM32GENERIC\STM32\cores\arduino/stm32/stm32_build_defines.h:11:18: error: missing binary operator before token "("

 #if __has_include("configs/hal_conf.h")

                  ^

exit status 1
Error compilando para la tarjeta F103Cx.

Estoy usando el core de un usuario cuyo nombre inicia con "huawei"; sin embargo no sé si fue algo que hice o debería usar el de daniel...


PD: no tiene nada que ver con el código en sí; yo ya estaba consciente de cómo se inicializan y numeran los pines. Lo que intenté subir fue esto:

Code: [Select]
void setup() {
  pinMode(PC13, OUTPUT);

}

void loop() {
  digitalWrite(PC13, HIGH);
  delay(1000);
  digitalWrite(PC13, LOW);
  delay(1000);
}

lightcalamar

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

Lucario448

Afirmativo. Utilizando el método "Serial UART1" he logrado subir el programa con éxito.
Ahora esto va a ser como cuando tuve mi primer Nano; sobre todo porque ya no hablamos de AVR, sino de ARM; que viene siendo "territorio desconocido" para mi en este momento.

Después de unas cuantas pruebas más, intentaré ver si puedo hacer funcionar mi proyecto del reproductor de música; claro, una vez que encuentre la adaptación de TMRpcm (con la capacidad del micro, es de que soporte frecuencias de muestreo de hasta 48 KHz) y la EEPROM.


Ahora pregunto: veo que tengo la opción de reservar pines para depuración por JTAG o SWD, o dejarlos libres; pero... ¿para qué es el USB? Entiendo lo del puerto serial virtual, sin embargo... ¿y eso del "almacenamiento masivo" ("mass storage")? ¿Será que por fin podré crear un lector de tarjetas SD DIY? :D

¿La IDE de Arduino puede aprovechar los modos de depuración que ofrece la placa? ¿O eso es para otro software?



De momento los dejo con estas interrogantes; mientras tanto, seguiré explorando este nuevo territorio.
¡Cambio y fuera!

Lucario448

Otra actualización: ahora no puedo molestarme ni siquiera en el reproductor. Esto pasa tanto con SD como con SdFat:

Code: [Select]
Arduino:1.8.5 (Windows 7), Tarjeta:"BluePill F103CB, Serial UART1 [TX/PA9, RX/PA10, BOOT0=1, BOOT1=0], Disabled, no USB, Automatically selected based on upload method, Disabled [debug pins free]"

In file included from C:\Program Files (x86)\Arduino\hardware\STM32GENERIC\STM32\libraries\stm32_dma\src\stm32_dma.c:29:0:

C:\Program Files (x86)\Arduino\hardware\STM32GENERIC\STM32\libraries\stm32_dma\src\stm32_dma_F0F1F3L1.h:10:28: error: 'DMA1_Channel2_3_IRQn' undeclared here (not in a function)

 #define DMA1_Channel3_IRQn DMA1_Channel2_3_IRQn

                            ^

C:\Program Files (x86)\Arduino\hardware\STM32GENERIC\STM32\libraries\stm32_dma\src\stm32_dma_F0F1F3L1.h:31:38: note: in expansion of macro 'DMA1_Channel3_IRQn'

     {SPI1, SPI_TX, DMA1_Channel3, 3, DMA1_Channel3_IRQn},

                                      ^

C:\Program Files (x86)\Arduino\hardware\STM32GENERIC\STM32\libraries\stm32_dma\src\stm32_dma_F0F1F3L1.h:15:28: error: 'DMA1_Channel4_5_6_7_IRQn' undeclared here (not in a function)

 #define DMA1_Channel5_IRQn DMA1_Channel4_5_6_7_IRQn

                            ^

C:\Program Files (x86)\Arduino\hardware\STM32GENERIC\STM32\libraries\stm32_dma\src\stm32_dma_F0F1F3L1.h:35:38: note: in expansion of macro 'DMA1_Channel5_IRQn'

     {SPI2, SPI_TX, DMA1_Channel5, 5, DMA1_Channel5_IRQn},

                                      ^

exit status 1
Error compilando para la tarjeta BluePill F103CB.



Uy espero que eso no signifique que el micro realmente no tenga DMA :o

lightcalamar

Bajate el STM32CubeMX, http://www.st.com/en/development-tools/stm32cubemx.html, instalatelo en tu PC y localiza tu micro y te dará toda la informaciń sobre éste.
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