En cours soucis communication usb avec des stm32f103c8

  • Auteur de la discussion Doctor_itchy
  • Date de début
D

Doctor_itchy

Compagnon
hello :)

bon voila j'ai un soucis avec mes projet stm32

il faut savoir que j'ai passer un stm32 avec un bootloader arduino (plus simple pour faire le proto et mise au point )

donc le stm32 est flasher avec un bootloader arduino et je peu programmé le stm a la volée avec sont connecteur usb sur la carte

mon code "fonctionne" tres bien mis a part le monitoring serie ...

en effet ce code permet de géré 2 moteur servo dc stepper 3phase et un servo dc classique ,et il a besoin d'un port serie pour etre configuré (pid et co pour les 3 moteur )

actuellement j'ai donc l'usb présent sur la carte en com8 avec maple mini , ça fonctionne je peu programmé a la volée mais pas moyen de faire sortir le moindre data du code par la , par contre en branchant une ftdi sur A2 et A3 et en configurant sur serial2 je peu configuré mon module !

l'idée etant que cela marche sur le port usb principal , pour savoir uploader et monitoré avec un seul port usb (comme sur un nano par exemple )

si c'est possible et si oui comment , car j'ai beau mettre serial ,serial1 , serial2 , serial3 j'ai rien sur la sortie usb ! , je penche sur le fait que le bootloader bloque le port usb , donc peu etre un bootloader spécifique ?? je ne trouve rien de probant sur le net :/

si vraiment pas possible je devrais laisser un module ftdi en plus sur le projet uniquement pour la configuration :(

merci :)
 
S

simon74

Compagnon
Pas certain qu'on peut utiliser USB comme port serie sans tout un stack USB, de memoire c'est USB CDC Serial.

Edit - peut etre SerialUSB.write() et amis au lieu de Serial.write()?
 
D

Doctor_itchy

Compagnon
oui un usb cdc , j'ai déja une bonne base en codage "arduino" mais le stm j'y suis depuis 4 jour seulement :) , je conde via l'arduino ide et j'upload dans la foulée via le bootloader stmduino, ceci pour le proto une fois au point j'en ferais un fichier hex que j'uploaderais avec le stlink pour effacer le bootloader arduino :)

actuellement j'ai déplacer le port usb qui etait sur des sortie pwm vers serial3 qui lui est sur des sortie classique (car j'ai besoin d'un max de sortie pwm pour ce projet çi ) et ça marche aussi par la !

le port usb souder sur le uc est lui libre aussi (y avais ses pin utilisée pour autre chose mais je l'ai libérée car ça plantais la connection quand on utilisais les bouton brancher dessus lol )

je n'ai pas tester SerialUSB , pour mes ligne de texte j'utilise Serial3.print et println , j'ai tester Serial.print mais ça ne fonctionne pas non plus

je vais tenté donc SerialUSB , apres je soupconne le bootloader de "bloquer" le port usb pour maple ! je pensais qu'il existait un firmware bootloader pour avoir une fonction similaire a par exemple le nano ou tu peu programmer et monitorer en meme temps :)

ou alors je change encore les pin pour branché en A9 et A10 pour monitoré et envoyer le code hex direct (faut juste bouger Boot0 a chaque fois normalement )

mais j'ai un encodeur sur A9 et A10 qui utilise le timer et je n'ai pas d'autre pin avec ce timer il me semble ^^

le code est sur base du boulot de mislan pour géré 3 moteur DC en SERVO , ça marche tres bien d'origine avec les 3 axe simultaner ! mais j'ai modifier le tout en profondeur car j'ai un set de 2 moteur pas a pas tres spécifique et un drivers spécifique qui demande un controle tres different ( 3 phase unipolaire a reluctance variable + sortie pwm de gestion courant bobine + sortie Flag pour diminuer le courant a chaque changement de status de phases ) et il ont des encodeur AB , en gros il sont commander en vitesse et fonctionne comme des BLDC mais sans inversion de phases , moteur et carte puissance venant d'un vieux traceur HP 7595 :) , donc un stm et quelque ic d'adaptation de tension (sortie 3.3v sur stm mais entrée 5V sur carte puissance :) ) le 3eme axe est branché sur la carte de puissance aussi mais sur la partie "electroaimant" qui fonctionne avec un moteur dc aussi :) les deux stepper pour x et Y et le petit dc pour le focus (découpeuse laser totalement diy et Récup :D
 
