STM32 modèle "Ebay" et "Maple-mini"

Je passe dans le bar pour ne pas poluer le sujet en cours.

sinon pas mal comme carte, tu en diras plus.

pour l'instant c'est 68tjs qui s'y colle 8)

Espérez pas trop : je suis en retraite moi, madame aussi, alors je n'ai pas beaucoup de temps disponible :grin: .
De plus vous connaissez mes choix : surtout pas de projet à terminer (ça c'était pour avant la retraite, maintenant c'est la liberté) , rien que des tests sur des sujets qui m'intéressent comme comment obtenir des mesures correctes avec un LM35 au bout de 50 m de câble ou le dernier sur l'I2C où j'ai poussé 2 nano à 533 kHz.
Circonstance aggravante je suis un électronicien pur et dur, la programmation c'est depuis la retraite donc je ferai toujours du rase bitume par rapport à vous autres.

Pour revenir aux STM32 ça m'agassait de ne pas trouver de point d'entrée. Quand ça résiste il faut que ça plie.
En fait je visais trop haut je pensais faire comme avec Eclipse et les fonctions arduino .
Sauf que sur ma Debian Gnu-GCC était installé d'office , la tool chain avr étant installée "dans les règles de l'art" par le paquet Debian de l'IDE arduino. Eclipse retrouvait tout tout seul. Tout paraissait simple.

Avec le STM32 j'ai remis les pieds sur terre : il me fallait trouver un compilateur qui va bien avec les ARM et tout installer moi-même. Sans surprise je me suis rendu compte que cela dépassait mes compétences tant en informatique qu'en programmation.

En continuant mes recherches j'ai lu que ST avait sorti une carte Nucleo avec le même micro et qu'il était possible de transférer le fichier binaire généré par MBed dans la carte Ebay.

Il existe deux cartes quasiment aux même prix : une avec 64 k de flash, l'autre avec 128k (Maple-mini)
La carte Nucleo fait 128k. Avec la première il faut surveiller manuellement qu'on ne dépasse pas les 64k, MBed ne le dira pas.

Pour le moment je n' ai utilisé qu'une carte (64k) l'autre (128k) a été oubliée à 700 km d'ici donc, si vous le permettez, j'attendrai un peu pour la tester.

Point besoin de carte pour se familiariser avec la programmation à la sauce MBed.
On peut écrire et compiler sans carte.
Les bibliothèques me paraissent beaucoup plus orientée objet et c'est bien agréable pour la gestion des E/S.
C'est plus sympa d'écrire :
DigitalOut loupiote(PC_13) ; // déclaration de l'objet loupiote
//
loupiote = 1; ou loupiote = 0 ;

que d'écrire :

define loupiote 13

//
digitalWrite(loupiote, 1) ; ou digitalWrite(loupiote, 0) ;

Ce n'est qu'un exemple parmis d'autre, ah si il y a le classique prinf () qui est disponible aussi.

Il y a de quoi se perdre avec les référence des STM 32 de meme pour la mise en service, moi j'ai pris une version F4 mais la carte n'est pas encore arrivée..patience..

C'est sur qu'il y a plus de choix que chez Atmel.

Le truc pour avoir une idée de ce qui est utilisés par les "petits", c'est à dire Nous et je mets de coté la grosse industrie qui traite directement avec ST, c'est de consulter l'offre Ebay c'est un bon indicateur et le modèle plébicité est justement le F103C8T6 (ou F106RC8T6).

C'est vraiment pas mal ces petites choses. On m'a offert la nucléo F401RE qui utilise le STM32F401RTE6. J'aime bien le principe de glisser-déposer pour charger un programme.

Je viens de commencer a un peut toucher a STM32CubeMx et Eclipse, effectivement j'ai aussi l'impression de partir de 0, la complexité se fait ressentir.

Edit : Je crois qu'il va falloir lire un peut de bouquins.

