Skyduino:~#
Articles
programmation, test

[Test] STM32 Discovery

Salut à tous !
C’est samedi ! c’est l’heure du test ! (oui je sais on est que vendredi mais vendredi c’est déjà presque samedi :))

Aujourd’hui au programme la STM32 Discovery Board !

La STM32 Discovery est une plateforme de développement low-cost de STmicroelectronic qui à pour but de concurrencé la Launchpad de Texas Instrument.
La guerre qui fait rage entre les différents fabriquants de puces rend les prix de plus en plus bas et les puces de plus en plus puissantes, c’est du tous bon pour nous !

Avant de parler technique restons simple, premièrement, mon point préféré, l’emballage !
(un bon produit ce doit d’avoir un bonne emballage !)

Pour la STM32 Discovery le packaging est simple (optique du moins chère possible oblige), un blister plastique, un fond en carton et c’est tout !

Simple mais efficace !
(Excepté le fait que la dame sur le carton semble loucher sévèrement O_o )

Bon allez trêve de bavardages passons aux choses sérieuses, aux vrai truc de mec !
La STM32 Discovery est une plateforme de développement basé sur un STM32F100RBT6, une belle bête 32bits doté de plein de bonnes choses !

Petite remarque, le STM32F100RBT6 est une puce de la famille STM32 « medium density », il faut savoir qu’il existe 3 classes de puces STM32, les « low density » qui sont des µc avec peu de ram/flash et un nombre restreint d’I/O, les « high density » qui sont des bêtes super-dopé avec beaucoup de flash/ram et de périphériques interne et finalement les « medium density » qui sont un mixte des deux.
De part sa classe « medium » le STM3F100RBT6 « seulement » 128 KB de Flash et 8 de KB RAM, c’est pas énorme pour un ARM Cortex M3 mais c’est déjà pas mal !

La STM32 Discovery est composé de deux partie comme les boards LPCx, une partie programmateur/debuggeur et une partie « target ».
La partie « target » est composé du microcontrolleur, d’un quartz démontable (c’est important), de deux boutons (un reset et un « user ») et de deux leds libre pour l’utilisateur.

ensuite il y à la partie débuggeur, qui il faut le dire pourrait être plus intéressante que la partie target (usb, …) mais passons.
La partie débuggeur est appelé « ST-LINK », le protocole est fermé, et disponible uniquement pour windows MAIS grâce aux amis du manchot un soft linux existe !
Seul probléme pour utiliser la partie débuggeur en débuggeur et pas seulement en programmateur il faut obligatoire windows et une des suites « officiel » de STmicroelectronic, pour ~10€ fallait pas non plus s’attendre à un miracle !
Mais tout n’est pas perdu ! Des personnes sur de multiples forums ont trouvaient le moyen de faire tourné des firmwares alternatifs sur la partie débuggeur et par conséquent la rendre compatible open-OCD, mais l’opération demande un deuxième ST-Link et est irréversible.

Pour ma part j’ai testé la suite true studio lite, un vrai massacre, limite en Ko pour le débuggage, des popups de pub vous suppliant d’acheter la suite pro, bref une horreur.
Alors comme toujours je me suis retourné vers mon fidèle Coocox IDE, mise à jour, et miracle il supporte la STM32 Discovery ! Que demandé de plus ?
Le débuggage ? Oui peut être mais bon, il n’y a pas de débuggage sous arduino alors on finit par être habitué au mode pas à pas fait avec des messages sur le port série 😉

Juste pour l’info, je pense d’ici la fin de l’année me prendre une launchpad de TexasInstrument pour voir un peu les différences.
Aussi au passage ST vient de sortir un nouvelle board encore plus puissante (DSP intégré pour faire des effets sonores en temps réel, ADC-DAC haute qualité pour faire de l’audio ou des prises de mesure, enfin bref une pure merveille !) la STM32F4DISCOVERY, des quelle sera disponible je m’en prendrai une et je vous ferait une petite review dessus.

Pour les spécifications techniques, elles sont trés intéressante mais aussi trés vague.