S

simon74

Compagnon
Je suis en train de telecharger le IDE arduino, j'ai des maple mini dans le tiroir. T'as mis quoi comme bootloader?

[edit]

Je confirme, le dernier arduino code que j'ai fait, pour le maple mini, utilisait USBSerial (c'etait un "one shot" digital storage oscilloscope)
 
Dernière édition:
D

Doctor_itchy

Compagnon
j'ai mis celui que l'on trouve sur les tuto et sur github :)

j'ai tester serialUSB ça met une erreur sur l'ide

j'ai trouver un autre bootloader qui d'apres lui se comporte comme si le stm etait un arduino classique , je testerais demain :)

la j'ai un autre soucis , le code va supppperrr bien hormis l'usb pas au bon endroit
mais des que je met accelstepper pour géré mon moteur ça se complique , parfois ça fonctionne impec 1h parfois ça plante direct , en gros j'ai tout qui va (2 autre moteur dc servo dessus , mais plus rien sur le moteur 3 phase , accelstepper fait planter le timer .... ça doit surement etre un timer , vu que mon code en utilise pas mal et que accelstepper aussi sans doute , je vais devoir codé en "dur" un code stepper spécifique , les neurones vont encore chauffer ^^

j'ai tester ce soir pour le fun des driver "glentek" servo amplificateur entrée 5-6V dc avec tension a 6.2V pour le "off" et variation de vitesse sur a peine 1 volt pour chaque sens ! un petit peu de composant pour avoir la bonne tension a partir du 3.3V pwm et , ça marche presque , faut que je revois la commande pour que le 0 soit a 2048 en pwm :) (moitier vitesse ) et plus 0 ! et malgrez les test rien ne plante

j'ai du raté un truc avec les timer , mais en gros 2 timer sont pour les pulse pwm des moteur et les 2 autre pour deux encodeur et le 3eme encodeur est un timer "software" donc accelstepper doit pomper sur un des timer et le mettre a terre je vois que ça :(
 
D

Doctor_itchy

Compagnon
hmm je peu tenter cet après midi :)

mais je vais tester le bootloader que j'ai indiquer au dessus , car il faut que le code fonctionne aussi quand je ferais un hex et que j'irais l'uploader direct avec le stlink ^^ , encore des essais :D

sinon j'ai reussis avec succes a géré les drivers glentek ce sont des vieux drivers dc de 1970 alim + et -24V avec ov , entrée 6.2V pour moteur couper et +- 0.5V pour le sens et vitesse (ça viens d'enregistreur ampex ) j'ai donc un code fait pour ceux la , un code pour controler des pont en H avec deux entrée pwm , et celui d'origine pour deux sortie dir et une pwm (pour du l298) et la pour ses fichu moteur spécifique hp 3phase c'est en cour :) , mais j'ai codé a la mains un code "demispas" avec fonction delay , ce n'est pas top mais ça tourne (impec jusque 980hz , apres un des pulse se déforme ) donc reste a revoir ça plus propre :)
 

Sujets similaires

vax
Réponses
11
Affichages
12 105
vax
wika58
Réponses
261
Affichages
18 609
midodiy
midodiy
El Zorro
Réponses
12
Affichages
578
El Zorro
El Zorro
Dudulle
Général langage MMBASIC
Réponses
8
Affichages
883
Dudulle
Dudulle
osiver
Réponses
14
Affichages
36 192
osiver
osiver
K
Réponses
10
Affichages
805
Kmillo
K
G
Réponses
10
Affichages
872
Geo0779
G
V
Réponses
3
Affichages
1 081
vibram
V
laurenttanguy
Réponses
0
Affichages
487
laurenttanguy
laurenttanguy
N
Réponses
1
Affichages
806
petit_lulu
petit_lulu
A
Réponses
3
Affichages
1 626
titi t16
titi t16
N
Réponses
8
Affichages
1 496
dh42
Haut