Pour le moment j'en suis à compiler le logiciel st-link sous Linux.
J'ai trouvé et compilé la partie ligne de commande, reste à apprendre les différentes options.
Je n'ai pas trouvé comment avoir une interface graphique, j'avais compris qu'elle existait mais je commence à douter.

STM32CubeMx est impressionnant. Pour ceux qui ne connaissent pas encore c'est un logiciel autonome (Win uniquement) ou un plug-in pour Eclipse (indépendant de l'OS) qui permet graphiquement de générer des lignes de code pour configurer le micro (horloges , Entrée/sorties, port de communication, etc ).
Exemple : au centre de l'écran il y a le dessin du boîtier, quand on clique sur une pin on peut choisir parmis les nombreuses options :

  • numérique --> pull-up, pull-down, bande passante (basse, medium, élevée), drain ouvert, etc .......
  • analogique
  • I2C
  • SPI
    -UART
    etc
    Si j'ai bien compris chaque pin a 16 possibilités
    A la fin de la configuration on génère les lignes de code qui vont bien.

Les possibilités de redirection des fonctions sur différentes I/O sont assez impressionnantes.
A la limite on choisi l'emplacement qui arrange et on y redirige la fonction retenue.

Avec MBed on ne devrait pas à avoir à retoucher les différentes fréquences horloge internes à la puce. C'est comme avec arduino : c'est équilibré pour uniformiser au maximum .

Ce que je me propose de faire une fois ST-Link/Linux maîtrisé c'est d'afficher les différents réglages MBed comme je l'avais fait avec un atmega328p mais là il va y avoir plus de travail ne serait-ce que parce qu'un registre ARM 32 bits offre énormément plus de possibilités qu'un simple avr 8 bits.

68tjs:
Avec MBed on ne devrait pas à avoir à retoucher les différentes fréquences horloge internes à la puce. C'est comme avec arduino : c'est équilibré pour uniformiser au maximum .

Pour ceux qui ne souhaitent pas utiliser mbed ST propose un pack de librairies pour les périphérique de bases, I2C, SPI, UART, ..

http://www.st.com/web/en/catalog/tools/PF257901

Il faut télécharger le pack en bas de page, l'extraire et ouvrir si besoin le manuel des fonctions avec l'extension .chm (utilisé Sumatra PDF je vous conseille).

extension chm ->beurk !

Pour ce qui est du pack de biblis ST il faut aussi installer une toolchain.
Perso c'est là que ça coince.

Il faut installer un compilateur. Il en existe plusieurs mais en général il faut montrer patte blanche pour les télécharger. Il existe bien GNU GCC arm mais que faut-il charger exactement ?
On ressent une forte odeur de professionnalisme avec les ARM et les explications sont rarement pour les neuneux.

C'est pourquoi dans un premier temps j'ai mis en sommeil la solution Éclipse au profit de MBed.
Cela permet de faire immédiatement quelque chose, Une fois les bases acquises il sera plus facile de revenir sur le trio éclipse/gcc-arm/bibliothèque ST.

Mais si tu veux nous faire un tuto avec ce trio nous serons nombreux à te lire avec attention.

une avec 64 k de flash, l'autre avec 128k

Bonjour 68tjs,
peux-tu nous mettre les liens
(pour le besoin de 128k, on ne sait jamais)
merci !

Pour ce qui me concerne, sous le conseil d'un fameux jeune forumiste blogueur, j'utilise les outils suivants :

  • IDE CooCox : gratuit, illimité, relativement bien fait. J'ai eu du mal à l'installer.

  • programmateur, en fait débogueur cloné seger édu : ne tue pas la led et le serial out, mais devient vite indispensable. Fini le bootloader !
    Un autre must have est l’analyseur (cloné, aussi ...) saleae. A ce niveau, on apprécie voir ce que l'on fait.

  • concernant les puces, j'ai commencé par un break out de stm32f103c8t6, avec les broches vers le haut pour une utilisation sur table. Le débogueur ne nécessite que 2 fils + gnd.
    Puis je suis passé au non moins populaire stm32f030f4p6. Après avoir pu souder le minuscule tssop20, j'ai réalisé des cartes perso.
    Malgré la pléthore des différents fabricants, ces 2 puces couvrent mes besoin à moyen terme.

