This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 1 voto(s) - 5 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Microcontroladores Cortex-M3 - Blue Pill/Red Pill/Black Pill con Arduino
#1
Vamos a empezar a tocar un poco el hardware de este tipo, nos proponemos empezar a usar los micros de 32 bits y concretamente los de la familia tipo Cortex. Hacia tiempo tenia ganas de adentrarme en este mundo, que aparentemente es un gran paso con respecto a las series de micros que hemos ido usando hasta la fecha. De todo lo que escriba, puedo estar metiendo la pata hasta el fondo, pues mas o menos voy a intentar poner en limpio todo lo que voy viendo.

A grandes rasgos, tenemos varios fabricantes que han fabricado y fabrican micros de familia Cortex. Por ejemplo tenemos Atmel, Microchip, ST, etc. Cada empresa tiene sus modelos a diferentes precios y con diferentes prestaciones. Yo me voy a centrar en una gama muy económica pero no por ello menos potente, los fabricados por ST. Dentro de la familia Cortex, tenemos varias subfamilias: M0,M0+,M3,M4 y desde aquí en adelante, son ya mas microprocesadores, como los usados en los móviles (entre otras aplicaciones). Nuestros intereses, para posibles proyectos, es centrarnos desde la serie M0 a la M3. En la serie M0 tenemos algún modelo de 8 bits, mientras que en la M3, son todo 32 bits. La serie M0+ se saco enfocada al mundo IoT o aplicaciones portátiles a usar con batería, donde los consumos son críticos. La verdad es que la serie M3, y sobre la cual voy a hacer pruebas y aprender, tiene mejores números sobre el papel en cuanto a consumos. He elegido la serie M3, porque es de 32 bits, porque los valores de consumo tienen buena pinta (dado que mi idea es hacer alguna aplicación de IoT) y porque se puede encontrar mucha información y HW, entre otras cosas. Actualmente, es fácil trabajar con cualquier serie.

Y ademas, vaya post de novedades que voy a necesitar hacer otro mas, vamos a usar una capa de software que nos va a permitir programar los cortex como si fueran Arduinos (esto se conoce como stm32duino) :Gran sonrisa Aquí es donde se abre un nuevo mundo, pero esto no es todo!!!! También me he topado con un entorno de programación bastante curioso, lo llamare el IDE de IDEs. Se trata del editor Atom con una capa de software de otro proyecto (ambos son proyectos OPEN) que reúne todos las capas de software para diferentes hardware y poder programarlas como si fueran Arduino. Se trata de PlataformIO. Esta gente ha hecho una capa de software para el editor Atom. Por lo que tenemos, en un solo IDE y de un paso, todo lo necesario para trabajar con mas de 160 placas diferentes. La comunidad ha desarrollado la capa de software que hace posible esto según cada tipo de hardware o micro. En general, un montón de novedades. Para este tema del PlataformIO, creare un post propio, pues es demasiado para abarcarlo en un solo tema. Aquí nos vamos a centrar en el hardware, aunque usare principalmente para programar el editor Atom+PlatformIO.

Bueno, y sin mas vueltas, vamos al lio.

Que micro voy a usar?

El microcontrolador sobre el cual vamos a trabajar es el correspondiente a la serie STM32F103. Dentro de el, existen multitud de variantes, según su capacidad de memoria, pines, etc.
Datasheet: http://www.st.com/content/ccc/resource/t...161566.pdf

Y que Hardware?

Ya sabemos que micro vamos a usar, ahora vamos a buscar alguna placa que tenga lo mínimo necesario para que funcione y sea económica. Voy a usar las placas de desarrollo llamadas "Blue Pill". Algo de interés rápido; Sobre este tipo de placas, existen (al menos que yo conozca) 3 variantes. La primera es la Blue, la segunda es la Red y la tercera (del año pasado) la Black. Cada una arregla alguna cosa. Para lo que nosotros vamos a probar, cualquiera de las 3 nos vale. Voy a intentar hacerme con alguna de las black también.