- Core: ARM 32-bit Cortex™-M3 CPU
24 MHz maximum frequency,1.25 DMIPS/MHz (Dhrystone 2.1) performance
Single-cycle multiplication and hardware division
- Memories
16 to 128 Kbytes of Flash memory
4 to 8 Kbytes of SRAM
- Clock, reset and supply management
2.0 to 3.6 V application supply and I/Os
POR, PDR and programmable voltage detector (PVD)
4-to-24 MHz crystal oscillator
Internal 8 MHz factory-trimmed RC
Internal 40 kHz RC
PLL for CPU clock
32 kHz oscillator for RTC with calibration
- Low power
Sleep, Stop and Standby modes
VBATsupply for RTC and backup registers
- Debug mode
Serial wire debug (SWD) and JTAG interfaces
- DMA
7-channel DMA controller
Peripherals supported: timers, ADC, SPIs, I2Cs, USARTs and DACs
- 1 × 12-bit, 1.2 μs A/D converter (up to 16 channels)
Conversion range: 0 to 3.6 V
- Temperature sensor
- 2 × 12-bit D/A converters
- Up to 80 fast I/O ports
80 I/Os, all mappable on 16 external interrupt vectors and almost all 5 V-tolerant
- Up to 12 timers
Up to three 16-bit timers, each with up to 4 IC/OC/PWM or pulse counter
16-bit, 6-channel advanced-control timer: up to 6 channels for PWM output, dead time generation and emergency stop
One 16-bit timer, with 2 IC/OC, 1 OCN/PWM, dead-time generation and emergency stop
Two 16-bit timers, each with IC/OC/OCN/PWM, dead-time generation and emergency stop
2 watchdog timers (Independent and Window)
SysTick timer: 24-bit downcounter
Two 16-bit basic timers to drive the DAC
- Up to 8 communications interfaces
Up to two I2C interfaces (SMBus/PMBus)
Up to 3 USARTs (ISO 7816 interface, LIN, IrDA capability, modem control)
Up to 2 SPIs (12 Mbit/s)
Consumer electronics control (CEC) interface
- CRC calculation unit, 96-bit unique ID

Prenons par exemple la vitesse max du quartz, il est noté 24MHz, en y regardant de plus prés le STM32 tourne au maximum à 72MHz en interne grâce à un systéme de PLL, hors il est possible avec un bête quartz à 8MHz comme celui fourni avec la board d’atteindre les 72MHz, une petite particularité qui fait toute la différence ! De nombreux points reste ainsi un peu vague mais pas vraiment de mauvaises surprises à prévoir pour autant.

Bon sinon gros point négatif, je sais pas comment les mecs de ST s’y sont pris ou si il avait fumé avant mais regardé la mise en place des headers :

Ils doivent avoir des breadboards pas nette c’est ST ou alors l’header sur le coté droit à été rajouté « au passage » !
Sérieusement comment câbler la STM32 Discovery sur une breadboard avec cette mise en place des headers !?
C’est LE probléme de cette board, un header mal placé qui demande un câblage de fou …

Bon tout n’est pas négatif, les mecs de chez ST y ont quand même mis du coeur pour faire quelque chose de vraiment bien et ce même si la board fait au final faire ~10€ !
Exemple type, le quartz démontable, la ou sur un board LPCx le quartz est en version cms, totalement irremplaçable, ici le quartz est un quartz classique monté dans un petit support tulipe.

Coté accessoire ont retrouve le grand classique bouton reset, un bouton « user » qui comme sont nom l’indique est laissé libre pour l’utilisateur ainsi que deux led (une verte et une bleu) qui permettre à l’utilisateur de plein faire des choses avec.
Il y a aussi un jumper permettant de regarder la consommation de courant du STM32 (c’est une board d’évaluation rappelez vous ;)) ainsi, bien sur, qu’une série de 3 headers reprenant les différentes pattes du STM32.

Coté ST-LINK maintenant si vous vous lancez dans le bidouillage compulsif vous allez être content !
Un connecteur SWD, un port usb et plein de jumper caché à souder/dessouder 🙂
Bon je vais être franc je n’est pas tenté le firmware alternatif pour open-OCD dans l’espoir qu’un petit gas renverse le protocole ST-LINK.
Pour les fous du c, les virtuoses du fer à souder et les accros au SWD voici le lien pour le firmware compatible open-OCD :
http://hackaday.com/2011/02/06/versaloon-ported-to-stm8-and-stm32-discovery-boards/

conclusion :
Pour 10€ cette board comble tout mes espoirs, pas chère, puissante, peu encombrante et simple à programmer.
On remarquera quand même la mise en place très étrange des headers qui rend la STM32 Discovery « breadboard incompatible » et le débuggeur ST-LINK pas vraiment utilisable (voir pas du tout) qui ne sert en réalité que de programmateur.
J’attends de voir de ce donne la nouvelle série de STM32F4 mais pour le moment cette board est juste awesome !

Discussion

19 réflexions sur “[Test] STM32 Discovery

  1. Salut,
    J’aimerais avoir des informations sur cette carte,
    Je connait deja les cartes ARDUINO et les circuit type PICAXE (donc dans les deux cas en gros il y a un bootloader sur le micro processeur) sa facilite la programation lowcoast.
    Par contre la je suis bleufer de voir cette carte a 10 euro comme tu dit, alors qu’une arduino uno tourne dans les 25€

    Evidement on a pas le port pour l’alim etc,
    Cependant j’aimerais savoir si dans le principe cette carte c’est un peut comme une arduino ?
    Car cette carte je la testerais bien .. pour 10 euros et pour toutes les entrées / sorties qu’elle possède sa peut etre intéressent a utiliser !

    Cependant j’ai crus comprendre qu’avec le cable usb on ne peut pas intéragir directement sur le composant « en serie » es ce vrai ? car j’etais habituer a utiliser (sur ma arduino) le cable usb (qui est brancher sur la carte qui elle meme possede un convertisseur serie / usb) et je pouvais intéragir directement sur le composant, je pouvais envoyer des infos etc
    Or la j’ai crus comprendre que l’on ne peut pas enfin pas directement par le port usb,

    S’il faut bidouiller un convertisseur USB / serie et le brancher sur les bornes dédiés a l’uart RX / TX / GND sa rajoute un coup (l »adaptateur serie / usb)

    Sachant que dans mon cas il faut absolument que je puisse communiquer avec l’ordinateur (en serie de préference) :S

    Si non deux trois différences entre une arduino et cette carte ? (bien sur le nombre d’IO de cette carte est impréssionant ! mais a part sa ?) qu’es ce qui fait que tu prendrais l’une ou l’autre ?

    Merci

    Publié par biloute | 25 septembre 2011, 22 h 14 min
    • Bonjour,

      >> Je connait deja les cartes ARDUINO et les circuit type PICAXE (donc dans les deux cas en gros il y a un bootloader sur le micro processeur) sa facilite la programation lowcoast.

      Les STM32 comportent aussi un bootloader série utilisé en autre pour la programmation sous linux sans le ST-LINK.

      >> Par contre la je suis bleufer de voir cette carte a 10 euro comme tu dit, alors qu’une arduino uno tourne dans les 25€

      C’est justement le résultat de la guerre qui faire rage entre les diférents fabricant, arduino reste « un peu » hors course car il font surtout dans l’optique open source et pas dans l’optique ultra low-cost, il existe aussi la launchpad (base MSP430) même caractéristiques technique qu’une carte arduino classique mais pour 5€ debugguer/programmateur usb inclu.

      >> Evidement on a pas le port pour l’alim etc,
      >> Cependant j’aimerais savoir si dans le principe cette carte c’est un peut comme une arduino ?
      >> Car cette carte je la testerais bien .. pour 10 euros et pour toutes les entrées / sorties qu’elle possède sa peut etre intéressent a utiliser !

      Le principe n’est absolument pas le même que l’arduino, que se soit dans la philosophie (totalement fermé) et dans la programmation, elle ce fait en ARM c++ « pure » et non en c « arduino », pour ma par je suis un peu fiéniasse et pour ne pas avoir à connaitre chaque registres correspondant à chaques pattes j’utilise les librairies de coocox IDE qui permetttent d’avoir un surcouche d’abstraction matériel (sur le même principe que l’api arduino) qui rend le codage multi-plateforme plus simple.
      Sinon je n’est jamais essayé, mais il existe un autre projet, le projet maple de leaflabs dont j’ai fait un test précédement, c’est un portage de l’api arduino sur les microcontrolleurs STM32, je sais que le ST-LINK marche pour debugger un carte maple mais je n’est jamais essayer de programmer une STM32 Discovery avec maple.

      >> Cependant j’ai crus comprendre qu’avec le cable usb on ne peut pas intéragir directement sur le composant « en serie » es ce vrai ? car j’etais habituer a utiliser
      >> (sur ma arduino) le cable usb (qui est brancher sur la carte qui elle meme possede un convertisseur serie / usb) et je pouvais intéragir directement sur le
      >> composant, je pouvais envoyer des infos etc
      >> Or la j’ai crus comprendre que l’on ne peut pas enfin pas directement par le port usb,

      Exact le port usb ne sert qu’au ST-LINK, à part pour la programmation il n’as aucune autre fonction, exit donc le port série virtuel.
      Pour ça il faut voir d’utiliser un FTDI Basic 3v3 pour le port série (3v3 ! pas 5v ! à 5v la carte fait pfffit !).

      >> S’il faut bidouiller un convertisseur USB / serie et le brancher sur les bornes dédiés a l’uart RX / TX / GND sa rajoute un coup (l »adaptateur serie / usb)
      >> Sachant que dans mon cas il faut absolument que je puisse communiquer avec l’ordinateur (en série de préférence) :S

      La Maple de olimex posséde un STM32 et un portage de l’api arduino comme je le disait plus haut, à ~25€ donc pas vraiment de gain en € par rapport à une arduino classique mais niveau puissance c’est autre chose.
      http://www.watterott.com/en/OLIMEXINO-STM32-MAPLE

      >> Si non deux trois différences entre une arduino et cette carte ? (bien sur le nombre d’IO de cette carte est impressionnant ! mais a part sa ?) qu’es ce qui fait que tu prendrais l’une ou l’autre ?

      Puissance de calcul, taille de la ram, taille de la flash, possibilité d’exécuter du code depuis la ram (un prog peut par exemple être charger depuis une carte sd puis exécuter en ram),
      port usb, convertisseur analogique -> numérique et numérique -> analogique.

      Si tu n’est pas rebuté par la programmation en ARM c++, que tu veux absolument une plateforme puissante pour moins de 15€, la stm32 discovery + ftdi basic (ebay 3€ ;)) c’est tiptop.
      Sinon la maple de olimex (ou de leaflabs mais celle de olimex est bien mieux) pourrait être plus adpaté (port série intégré, …).
      Et si vraiment le prix est une chose critique, une launchpad (MSP430), programmation en c++ (pas encore tester le style de codage, c’est prévu pour ma prochaine commande) + un ftdi basic.

      Publié par skywodd | 26 septembre 2011, 20 h 12 min
  2. Salut
    J’ai parcouru internet mais je n’ai pas réussi à trouver la carte de développement à 10 euros. Tu peux m’envoyer le lien du site?

    Publié par ahamedbacar | 17 novembre 2011, 17 h 14 min
  3. Disponible chez farnell : http://fr.farnell.com/stmicroelectronics/stm32vldiscovery/carte-d-evaluation-stm32lv-discovery/dp/1824325 à 11€ HT (soit ~13€ TTC) (Ps: attention au frais de port) ou sinon chez watterott : http://www.watterott.com/en/STM32VL-Discovery à 12€ TTC (frais de port de 10€, en rupture de stock pour le moment, mais il est possible de leur envoyer un mail pour passer « pré »commande).

    Publié par skywodd | 17 novembre 2011, 18 h 21 min
  4. Bonjour,
    Pour vous réjouir il y a la carte STM32L-DISCOVERY depuis fin 2011, pour un prix similaire, avec un proc qui embarque l’USB (mais il faut adapter un connecteur, sur une plaque à trous par exemple), et sur la carte un afficheur LCD + un ‘touch-silder’ !
    Je développe dessus sous linux avec arm-none-eabi-gcc (téléchargé chez code sourcery) ou encore plus light tinycc compilé avec le support cross-platform !
    Et le flasheur STLink est maintenant supporté grâce à texane (https://github.com/texane/stlink) !
    A suivre : la STM32F4-DISCOVERY arrive, une bête de puissance (mais est-ce bien nécessaire ?) 😉

    Publié par Loul | 3 janvier 2012, 23 h 36 min
    • Petite précision, le STM32L n’est pas pour le moment supporté par CoIDE donc obligé d’utiliser une toolchain custom en cmd, pour le STM32F4 je compte bien en faire un test dans le courant fin janvier 😉

      PS: J’ai bien vu la STM32L discovery chez farnell mais j’ai pas de commande prévu chez eux … faudrait que je trouve un fournisseur en europe …

      Publié par skywodd | 4 janvier 2012, 9 h 08 min
  5. bonjour, svp comment peut on cabler un afficher lcd 16×2 avec la stm32f100rb.?

    Publié par bellili | 17 avril 2012, 23 h 57 min
  6. @BELLILI dans le lien de la librairie que je t’ai donné plus haut tu as un exemple utilisant les broches suivante :

     LCD4Bit_Config lcd_config(
        GPIOB,
        GPIO_Pin_11, // RS
        GPIO_Pin_12, // ENABLE
        GPIO_Pin_7,  // DB4
        GPIO_Pin_8,  // DB5
        GPIO_Pin_9,  // DB6
        GPIO_Pin_10,  // DB7
        20, // cols
        4 // rows
      );
    

    Écran -> STM32
    RS -> B.11
    EN -> B.12
    D4 ~ D7 -> B.7 ~ B.10
    ( Écran 20 x 4 )

    Publié par skywodd | 19 avril 2012, 15 h 47 min
    • ok. merci beaucoup. je vais faire mon premier éssai. 🙂

      Publié par bellili | 19 avril 2012, 22 h 28 min
      • salut pouvez vous m’aidez c’est urgent ? ma disposition de mon projet fin d’étude sera dans 4 jours . je dois afficher un mot sur un afficheur lcd 2*16 j’ai utilisé la carte stm32vldiscovery . et je travail avec le logiciel IAR . j’ai utiliser un câble USB . lors de l exécutivn il m a dit jt_link .. !!!??? est ce qu il y a une application et je vais faire la modification des ports ??? merci d avance

        Publié par chdon | 27 mai 2012, 8 h 11 min
  7. @CHDON Je ne connais absolument pas IAR, je travaille uniquement sous CoIDE.
    JT_LINK est un type de debuggeur universelle mais dans le cas de la STM32 discovery il faut paramétrer le logiciel pour utiliser un debuggeur de type ST_LINK (V1 ou V2).

    Publié par skywodd | 27 mai 2012, 12 h 50 min
    • Merci . j ai eu un problème lorsque j’ai utilisé les fichier.h et .c l’exécution marche sur la carte. est ce qu’il y a des bibliothèque utilisant ses fichier pour lcd4bit .
      IAR , cocox et keil compatible avec même langauge C. merci d avance

      Publié par chdon | 27 mai 2012, 17 h 37 min
    • et lorsque j’ai utiliser les fichier.cpp j ai eu un problème y a il une solution pour convertir cpp en c ?

      Publié par chdon | 27 mai 2012, 17 h 58 min
      • Bon arrêtons le massacre …

        Fichier .c .h -> fichier de code source C,
        Fichier .cpp .hpp -> fichier de code source C++

        Il n’est pas possible de « convertir » du c++ en c de manière automatique, l’inverse est possible car le c++ est une amélioration du c.
        Si tu as un code source en c++ il faudra le recoder entièrement en C, à la main.

        Soit tu code en c++ avec un compilateur c++, soit tu code en c avec un compilateur c (ou c++).
        Si tu travaille avec CoIDE le compilateur fourni est compatible C et C++.
        IAR ou KEIL j’en sait rien (il est fort probable que non vu qu’ils soit limité par la licence gratuite).

        PS: découvrir ce genre de choses 4 jours avant une soutenance ça fait un peu travail bâclé …

        Publié par skywodd | 27 mai 2012, 18 h 09 min
      • merci . y a t il des bibliothéque lcd4bit.h et lcd4bit.c pour stm32vldiscovery ???

        Publié par chdon | 27 mai 2012, 19 h 02 min

Rétroliens/Pings

  1. Pingback: Un post qui parle de construction Radio open source "maison" - Page 6 - Forum modelisme.com - 10 novembre 2012

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Skyduino devient Carnet du Maker

Le site Carnet du Maker remplace désormais le blog Skyduino pour tout ce qui touche à l'Arduino, l'informatique et au DIY.