Attention, malgré les difficultés, les avantages font que revenir vers l'avr me parait impossible. Ceux qui, à l'époque, sont passé du pic à l'avr me comprennent.

Commencer l'arduino coute 2 à 3 euros... Pour l'arm, sur les bases que j'ai décrites, c'est 10x plus.
Idem pour l'investissement perso
Idem pour l’efficacité, la satisfaction ...

Bonjour,
Des liens non, trop éphémères.
Mais des photos oui.
Mot clé de recherche : "STM32"
Les prix : à la louche comptez 4€ par module.

  1. le programmeur :
    Faite gaffe il existe deux versions de circuit imprimé avec un brochage différent mais 1 seul capot donc 50% de possibilité de faire un court-circuit..
    Même si ce n'est pas léthal, la prudence vous fera glisser le capot et vérifier que le brochage gravé sur le capot correspond bien à celui du circuit imprimé.

St-link.jpg
2) Ce que j'appelle le modèle Ebay de base
STM32F103C8T6
Flash = 64 k
Sram = 20 k
Notez les cavaliers jaunes à déplacer pour la programmation.
BOOT0 semble suffire, inutile de toucher à BOOT1 --> c'est ce que j'ai compris mais comme on dit SGDG.
stm32ebay.jpg

  1. Ce que j'appelle Ebay mapple-mini
    STM32F103CBT6
    Flash = 128 k
    Sram = 20 k
    Notez le poussoir à enfoncer pendant la programmation il est relié à BOOT0
    stm32_mapple_mini.jpg

Je mets aussi en pj les schémas électriques.
Vous pourez voir que la version Mapple est bien plus sérieuse coté mesures analogiques. Non seulement les alim VDD et VDD_A sont séparées mais un régulateur 3,3V est réservé à l'analogique

Je n'ai pour l'instant programmé que le premier. J'ai actuellement un soucis pour afficher des résultats sur le PC --> symptome (visible) : ma Debian refuse de reconnaître l'USB de la carte.
Investigation en cours.

maple_mini_schema.pdf (24.3 KB)

Schema_stm32_min_system_dev_board.pdf (19.8 KB)

for me = 0 to 1000
merci;
next

l'USB de la carte

je crois que c'est de loin le plus difficile
désolé de ne pas pouvoir t'aider sur ce point

Pas de chance j'allais te poser la question :o .

J'ai quand même affiché ce que je voulais sur le PC : puisque l'USB de la carte fait son mauvais caractère je l'ai laissé bouder et j'ai sorti du tiroir une interface USB/TTL : l'USART1 fonctionne bien et les E/S tolérantes au 5 volts sont bien pratiques.
L'USB est un problème chi*nt mais vu mon état d'avancement, et à partir du moment où j'ai une solution pour écrire à l'écran cela reste très secondaire.

J'ai relevé tous les registres de configuration de l'horloge tels qu'ils sont après une programmation Mbed.
J'ai maintenant la cartographie des horloges.
Je ne vois pas l'horloge USB comme activée, il y a il y aura peut être une piste à voir de ce coté.

J'ai quand même une question sur BOOT0 et BOOT1
BOOT1 effectivement son état importe peu pour la programmation
BOOT0 à l'air de fixer le début de la zone d'écriture du programme dans la flash soit 0x00000 (BOOT0 = 0) soit 0x8000000 (BOOT0 = 1).
Je ne l'ai pas lu clairement, mais avec BOOT0 = 0 on devrait effacer le bootloader : vrai ou faux ?
A partir du moment où on utilise le protocole ARM swd (STLink) à quoi sert le bootloader ?

Et ce que je crois avoir compris c'est qu'avec la ligne de commande STLink :

$st-flash write test.bin 0x8000000

on écrit obligatoirement à partir de 0x8000000 quelque soit la position de BOOT0, ce qui évite de s'embêter avec le cavalier ou le poussoir.

Quand pense-tu ?

.

68tjs:
Mais si tu veux nous faire un tuto avec ce trio nous serons nombreux à te lire avec attention.

C'est deja fait :

Merci,
Bon je préfère Rabelais à Sheakspeare mais ça ira

(Rha la la jamais content :grin: ).

Plus sérieusement je me demande ce qu'on peux vérifier avec GDB.

A partir du moment où on utilise le protocole ARM swd (STLink) à quoi sert le bootloader ?

à rien. Je raccorde boot0 au gnd sans autre forme de procès.
On peut peut-être s'en servir comme IO, par exemple raccorder une LED qui assure le 0v à la mise sous tension, puis le configurer en sortie pour allumer la LED. Mais je n'en ai jamais eu besoin.
Je me sers d'office du swd car il permet le débogage.

Cube : pas mal, mais j'ai conservé mes tableaux excel pour avoir une vue globale des localisations possibles des périphériques sur les pins.

USB : j'ai juste vu que st propose une démo pour ses cartes d'évaluation. C'est transposable sur le maple.

Achat de modules : il y a donc au moins 3 modèles différents : les 2 que tu as illustré + celui du schéma. Ils se différencient notamment au niveau des alims, à vigiler si on y est sensible. Je n'ai pas trouvé les schémas en ligne.
En format Uno : Iteadmaple à 5$80.

Bonjour,

Quote

A partir du moment où on utilise le protocole ARM swd (STLink) à quoi sert le bootloader ?

à rien. Je raccorde boot0 au gnd sans autre forme de procès.

Tu confirme ce que je pensais, ce n'est pas la peine de se prendre la tête pour rien.

USB : j'ai juste vu que st propose une démo pour ses cartes d'évaluation. C'est transposable sur le maple.

Ce que je n'ai pas compris c'est que comme je compile à partir de MBed je ne devrais rien avoir à faire cela devrait rouler tout seul, sauf si le F103RB était différent du F103C8 mais je ne vois pas où.
J'ai une carte Nucléo (pas de bol ce n'est pas une F103) et l'USB fonctionne direct.

Je devrais récupérer une carte Mapple (F103CB)et je verrais si les deux cartes ont le même soucis où si c'est seulement celle aux cavalier jaunes.
Rappel ;
C = boîtier 48 broches
R = boitier 64 broches

8 = 64 k flash
B = 128 k flash

En format Uno : Iteadmaple à 5$80.

Je n'apprécie pas le format UNO, ni par conséquent le format Nucléo.
ST vient de sortir des cartes "full" Nucléo au format "quasi" nano et annonce une compatibilité pin à pin.
C'est seulement du Cortex M0 comme justement les Zero/M0-pro, cela peut faire mal à Arduino. Bon ils ont réduit la surface de circuit imprimé par au moins 10 et n'ont pas baissé le prix mais celà peut donner des idées coté Asie.

Le problème vient peut-être du hard (méthode de mise au gnd d'une ligne usb pour forcer la demande d'énumération), alors sans doute alors contournable par une modif de la tempo

vérifie que c'est la même pin qui est affectée cette fonction, ce n'est pas nécessairement le cas

J'ai commandé 2 modules jaunes (2€45), d'ici là tu pourras me dire la méthode ;D

d'ici là tu pourras me dire la méthode ;D

beuh moi c'est (plutôt c'était) : bande passante, linéarité de phase, taux d'erreur binaire, rapport signal sur bruit, gigue chirp (laser), couplage optique, dispertion de polarisation etc.. mais alors pas du tout la programmation et encore moins l'énumération USB où je ne connaîs strictement rien d'ailleurs je ne connaissais même pas ce nom c'est dire.

Je pense que la solution viendra plutôt de toi :wink: .
Juste une précision : je n'ai jamais vu de prise USB d'aussi mauvaise qualité, ce n'est sans doute pas la raison principale mais cela sème le doute.