Y un poquito mas de info. De donde vienen estas placas? Pues vienen de un proyecto llamado Mapple (http://www.leaflabs.com/maple/) Esta gente lleva trabajando varios años sobre ese hardware, y los chinos ya sabemos que lo copian todo, aunque no igual de bien. Las placas que vamos a comprar a chinas, son clones de las Maple, pero tienen algún fallo, como por ejemplo que no tienen la circuiteria necesaria para hacer un reset por USB. Por tanto, si nos ponemos a buscar sobre esto, nos encontraremos muchas veces referencias a este tipo de placas o incluso, software.

El coste de estas placas, es ridículo!! Podemos encontrar la versión Blue desde 1,5€ y la Black por unos 2,2€. Os dejo info básica de la placa en ingles. Explican procedimientos para ponerlas en marcha, que comentare mas adelante. Ire construyendo el post poco a poco. En los enlaces disponéis de esquemáticos, características, mejoras de una versión vs otra, etc.

Añado que para programar inicialmente las placas, vamos a necesitar de un conversor USB-Serie. Los típicos de 1-2€ de toda la vida. Esto es importante, pues inicialmente tendremos que cargar un bootloader. Luego podremos seguir usando este mismo conversor para cargar los programas o tirar de la nueva interfaz que se cree. Decir que todo tiene sus Pros y Contras y que, hay varios tipos de bootloader. Los resumiremos en 2. El genérico de la casa ST, y el desarrollado por STM32Duino. Yo he empezado con el genérico, poco a poco. Entraremos en detalle mas adelante, pero si queréis ir mirando cosas, desde los enlaces puestos, hay para pasar unas cuantas horas leyendo Sonrisa

Info de las placas:
Wiki Blue Pill: http://wiki.stm32duino.com/index.php?title=Blue_Pill
Red Pill: http://wiki.stm32duino.com/index.php?title=Red_Pill
Black Pill: http://wiki.stm32duino.com/index.php?title=Black_Pill


[Imagen: BlueBill_STM32_Board.jpg]


Y ahora el turno del software, esto tendremos que programarlo de alguna forma.

Que software usamos?

Vamos a programar este tipo de micro de forma fácil gracias al grandísimo trabajo que hay detrás de una comunidad llamada STM32Duino. Esta comunidad ha desarrollado una capa de software, que llamaremos "core" que nos permite programar estos micros usando el IDE de Arduino y sus códigos o estructura de programación.

GIT: https://github.com/rogerclarkmelbourne/Arduino_STM32
Foro: http://www.stm32duino.com/

Dado que Arduino ha dado un impulso a la electrónica que gira alrededor de los micros, este impulso se ha extendido a que el hardware que ofrece Arduino (o mas bien, a los micros que usa) se queden cortos para ciertos usuarios. Cada micro tiene sus ventajas para ciertas aplicaciones. Así que, dada esta tendencia, muchas comunidades han surgido para desarrollar capas de software que permiten usar cierto hardware (distinto del usado en Arduino) con el IDE de Arduino y los códigos con los que lo programamos.

Esto es muy buena noticia! Hay infinidad de librerías, ejemplo, gente compartiendo, conocimiento en la red que nos permitirá realizar nuestros inventillos de forma fácil.

Antes has comentado que no vas a usar el IDE de Arduino. Me estas liando tío!


Efectivamente! Se puede usar sin problema el IDE de Arduino, pero en cierta manera, este IDE no deja de ser un editor con pocas posibilidades. Aun asi, es sencillo añadir todo lo necesario para trabajar con el. Lo comentaremos mas adelante, voy paso a paso Sonrisa

Existe un proyecto llamado PlataformIO ( http://platformio.org/ ). Dicho proyecto consiste en tener todas las capas de software, librerías, etc sobre diferentes tipos de placas o micros recopiladas. Ademas todo esto lo han integrado en un editor de texto hackeable, llamado Atom ( https://atom.io/ ). Este proyecto tiene muy buena pinta, y hablar sobre el edito merece abrir un hilo solo para el. Intentare hacerlo en los próximos días para explicar como instalarlo.

Destacar que PlatformIO esta un poco enfocado al mundo IoT. Tiene ciertas funciones que son mas propias de este mundillo nuevo, pero que no impide el poder usarlo para cualquier tipo de aplicación.


[Imagen: platformio-ide-laptop.5d785317.png]


Primeros Pasos

Vamos a realizar la compra del material mínimo.

Necesitamos lo siguiente:

- Placa de Blue Pill (recomiendo comprar varias, vamos a estar enredando y es fácil meter la pata). Por el coste que tienen, se puede comprar varias sin problema.
- Necesitaremos un conversor USB-Serie. Ninguno en particular. No tiene porque ser de 3v3. Los pines del micro son tolerantes con 5v en su gran mayoría, al menos los que vamos a usar para programar.
- Extra: Para los micros de ST hay un programador llamado ST-Link. Yo he recibido hoy el comprado aquí: https://www.aliexpress.com/item/ST-Link-...84886.html

La placa viene con tira de pines para soldar. Se puede pinchar en una placa de topos típica. En su día, pedí 3 unidades de la Blue, y a la primera le he soldado pines acodados. Para empezar a trastear, los veo mas cómodo.

Mientras llegan las placas, vamos a ver que software necesitamos instalar.

Software

Como comente, voy a usar de IDE Atom + Proyecto PlatformIO. Esto tiene la ventaja de que en unos pocos clicks, esta todo integrado. Ademas necesitaremos descargar  lo siguiente:

Drivers para detectar correctamente la placa: https://github.com/rogerclarkmelbourne/Arduino_STM32 ** Descargar o clonar el git.

Nota: La parte correspondiente a Arduino, no la he realizado. No obstante, con el paquete anterior, tenéis todo lo necesario para agregar las placas al IDE de Arduino.

Con el paquete bajado y descomprimido, instalamos los drivers: (Aqui todos los detalles: https://github.com/rogerclarkmelbourne/A...stallation )

Código:
If using Maple or Maple mini, you need to install drivers for the Serial and DFU (upload devices). Please run drivers/win/install_drivers.bat Note. This doesn't actually install drivers. Windows comes pre-installed with a compatible Serial USB driver and a DFU (upload) driver. However the built in drivers need to be associated with the USB ID of the Maple serial and DFU devices. The batch file and wdi-simple.exe do the clever stuff to convince Windows 7 or newer, that it should use its drivers with the Maple serial and DFU devices(Run install_drivers.bat in the "drivers/win" folder).

Después de esto, vamos a instalar el bootlader para que cuando conectemos la placa al PC, la detecte y/o podamos cargar código vía adaptador USB-Serie. No voy a explicar sobre cargar código directamente a la placa por su conector USB. Eso se puede hacer cargando el bootloader de STM32Duino. El bootloader que vamos a cargar es el genérico de STM. Con este, estaremos en posición de cargar código vía puerto UART con un adaptador USB-Serie.

Aquí tenemos las instrucciones para cargarlo: http://wiki.stm32duino.com/index.php?tit...bootloader
Nota: Las instrucciones correspondientes a este apartado "Flashing the bootloader - Maple Mini" No deben tenerse en cuenta.

Nota2: La placa la podéis alimentar conectándola por su conector USB al PC. El proceso es rápido y sencillo.

Tras estos pasos, estaremos en posición de cargar nuestro código a la placa. Lo haremos vía el adaptador USB-Serie. Este sera detectado automáticamente por el IDE de Atom. Lo único que tendremos en cuenta, es que esta placa no hace el reset automático cuando va a cargar código, por lo que tendremos que pulsar su botón en el momento de hacer la carga.


En construcción!!
  Responder
#2
Reservado
  Responder
#3
Reservado2
  Responder
#4
Reservado3
  Responder
#5
[Imagen: tumblr_m6odkq8jNo1qbolbn_zps4103fd0c.gif~c200]
  Responder
#6
A mi me gusta irme a microcontroladores que tengan IDE gratuito (sin limitaciones) soportado por el fabricante (no es lo mismo que soportado por la "comunidad"), no sé cómo estará ahora el entorno, la última vez que miré los micros de Atmel y Silabs tienen IDE gratuito sin limitaciones soportado por el fabricante.

Cortex-M0 según entiendo son 32 bits todos (no he visto de 8), si es ARM la arquitectura es de 32 bits, otra cosa es que ST también tenga otra gama de micros de 8 bits, aunque llevo tiempo sin estar al día en lo que saca cada fabricante.

S2
  Responder
#7
Hay unos pocos modelos del M0 que son 8 bits, muy pocos. Todos tienen su IDE para programabar bajo su lenguaje. Hay alternativas, para segun que cosas seran mas o menos acertadas.
  Responder
#8
pero es arquitectura de ARM? tienes un enlace?
  Responder
#9
(17-02-2017, 04:10 PM)Jorge escribió: pero es arquitectura de ARM? tienes un enlace?

Tienes razon, los cortex son todo 32bits. Donde mire estaban todos los micros de stm y me lie. Lo cambio en el post!

Gracias Sonrisa
  Responder
#10
Añadido la parte de software a usar, librerías, driver, instalación de bootloader.
  Responder
#11
El otro día vi esto por la red, lo dejo aquí para el futuro. Puede ser interesante para implementarlo para cosas muy básicas.

Usar el micro como Osciloscopio.

https://github.com/elmot/open-oscilloscope-stm32f3

https://github.com/pingumacpenguin/STM32-O-Scope/wiki
  Responder
#12
Si

Enviat des del meu MI 4LTE usant Tapatalk
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  Ruido red electrica Hoden 0 649 22-04-2020, 04:06 PM
Último mensaje: Hoden
  Duda respecto a los cristales para los microcontroladores grafisoft 10 4,721 12-10-2014, 07:55 PM
Último mensaje: Jorge