Presentación de la Mini-STM32 y borrado del programa Demo
Realizar proyectos con placas de desarrollo siempre ha sido mi asignatura pendiente, y hace poco me decidí a comenzar con este tema. Para ello busqué información en la red y al final me decanté por una Mini-STM32, equipada con un microcontrolador STM32. Según un compañero italiano de un foro de física era potente y fácil de programar, con un muchas ayudas disponibles y completas herramientas de software a su disposición ...O al menos ésta era la teoría, porque después de recibir la la placa, y a pesar de haber estudiado y trabajado en temas informáticos durante muchos años, no supe ni por donde empezar.
Esto fue ni más ni menos lo que me ocurrió hace una semana, cuando recibí la flamante Mini-STM32, que pese a ser un modelo de gran venta, la realidad es que apenas hay información de nivel básico disponible en Internet, y menos aún si nos remitimos al mundo hispanohablante. Por suerte, en los primeros intentos de programación recibí la ayuda de Francisco Javier y de Melchor, dos compañeros expertos en el tema que conocí a través de la red y cuyos consejos me permitieron superar el bloqueo en que me encontraba. Y tal vez para devolver una parte de este gesto he decidido comenzar una relación de mis experiencias con la Mini-STM32, en la esperanza que puedan servir a otros para andar más rápidos por el mismo camino.
El realizar esta especie de tutorial básico también constituye para mí un proceso de aprendizaje. Por tanto iré paso a paso y sólo hablaré de aquellas cosas que o bien conozca de otros dispositivos parecidos o haya podido probar en éste, y como aún así corro el riesgo de interpretar algo de forma equivocada, agradeceré cualquier comentario al respecto.
La placa de desarrollo Mini-STM32
Realizadas estas aclaraciones, diré que la placa o módulo de desarrollo Mini-STM32 es una placa de bajo precio y buenas prestaciones construida alrededor de un microcontrolador STM32F103VC Cortex M3, de 32 bits, fabricado por ST Electronics. Dichos microcontroladores pertenecen a la popular familia de los ARM, con los cuales son compatibles, y son utilizados habitualmente en multitud de sistemas industriales, domésticos y de automoción.
Vista de la Mini-STM32 reproduciendo el programa de demostración
Diferencias entre un microcontrolador y un microprocesador
¿Y cual es la diferencia entre un microcontrolador y un microprocesador, como por ejemplo el Pentium que equipa nuestros ordenadores? Pues la diferencia es básicamente el grado de integración de elementos dentro del mismo chip. Un microprocesador puede procesar datos digitales de acuerdo a un programa, pero necesita de una memoria externa RAM, de una ROM y de otra memoria para programas en flash o en disco duro. El microprocesador precisa además de otros chips de entradas y salidas (denominados normalmente PIO - Port Input / Output) que le permitan comunicarse con otros módulos, tanto de la misma placa como exteriores al ordenador, como una tarjeta grafica para la pantalla, un chip especial para las comunicaciones serie, otro chip de sonido, etc. En el microprocesador las funciones de cada uno de sus pines suele estar muy definido, agrupándose en forma de buses de datos, de direcciones y de control.
Un microcontrolador en cambio es casi como un pequeño ordenador y lo integra todo en el mismo chip, además de la unidad de proceso, contiene su propia memoria RAM, su ROM con un sistema de carga de datos y la memoria de almacenamiento de programas, normalmente de tipo Flash. En cuanto a sus pines, un alto porcentaje de ellos pueden ser configurados de forma indistinta como entradas o salida de tipos muy diferentes, ya que pueden por ejemplo controlar directamente un servo tipo radiocontrol, o el circuito driver de una sirena de alarma, o un display de LEDS, o leer el estado de un contacto o medir la tensión analógica de un sensor de temperatura.
El microcontrolador STM32F103VC
En nuestro caso concreto, el STM32F103VC es un pequeño chip de forma cuadrada tipo SMD alimentado a 3,3 volts. Dispone de 100 pines e integra en su interior 48 Kbytes de memoria RAM, 256 KBytes de memoria flash y funciona a una frecuencia de reloj de hasta 72 Mhz.
Como es habitual en los microcontroladores actuales, la mayoría de los pines pueden ser programados para que realicen distintas funciones, especialmente los que están agrupados en los cinco puertos (PA, PB, PC, PD y PE), de 16 líneas cada uno. Aparte de los pines utilizados por la propia placa que no están disponibles para el usuario, hay 2 de ellos que activan sendos LEDS de uso general y 2 a pulsadores también utilizables para cualquier función. Hay 30 pines no conectados y por tanto disponibles y configurables como entradas o salidas de distintos tipos, 16 de ellos pueden además actuar como entradas analógicas con conversor ADC de 12 bits, 2 como salidas analógicas tipo DAC, y también hay un cierto número de salidas de impulsos PWM modulados en duración, temporizadores y muchas otras funciones especiales que ya iremos descubriendo.
Por otra parte, los pines del microcontrolador, con o sin uso, están todos disponibles entre los conectores E/S superior e inferior.
De todas formas, si a alguien le empuja la impaciencia puede hallar una descripción más detallada de este micro en el manual de referencia del STM32, disponible en la web de ST Microelectronics, pero advierto que tiene alrededor de 1.000 páginas y su contenido es mucho más técnico que el nivel que de momento pretendemos asumir. También podríamos obtener información adicional de la placa en su conjunto acudiendo a la web del fabricante, en las direcciones: http://www.poweravr.com y http://www.powermcu.com , pero para ello necesitaríamos entender los caracteres chinos o confiar tal vez demasiado en la traducción automática de Google entre idiomas tan diferentes.
Por todo lo anteriormente expuesto ya intuimos que el controlador STM32 tiene una potencia y una versatilidad realmente notable para su tamaño, pero sobre todo esta placa se distingue de otras parecidas en que dispone de origen de un display LCD sensible al tacto de 320 x 240 pixels, capaz de representar 262.000 colores (64 niveles para cada color básico RGB).
Comprando la Mini-STM32
Y si buenas parecen las características de la placa en su conjunto, igual de bueno es su precio, ya que puede encontrarse en Internet por unos 30 €, como por ejemplo en la tienda on-line Micro4you (http://www.micro4you.com/store/mini-stm32-stm32f103-tft-lcd-board.html), radicada en Tailandia, a lo que deberemos añadir unos 5 € por el envío aéreo hasta España.
El pago puede efectuarse por tarjeta de crédito o bien por Paypal, siendo ésta la opción que considero más segura porque te permite un lapso de 45 días para efectuar reclamaciones ante problemas imprevistos. Por el bajo importe del envío no hay retención por parte de aduanas, y sin ser rápido raramente tarda más de 15 días, lo cual entra dentro de lo razonable.
Y hechas las presentaciones de rigor, pasemos a ver nuestra pequeña maravilla:
Mostrando las partes de la Mini-STM32
En la imagen que viene a continuación, en que la placa a aparece con un tamaño un 20% inferior al real, podemos ver los bordes de la placa base y la pantalla LCD en primer término. En la parte alta hay dos bases mini-USB, pero sólo el de la izquierda es un USB 2.0 real, ya que el de la derecha es en realidad una entrada serie RS-232 que usa la tecnología USB para pasar las señales entre la placa y el ordenador.
Las versiones anteriores de esta placa venían equipadas con el típico conector serie DE9, de 9 pines, montado en un lateral, pero resulta que aparte de la deficiente estética funcional por su tamaño, hoy en día ya no se venden ordenadores con salida RS-232 y también son cada vez menos los que quedan funcionando en nuestras casas. Por este motivo, en la parte del ordenador se utiliza una solución de compromiso que consiste en convertir uno de sus USB en un puerto COM virtual, y por tanto generador de señales RS-232, siendo la recepción en la placa Mini-STM32 un conector también USB pero que conduce la señal a un chip convertidor PL2303HX, cuya misión es traducir de nuevo las señales de falso USB en las normales RS-232, las cuales ya son aprovechables directamente por el microcontrolador.
Descripción de los elementos de la placa
Esta conexión RS232-USB entre el ordenador y la placa la utilizaremos para borrar los programas contenidos en la memoria flash y sustituirlos por otros que deseemos.
Aparte de este detalle, distinguimos 4 LEDS situados en las cuatro esquinas, y serigrafiados de LD1 a LD4, cuya función es la siguiente:
LD1 Pertenece al USB, puede utilizarse para pruebas, aunque su labor normal es indicar la transferencia de datos a por el USB
LD2 LED de Power. Se enciende siempre que la placa tenga tensión de 5 volts, presente en uno de los pines del conector USB
LD3 LED de uso general, conectado a una salida del chip como indicador de lo que deseemos
LD4 Igual que el anterior, LED de uso general
En la franja inferior podemos ver cuatro pequeños botones. Comenzando por la derecha son:
Reset Efectúa un reset al microcontrolador. Si estaba en modo de carga de programa, pasa a modo de ejecución
Boot Abreviatura de "Boot Loader". Apretado junto con el al botón anterior, coloca la placa en modo de "carga de programa"
KeyB Pulsador de uso general, perteneciente al puerto B, para introducir órdenes en el programa
KeyA Pulsador de uso general, perteneciente al puerto A, para introducir órdenes en el programa
Parte trasera de la Mini-STM32
En la parte trasera de la placa principal sólo es distinguible el conector para una tarjeta de memoria MiniSD, del mismo tipo que utilizamos en las tablets y en las cámaras de fotos digitales, capaz de almacenar una gran cantidad de datos.
A parte de los elementos que hemos descrito en la primera imagen, aquí también son visibles tanto arriba como abajo de la placa las líneas E/S (entradas salidas) del microcontrolador, donde de acuerdo al programa que corra en su interior, deberemos conectar el resto del hardware que la placa pretenda controlar en nuestros proyectos, como sensores, motores, etc.
Si ahora quitamos los cuatro tornillos que sujetan la placa del LCD y la extraemos con cuidado de no doblarla ni forzar los contactos (ya que su único conector de 34 pines está situado en su parte izquierda), podemos ver la totalidad de la placa principal, donde descartando los elementos periféricos que ya hemos descrito, distinguimos el microcontrolador central y otros componentes SMD. A la izquierda vemos el alojamiento para una pila de litio tipo DL1220, de 3 volts, destinada a mantener el funcionamiento del reloj interno en tiempo real, y en la derecha el chip PL2303HX que "traduce" los datos USB en RS232, y un conector denominado JTAG, acrónimo de Joint Test Action Group, y que puede servir desde la comprobación en fábrica de la integridad de la propia placa hasta como sistema de depuración de código, aunque en estos momentos no sabría dar más información al respecto.
La tensión de alimentación del microcontrolador, así como de la mayoría de elementos del circuito es de 3,3 Volts, pero en las pruebas normales la obtendremos a partir de los 5 Volts del USB del ordenador. La reducción la efectúa un integrado estabilizador, que tiene la forma de un pequeño transistor, situado al lado del conector JTAG.
El microcontrolador y algunos elementos de la placa base
La placa del LCD no tiene muchos secretos, a parte del propio display de cristal líquido, distinguimos un diminuto integrado asociado al mismo y una serie de contactos sin soldar denominados CNB que son una continuación de los contactos, pin a pin del conector de entrada CNA que une esta placa a la principal.
Parte trasera de la placa del LCD
Ejercicio 1 -- Borrando el programa Demo
Bien, ya hemos visto un poco por encima la placa Mini-STM32 que acabamos de recibir, y como estamos impacientes por ver que hace. Tomamos el corto cable USB que la acompaña como único accesorio y lo enchufamos al conector CN3 (el tipo min-USB situado en la esquina superior derecha). Después, tomamos el otro extremo del cable y lo insertamos en una base USB de nuestro ordenador.
Al instante veremos como la pantalla se ilumina en rojo y nos pide que pulsemos en una serie de puntos para efectuar una calibración. Para pulsar usaremos algo tipo lápiz de material plástico duro, semejante al que utilizan las tablets o los ordenadores de mano tipo PAD. Nunca se deben utilizar herramientas metálicas o que puedan rayar la pantalla.
La calibración debe efectuarse porque el sistema de reconocimiento táctil es de tipo resistivo, cuya precisión no es tan buena como el capacitivo, y necesita encontrar los puntos de referencia correctos antes de comenzar a trabajar.
Después se iniciará un programa de demostración que nos muestra las posibilidades gráficas de la placa, con texto, barras de colores colores, cuadrados, círculos, ventanas tipo Windows y demás. Todo muy bonito para mostrar lo que hemos comprado, pero como nuestro interés es comenzar a programar la placa y entender sus entresijos, lo que de verdad debemos hacer es quitar dicho programa y entrar los nuestros, aunque de momento está claro que no tendrán comparación posible en cuento a vistosidad.
El software para comenzar a trabajar
Antes de comenzar con la primera prueba consistente el borrar el programa de demostración contenido en la placa, necesitamos una serie de programas que vamos a bajar:
1) Vamos a la web del vendedor de la placa, y en concreto a la pantalla de nuestro producto, Micro4you y en el apartado "Software" pulsamos sobre "PL2303 USB to Serial Driver", lo cual nos lleva a la web de Prolific y de allí nos descargamos dos pequeños programas que guardaremos en una carpeta:
PL2303_Prolific_DriverInstaller_v1417.zip
PL2303DRemover_v1001.zip
El primero de ellos es un driver que una vez instalado en el ordenador reconocerá la placa cuando la conectemos a un USB y nos creará un puerto COM virtual, que puede ser cualquier número disponible (en uno de mis ordenadores ha sido el COM 7 y el otro el COM 4). El segundo programa, como su propio nombre indica, solo sirve como desinstalador del primero.
Hagamos entonces la prueba, instalamos el programita, conectamos la placa al ordenador y si abrimos el Mi PC > Propiedades > Hardware > Administrador de Dispositivos, deberemos ver como el el apartado "Puertos (COM y LPT)" ha aparecido el COM adicional.
Conectando el mini USB-RS232 de la placa con el USB normal del ordenador
2) Ahora debemos bajar e instalar otro programa llamado "Flash Loader Demo", de ST Microelectronics, que puede conseguirse sin problemas en la propia web de la marca y en otros muchos sitios de Internet con sólo introducir el nombre en el Google. En caso de que si por alguna otra causa resulta difícil hallar dichos programas, pueden bajarse los dos de una vez, empaquetados en un archivo .rar, desde la siguiente dirección:
STM32setup.rar
3) Ahora colocaremos la placa Mini-STM32 en modo Boot-Loader, o de carga exterior. Para ello apretamos simultaneamente los pulsadores "Boot" y "RST", y manteniendo el primero pulsado, soltamos el segundo. Observaremos como en el display desaparece el programa demo que estaba corriendo y la pantalla se queda en un blanco de baja luminosidad.
4) Como ya tenemos instalado el Flash Loader Demo, lo arrancamos y ha de aparecernos la siguiente imagen:
En "Port name" seleccionaremos el port virtual que nos haya creado el programa anterior, dejando sin cambiar el resto de cuadros. Apretamos "Next" y saltamos a la siguiente pantalla:
Si el pequeño semáforo aparece en verde es que todo ha ido bien y se ha establecido la comunicación entre la placa y el ordenador. Pulsamos de nuevo "Next"
Aquí nos aparece una pantalla de selección e información sobre la memoria flash de la placa, datos que por ahora no vamos a usar. Apretamos "Next"
En esta página están las acciones a realizar. La que está resaltada por defecto es la de "Erase", o borrado de la memoria, que puede ser total o de una parte que hayamos seleccionado. Bien, como de momento no tenemos necesidades demasiado específicas, procederemos a borrarla en su totalidad, dejando el botón "All" seleccionado. Pulsamos de nuevo "Next"
Esta última página nos informa si el proceso se ha realizado con éxito, con la frase "Erase operation finished succesfully" o ha habido algún problema.
Problemas de reconocimiento de la placa con Windows 2000
En mi caso, este procedimiento ha funcionado bien y al primer intento en mi ordenador normal equipado con Windows XP y en otro con Windows 7, pero en cambio no he conseguido que andara más que una o dos veces de las veinte que lo he probado en otros dos ordenadores con Windows 2000. Aún no he podido determinar si el problema está en el sistema operativo con los COM virtuales o en alguna pijadita de configuración del hardware. Con los W-2000 he bajado la velocidad de los COMs para aumentar la seguridad de la transmisión y he probado las demás opciones de paridad, eco, etc, y sigue sin funcionar, y ya en la segunda página me aparece el semáforo en rojo y la indicación "Unrecognaized device...".
Pero bueno, en casa y con mi ordenador principal andando con XP me funciona, y como supongo que la mayoría ya dejasteis aparcado el W-2000 hace años, también debería funcionar en la vuestra. Si habéis llegado a la última pantalla del Flash Loader con la indicación de que el borrado se ha efectuado de forma satisfactoria, en la placa podéis pulsar el botón RST de la esquina inferior derecha, y con ello saldrá del modo "Boot Loader" y se colocará en ejecución, aunque en este caso, al haber borrado el programa, no va ha hacer absolutamente nada.
Descargando más software e información de utilidad
En la próxima entrega intentaremos realizar nuestro primer programa, cargarlo y ejecutarlo, pero de momento no estaría de más repasar todo lo anterior mientras regresamos a la web del vendedor Micro4you (http://www.micro4you.com/store/mini-stm32-stm32f103-tft-lcd-board.html) y descargamos el software y la información que tan amablemente nos regala y que nos será útil en el futuro:
Del software descargaremos:
- Keil RealView MDK (Potente entorno IDE de programación en C, aunque es una versión de evaluación limitada a programas de 34 Kbytes)
- PL2303 USB to Serial Driver (que ya tenemos por haberlo descargado antes)
- Sample Code (ejemplos de código para las distintas opciones del microcontrolador)
- Update Sample Code 2011 (V1.5) (actualización de los ejemplos)
- Update Sample Code 2011 (1.18) (actualización de los ejemplos)
En la documentación en PDF:
- Mini STM32 STM32F103 TFT LCD Board Schematic (esquema completo de la placa)
- 3.2 TFT LCD Schematic (esquema del módulo LCD)
- TSC2046 Datasheet
- SSD1289 Datasheet
- All Chip Datasheet
Continuará...
NOTA: Este escrito podéis verlo también en forma de página web en http://sites.google.com/site/anilandro/06150-mstm21-01 (después del trabajo efectuado primero para redactar y luego para adecuar este texto al foro, espero que el moderador no considere esta referencia a mi web como spam ni una autopromoción condenable que merezca el borrado, como una vez, y de forma que considero bastante injusta, me sucedió en una intervención en otro apartado este foro)
Realizar proyectos con placas de desarrollo siempre ha sido mi asignatura pendiente, y hace poco me decidí a comenzar con este tema. Para ello busqué información en la red y al final me decanté por una Mini-STM32, equipada con un microcontrolador STM32. Según un compañero italiano de un foro de física era potente y fácil de programar, con un muchas ayudas disponibles y completas herramientas de software a su disposición ...O al menos ésta era la teoría, porque después de recibir la la placa, y a pesar de haber estudiado y trabajado en temas informáticos durante muchos años, no supe ni por donde empezar.
Esto fue ni más ni menos lo que me ocurrió hace una semana, cuando recibí la flamante Mini-STM32, que pese a ser un modelo de gran venta, la realidad es que apenas hay información de nivel básico disponible en Internet, y menos aún si nos remitimos al mundo hispanohablante. Por suerte, en los primeros intentos de programación recibí la ayuda de Francisco Javier y de Melchor, dos compañeros expertos en el tema que conocí a través de la red y cuyos consejos me permitieron superar el bloqueo en que me encontraba. Y tal vez para devolver una parte de este gesto he decidido comenzar una relación de mis experiencias con la Mini-STM32, en la esperanza que puedan servir a otros para andar más rápidos por el mismo camino.
El realizar esta especie de tutorial básico también constituye para mí un proceso de aprendizaje. Por tanto iré paso a paso y sólo hablaré de aquellas cosas que o bien conozca de otros dispositivos parecidos o haya podido probar en éste, y como aún así corro el riesgo de interpretar algo de forma equivocada, agradeceré cualquier comentario al respecto.
La placa de desarrollo Mini-STM32
Realizadas estas aclaraciones, diré que la placa o módulo de desarrollo Mini-STM32 es una placa de bajo precio y buenas prestaciones construida alrededor de un microcontrolador STM32F103VC Cortex M3, de 32 bits, fabricado por ST Electronics. Dichos microcontroladores pertenecen a la popular familia de los ARM, con los cuales son compatibles, y son utilizados habitualmente en multitud de sistemas industriales, domésticos y de automoción.
Vista de la Mini-STM32 reproduciendo el programa de demostración

Diferencias entre un microcontrolador y un microprocesador
¿Y cual es la diferencia entre un microcontrolador y un microprocesador, como por ejemplo el Pentium que equipa nuestros ordenadores? Pues la diferencia es básicamente el grado de integración de elementos dentro del mismo chip. Un microprocesador puede procesar datos digitales de acuerdo a un programa, pero necesita de una memoria externa RAM, de una ROM y de otra memoria para programas en flash o en disco duro. El microprocesador precisa además de otros chips de entradas y salidas (denominados normalmente PIO - Port Input / Output) que le permitan comunicarse con otros módulos, tanto de la misma placa como exteriores al ordenador, como una tarjeta grafica para la pantalla, un chip especial para las comunicaciones serie, otro chip de sonido, etc. En el microprocesador las funciones de cada uno de sus pines suele estar muy definido, agrupándose en forma de buses de datos, de direcciones y de control.
Un microcontrolador en cambio es casi como un pequeño ordenador y lo integra todo en el mismo chip, además de la unidad de proceso, contiene su propia memoria RAM, su ROM con un sistema de carga de datos y la memoria de almacenamiento de programas, normalmente de tipo Flash. En cuanto a sus pines, un alto porcentaje de ellos pueden ser configurados de forma indistinta como entradas o salida de tipos muy diferentes, ya que pueden por ejemplo controlar directamente un servo tipo radiocontrol, o el circuito driver de una sirena de alarma, o un display de LEDS, o leer el estado de un contacto o medir la tensión analógica de un sensor de temperatura.
El microcontrolador STM32F103VC
En nuestro caso concreto, el STM32F103VC es un pequeño chip de forma cuadrada tipo SMD alimentado a 3,3 volts. Dispone de 100 pines e integra en su interior 48 Kbytes de memoria RAM, 256 KBytes de memoria flash y funciona a una frecuencia de reloj de hasta 72 Mhz.
Como es habitual en los microcontroladores actuales, la mayoría de los pines pueden ser programados para que realicen distintas funciones, especialmente los que están agrupados en los cinco puertos (PA, PB, PC, PD y PE), de 16 líneas cada uno. Aparte de los pines utilizados por la propia placa que no están disponibles para el usuario, hay 2 de ellos que activan sendos LEDS de uso general y 2 a pulsadores también utilizables para cualquier función. Hay 30 pines no conectados y por tanto disponibles y configurables como entradas o salidas de distintos tipos, 16 de ellos pueden además actuar como entradas analógicas con conversor ADC de 12 bits, 2 como salidas analógicas tipo DAC, y también hay un cierto número de salidas de impulsos PWM modulados en duración, temporizadores y muchas otras funciones especiales que ya iremos descubriendo.
Por otra parte, los pines del microcontrolador, con o sin uso, están todos disponibles entre los conectores E/S superior e inferior.
De todas formas, si a alguien le empuja la impaciencia puede hallar una descripción más detallada de este micro en el manual de referencia del STM32, disponible en la web de ST Microelectronics, pero advierto que tiene alrededor de 1.000 páginas y su contenido es mucho más técnico que el nivel que de momento pretendemos asumir. También podríamos obtener información adicional de la placa en su conjunto acudiendo a la web del fabricante, en las direcciones: http://www.poweravr.com y http://www.powermcu.com , pero para ello necesitaríamos entender los caracteres chinos o confiar tal vez demasiado en la traducción automática de Google entre idiomas tan diferentes.
Por todo lo anteriormente expuesto ya intuimos que el controlador STM32 tiene una potencia y una versatilidad realmente notable para su tamaño, pero sobre todo esta placa se distingue de otras parecidas en que dispone de origen de un display LCD sensible al tacto de 320 x 240 pixels, capaz de representar 262.000 colores (64 niveles para cada color básico RGB).
Comprando la Mini-STM32
Y si buenas parecen las características de la placa en su conjunto, igual de bueno es su precio, ya que puede encontrarse en Internet por unos 30 €, como por ejemplo en la tienda on-line Micro4you (http://www.micro4you.com/store/mini-stm32-stm32f103-tft-lcd-board.html), radicada en Tailandia, a lo que deberemos añadir unos 5 € por el envío aéreo hasta España.
El pago puede efectuarse por tarjeta de crédito o bien por Paypal, siendo ésta la opción que considero más segura porque te permite un lapso de 45 días para efectuar reclamaciones ante problemas imprevistos. Por el bajo importe del envío no hay retención por parte de aduanas, y sin ser rápido raramente tarda más de 15 días, lo cual entra dentro de lo razonable.
Y hechas las presentaciones de rigor, pasemos a ver nuestra pequeña maravilla:
Mostrando las partes de la Mini-STM32
En la imagen que viene a continuación, en que la placa a aparece con un tamaño un 20% inferior al real, podemos ver los bordes de la placa base y la pantalla LCD en primer término. En la parte alta hay dos bases mini-USB, pero sólo el de la izquierda es un USB 2.0 real, ya que el de la derecha es en realidad una entrada serie RS-232 que usa la tecnología USB para pasar las señales entre la placa y el ordenador.
Las versiones anteriores de esta placa venían equipadas con el típico conector serie DE9, de 9 pines, montado en un lateral, pero resulta que aparte de la deficiente estética funcional por su tamaño, hoy en día ya no se venden ordenadores con salida RS-232 y también son cada vez menos los que quedan funcionando en nuestras casas. Por este motivo, en la parte del ordenador se utiliza una solución de compromiso que consiste en convertir uno de sus USB en un puerto COM virtual, y por tanto generador de señales RS-232, siendo la recepción en la placa Mini-STM32 un conector también USB pero que conduce la señal a un chip convertidor PL2303HX, cuya misión es traducir de nuevo las señales de falso USB en las normales RS-232, las cuales ya son aprovechables directamente por el microcontrolador.
Descripción de los elementos de la placa

Esta conexión RS232-USB entre el ordenador y la placa la utilizaremos para borrar los programas contenidos en la memoria flash y sustituirlos por otros que deseemos.
Aparte de este detalle, distinguimos 4 LEDS situados en las cuatro esquinas, y serigrafiados de LD1 a LD4, cuya función es la siguiente:
LD1 Pertenece al USB, puede utilizarse para pruebas, aunque su labor normal es indicar la transferencia de datos a por el USB
LD2 LED de Power. Se enciende siempre que la placa tenga tensión de 5 volts, presente en uno de los pines del conector USB
LD3 LED de uso general, conectado a una salida del chip como indicador de lo que deseemos
LD4 Igual que el anterior, LED de uso general
En la franja inferior podemos ver cuatro pequeños botones. Comenzando por la derecha son:
Reset Efectúa un reset al microcontrolador. Si estaba en modo de carga de programa, pasa a modo de ejecución
Boot Abreviatura de "Boot Loader". Apretado junto con el al botón anterior, coloca la placa en modo de "carga de programa"
KeyB Pulsador de uso general, perteneciente al puerto B, para introducir órdenes en el programa
KeyA Pulsador de uso general, perteneciente al puerto A, para introducir órdenes en el programa
Parte trasera de la Mini-STM32

En la parte trasera de la placa principal sólo es distinguible el conector para una tarjeta de memoria MiniSD, del mismo tipo que utilizamos en las tablets y en las cámaras de fotos digitales, capaz de almacenar una gran cantidad de datos.
A parte de los elementos que hemos descrito en la primera imagen, aquí también son visibles tanto arriba como abajo de la placa las líneas E/S (entradas salidas) del microcontrolador, donde de acuerdo al programa que corra en su interior, deberemos conectar el resto del hardware que la placa pretenda controlar en nuestros proyectos, como sensores, motores, etc.
Si ahora quitamos los cuatro tornillos que sujetan la placa del LCD y la extraemos con cuidado de no doblarla ni forzar los contactos (ya que su único conector de 34 pines está situado en su parte izquierda), podemos ver la totalidad de la placa principal, donde descartando los elementos periféricos que ya hemos descrito, distinguimos el microcontrolador central y otros componentes SMD. A la izquierda vemos el alojamiento para una pila de litio tipo DL1220, de 3 volts, destinada a mantener el funcionamiento del reloj interno en tiempo real, y en la derecha el chip PL2303HX que "traduce" los datos USB en RS232, y un conector denominado JTAG, acrónimo de Joint Test Action Group, y que puede servir desde la comprobación en fábrica de la integridad de la propia placa hasta como sistema de depuración de código, aunque en estos momentos no sabría dar más información al respecto.
La tensión de alimentación del microcontrolador, así como de la mayoría de elementos del circuito es de 3,3 Volts, pero en las pruebas normales la obtendremos a partir de los 5 Volts del USB del ordenador. La reducción la efectúa un integrado estabilizador, que tiene la forma de un pequeño transistor, situado al lado del conector JTAG.
El microcontrolador y algunos elementos de la placa base

La placa del LCD no tiene muchos secretos, a parte del propio display de cristal líquido, distinguimos un diminuto integrado asociado al mismo y una serie de contactos sin soldar denominados CNB que son una continuación de los contactos, pin a pin del conector de entrada CNA que une esta placa a la principal.
Parte trasera de la placa del LCD

Ejercicio 1 -- Borrando el programa Demo
Bien, ya hemos visto un poco por encima la placa Mini-STM32 que acabamos de recibir, y como estamos impacientes por ver que hace. Tomamos el corto cable USB que la acompaña como único accesorio y lo enchufamos al conector CN3 (el tipo min-USB situado en la esquina superior derecha). Después, tomamos el otro extremo del cable y lo insertamos en una base USB de nuestro ordenador.
Al instante veremos como la pantalla se ilumina en rojo y nos pide que pulsemos en una serie de puntos para efectuar una calibración. Para pulsar usaremos algo tipo lápiz de material plástico duro, semejante al que utilizan las tablets o los ordenadores de mano tipo PAD. Nunca se deben utilizar herramientas metálicas o que puedan rayar la pantalla.
La calibración debe efectuarse porque el sistema de reconocimiento táctil es de tipo resistivo, cuya precisión no es tan buena como el capacitivo, y necesita encontrar los puntos de referencia correctos antes de comenzar a trabajar.
Después se iniciará un programa de demostración que nos muestra las posibilidades gráficas de la placa, con texto, barras de colores colores, cuadrados, círculos, ventanas tipo Windows y demás. Todo muy bonito para mostrar lo que hemos comprado, pero como nuestro interés es comenzar a programar la placa y entender sus entresijos, lo que de verdad debemos hacer es quitar dicho programa y entrar los nuestros, aunque de momento está claro que no tendrán comparación posible en cuento a vistosidad.
El software para comenzar a trabajar
Antes de comenzar con la primera prueba consistente el borrar el programa de demostración contenido en la placa, necesitamos una serie de programas que vamos a bajar:
1) Vamos a la web del vendedor de la placa, y en concreto a la pantalla de nuestro producto, Micro4you y en el apartado "Software" pulsamos sobre "PL2303 USB to Serial Driver", lo cual nos lleva a la web de Prolific y de allí nos descargamos dos pequeños programas que guardaremos en una carpeta:
PL2303_Prolific_DriverInstaller_v1417.zip
PL2303DRemover_v1001.zip
El primero de ellos es un driver que una vez instalado en el ordenador reconocerá la placa cuando la conectemos a un USB y nos creará un puerto COM virtual, que puede ser cualquier número disponible (en uno de mis ordenadores ha sido el COM 7 y el otro el COM 4). El segundo programa, como su propio nombre indica, solo sirve como desinstalador del primero.
Hagamos entonces la prueba, instalamos el programita, conectamos la placa al ordenador y si abrimos el Mi PC > Propiedades > Hardware > Administrador de Dispositivos, deberemos ver como el el apartado "Puertos (COM y LPT)" ha aparecido el COM adicional.
Conectando el mini USB-RS232 de la placa con el USB normal del ordenador

2) Ahora debemos bajar e instalar otro programa llamado "Flash Loader Demo", de ST Microelectronics, que puede conseguirse sin problemas en la propia web de la marca y en otros muchos sitios de Internet con sólo introducir el nombre en el Google. En caso de que si por alguna otra causa resulta difícil hallar dichos programas, pueden bajarse los dos de una vez, empaquetados en un archivo .rar, desde la siguiente dirección:
STM32setup.rar
3) Ahora colocaremos la placa Mini-STM32 en modo Boot-Loader, o de carga exterior. Para ello apretamos simultaneamente los pulsadores "Boot" y "RST", y manteniendo el primero pulsado, soltamos el segundo. Observaremos como en el display desaparece el programa demo que estaba corriendo y la pantalla se queda en un blanco de baja luminosidad.
4) Como ya tenemos instalado el Flash Loader Demo, lo arrancamos y ha de aparecernos la siguiente imagen:

En "Port name" seleccionaremos el port virtual que nos haya creado el programa anterior, dejando sin cambiar el resto de cuadros. Apretamos "Next" y saltamos a la siguiente pantalla:

Si el pequeño semáforo aparece en verde es que todo ha ido bien y se ha establecido la comunicación entre la placa y el ordenador. Pulsamos de nuevo "Next"

Aquí nos aparece una pantalla de selección e información sobre la memoria flash de la placa, datos que por ahora no vamos a usar. Apretamos "Next"

En esta página están las acciones a realizar. La que está resaltada por defecto es la de "Erase", o borrado de la memoria, que puede ser total o de una parte que hayamos seleccionado. Bien, como de momento no tenemos necesidades demasiado específicas, procederemos a borrarla en su totalidad, dejando el botón "All" seleccionado. Pulsamos de nuevo "Next"

Esta última página nos informa si el proceso se ha realizado con éxito, con la frase "Erase operation finished succesfully" o ha habido algún problema.
Problemas de reconocimiento de la placa con Windows 2000
En mi caso, este procedimiento ha funcionado bien y al primer intento en mi ordenador normal equipado con Windows XP y en otro con Windows 7, pero en cambio no he conseguido que andara más que una o dos veces de las veinte que lo he probado en otros dos ordenadores con Windows 2000. Aún no he podido determinar si el problema está en el sistema operativo con los COM virtuales o en alguna pijadita de configuración del hardware. Con los W-2000 he bajado la velocidad de los COMs para aumentar la seguridad de la transmisión y he probado las demás opciones de paridad, eco, etc, y sigue sin funcionar, y ya en la segunda página me aparece el semáforo en rojo y la indicación "Unrecognaized device...".
Pero bueno, en casa y con mi ordenador principal andando con XP me funciona, y como supongo que la mayoría ya dejasteis aparcado el W-2000 hace años, también debería funcionar en la vuestra. Si habéis llegado a la última pantalla del Flash Loader con la indicación de que el borrado se ha efectuado de forma satisfactoria, en la placa podéis pulsar el botón RST de la esquina inferior derecha, y con ello saldrá del modo "Boot Loader" y se colocará en ejecución, aunque en este caso, al haber borrado el programa, no va ha hacer absolutamente nada.
Descargando más software e información de utilidad
En la próxima entrega intentaremos realizar nuestro primer programa, cargarlo y ejecutarlo, pero de momento no estaría de más repasar todo lo anterior mientras regresamos a la web del vendedor Micro4you (http://www.micro4you.com/store/mini-stm32-stm32f103-tft-lcd-board.html) y descargamos el software y la información que tan amablemente nos regala y que nos será útil en el futuro:
Del software descargaremos:
- Keil RealView MDK (Potente entorno IDE de programación en C, aunque es una versión de evaluación limitada a programas de 34 Kbytes)
- PL2303 USB to Serial Driver (que ya tenemos por haberlo descargado antes)
- Sample Code (ejemplos de código para las distintas opciones del microcontrolador)
- Update Sample Code 2011 (V1.5) (actualización de los ejemplos)
- Update Sample Code 2011 (1.18) (actualización de los ejemplos)
En la documentación en PDF:
- Mini STM32 STM32F103 TFT LCD Board Schematic (esquema completo de la placa)
- 3.2 TFT LCD Schematic (esquema del módulo LCD)
- TSC2046 Datasheet
- SSD1289 Datasheet
- All Chip Datasheet
Continuará...
NOTA: Este escrito podéis verlo también en forma de página web en http://sites.google.com/site/anilandro/06150-mstm21-01 (después del trabajo efectuado primero para redactar y luego para adecuar este texto al foro, espero que el moderador no considere esta referencia a mi web como spam ni una autopromoción condenable que merezca el borrado, como una vez, y de forma que considero bastante injusta, me sucedió en una intervención en otro apartado este foro)
Última edición: