Martin Schwaikert schrieb:> STM32-Interessent schrieb im Beitrag #3891765:>> Vor allem würde mich interessieren, wie man den µC programmiert,>> Über USB.
SWD-Schnittstelle ist auch rausgeführt.
Bist du dir da sicher?
Auszug aus der Beschreibung:
"On-board Mini USB interface, you can give the board power supply and
USB communication."
Unter USB-communication hätte ich jetzt eher an eine gewöhnliche
Schnittstelle zur Kommunikation mit einem PC gedacht.
Oder funktioniert das beim anderen Board, das ich oben angeführt habe
auch über USB (also die Programmierung), zusätzlich hat das andere Board
auch ein JTAG-Interface (Debugger?).
Und über die serielle Schnittstelle geht's notfalls auch ;)
Das ist eine Abwandlung des Leaflab Maple:
http://leaflabs.com/docs/ide.html
Kann man aber auch wie einen richtigen STM32-ARM programmieren. Etwa mit
Eclipse, ARM-GCC, passender CDT, Standard Peripheral Lib, ...
Das andere Board mit JTAG ist für den Anfang ganz ok, aber billigste
Komponenten verbaut (schlechte Kondensatoren und so). Ist insbesondere
beim ADC nervig.
Besser sind die JM Electron-Boards! Da muss man gegebenenfalls einen
32kHz-Quarz und Kondensatoren nachlöten, aber die USB-Anbindung ist per
Jumper deaktivierbar, die Anschlüsse besser zugänglich (einreihige
Pin-Header), ...
Oder man kauft das Ding gleich direkt bei ST. Dann hat man wenigstens
die entsprechend gute Qualität. Abgesehen davon, dass ST wahrlich nicht
gierig ist.
Noch ein paar kurze Fragen zur Programmierung dieser µCs:
(sorry, ich war µC-mäßig bis jetzt nur mit PICs in Kontakt und da habe
ich Eigenbaubrenner verwendet) :-)
Gibt es Einschränkungen, wenn man den uC über USB programmiert?
Braucht man dazu einen Bootloader?
Wozu hat das andere Board ein JTAG-Interface zusätzlich verbaut - kann
man über JTAG etwas machen, was man über USB nicht machen kann, oder ist
das einfach ein zusätzliches Feature?
Kann man über USB auch debuggen, oder geht das nur über JTAG?
>Kann man über USB auch debuggen, oder geht das nur über JTAG?
Das debuggen geht über SWD bei dieser Platine.
Also brauchst du noch einen ST-LinkV2.
Über den USB Anschluss kannst du da nicht debuggen.
Du könntest dir aber auch gleich ein STM32F4-Discovery
kaufen. Kostet keine 16Euro, ST-Link ist mit drauf.
dummy schrieb:>>Kann man über USB auch debuggen, oder geht das nur über JTAG?>> Das debuggen geht über SWD bei dieser Platine.> Also brauchst du noch einen ST-LinkV2.> Über den USB Anschluss kannst du da nicht debuggen.> Du könntest dir aber auch gleich ein STM32F4-Discovery> kaufen. Kostet keine 16Euro, ST-Link ist mit drauf.
Gute Idee, das STM32F4-Discovery wollte ich mir sowieso kaufen. :-)
Ich wollte aber noch ein kleineres, das ich in einem Flugmodell
unterbringen kann. ;-)
Aber: Wenn ich nicht debuggen will, bräuchte ich keine zusätzliche
Hardware, wenn ich das Ding über USB programmiere. - Ist das richtig?
Bin da ganz bei Martin und dummy - zum Einstieg ist eine STM32-Disco
sicherlich die beste Wahl, da dort SWD onboard ist (und sich die Boards
dann für weitere µCs als SWD-Connector nutzen lassen) und die Qualität
der verbauten Komponenten stimmt. Es muss nicht gleich eine F4xx-Disco
sein, kleiner Anfang gelingt auch etwa mit der F0-Disco zu 9 Euro.
... voll die Diashow hier ;)
Klaro ist die F429-Disco klasse. Da er jedoch kleine Boards sucht für
den Fliegerbetrieb, und dazu noch preisbewusst rausgesucht hat, dachte
ich, passe ich die Vorschläge mal an die Anforderung an.
Martin Schwaikert schrieb:> Abgesehen davon, dass ST wahrlich nicht> gierig ist.
Da muss ich mir mal selbst zustimmen - soeben mein kostenloses STM8
Päärchen (LIN Sender und Empfänger) bekommen. Danke ST :)
Danke für die Infos.
Eine letzte Frage habe ich noch:
Ich habe gerade den STM32-Artikel hier überflogen.
Gesetzt den Fall, dass ich mich für die "Coocox Eclipse IDE" entscheide:
Gibt es nun ein frei verfügbares Software-Tool (möglichst für Windows)
zur Programmierung über USB?
"stm32flash" z.B. ist nur für UART und I2C geeignet.
ST-Link und viele andere JTAG/SWD-Adapter werden von OpenOCD
unterstützt. Der Bootloader im STM32F103 kann prinzipiell nur UART,
damit macht es keinen Spaß (kein Debugging etc).
Putin schrieb:> Tool für USB von ST:> http://www.st.com/web/en/catalog/tools/FM147/CL179...> Geht mit Controllern die ein DFU Bootloader haben, f103 hat das nicht.> http://www.st.com/web/en/resource/technical/docume...>> Außerdem must du dein .hex file erst in ein .dfu file konvertieren, zum> entwickeln völlige Bremse.>> Würde mir ein ST-Link2 Stick für 3€ kaufen. Man kann zwar den ST_link> vom Discoxxx nehmen ... aber richtig toll ist das nicht.
Sehr gut, danke sehr!
STM32-Interessent schrieb im Beitrag #3891765:
> kennt dieses kleine Board irgendjemand hier:> STM32F103C8T6 ARM STM32 Minimum System Development Board Module For> Arduino> Ebay-Artikel Nr. 311156408508
Hat schon jemand einen Schalplan für das Board ausfindig gemacht?
Habe den Chinamann angeschrieben, der hat aber seit 1 Woche nicht
geantwortet
Leider habe ich noch keinen Schaltplan gefunden!
Aber das kann ich anfügen (ein Poster oben hat das auch schon erwähnt -
das scheint eine ähnliche Version zu sein):
http://static.leaflabs.com/pub/leaflabs/maple-docs/latest/hardware/maple-mini.html
Gestern ist auch das ST-Link V2 angekommen.
Nach einem Firmwareupdate (über das STM32 STLink-Utility) habe ich
gleich ein LED-Blink-Testprogramm getippt und gestartet.
Funktioniert hervorragend - und auch das Debugging ist im Coocox
komfortabel ohne gröbere wahrnehmbare Delays möglich.
Sehr schön, wenn ich so zurückdenke, wie ich mit 8-Bit PICs vor Jahren
begonnen habe, und jetzt...
- gibt es endlich DMA :-), bei den 8/16-Bit-PICs war das ja eine
ziemliche Bremse, Sensoren z.B. über I2C ohne DMA auszulesen.
- kriegt man wesentlich bessere ICs fertig auf einer Platine inkl.
Programmer für unter 10 Euro (gut - aus China, aber
Original-Discovery-Boards sind ja auch in diesem Bereich).
Danke nochmals für die Infos!
Eddy Current schrieb:> Hi, ich benutze auch diese Leiterplatte, ist ein feines kleines> Teil.>> Im Anhang ein rückwärts entwickelter Schaltplan.
Vielen Dank dafür. Ich habe dieses Board auch für einige private Dinge
in Benutzung.
Eddy Current schrieb:> Im Anhang ein rückwärts entwickelter Schaltplan
Interessant! Der feste USB pullup R10 war mir schon immer laestig beim
entwickeln von USB-Anwendungen, und R2 sollte wohl auch besser
rausgeschmissen werden (der STM32F103 hat einen internen pullup).
Danke fuer den Schaltplan!
Hallo,
ich habe das Teil mal zum experimentieren als Mapleminiclone gekauft.
Brauch man für den USB Anschluß einen speziellen Treiber? Bei mir kommt
immer die Meldung "Unbekanntes USB Gerät". Hier habe ich auch noch eine
Beitrag gefunden zur Programmierung über die serielle Schnittstelle.
http://www.rogerclark.net/stm32f103-and-maple-maple-mini-with-arduino-1-5-x-ide/
MfG
Hans
Hallo,
ich mache auch gerade erste Versuche mit dieser kleinen Platine.
Ein richtiges Datenblatt finde ich aber nicht.
Geht es nach wie vor allen so oder habe ich nur etwas übersehen?
Für den Anwendungsfall würde ich dir ehr ein STM32F334 Nucleo empfehlen.
Den gibt's als Chip auch im 32poligem Gehäuse das sich einigermaßen gut
löten lässt. Durch die FPU sind viele Sachen die auf kleinen Controllern
mit Festkomma und viel Trickserei erledigt werden müssen schneller in
float gerechnet. sinf bei 64MHz gibts für unter 2µs. Die Nucleos haben
eine virtuelle COM-Schnittstelle über den USB Treiber, ich glaube das
alte F4 Disco hat das nicht. Macht sich beim Entwickeln immer sehr gut.
Torsten C. schrieb:> Datenblatt + Referenzhandbuch> https://github.com/TorstenC/Notizblog/wiki/STM32FxxxC8T6>> Da ist auch der Schaltplan-Link zuück in diesen Thread^^.
Danke, das bringt mich bedingt weiter.
Dieser Schaltplan suggeriert mir aber, dass eine Spannungsversorgung des
Chips über die SWD-Schnittstelle möglich ist. Das kleine Board sagt aber
nein ;)
Ich gehe von aus, dass ich noch 5V rüber führen muss, ehe mir
STlinkGDB.exe keinen Timeout mehr bringt?
Eine erneute Frage zu dem Board:
Auf den Stromlaufplan weiter oben beziehend müssten zwischen CN2-SRP20
PIN 2 und 3 ja 5V anliegen ....
ich messe hier aber nur knapp 3 mit dem Multimeter.
Gibt es da noch irgend einen Trick dabei?
Torsten C. schrieb:> Blöde Frage: Versorgst Du mit 3,3V oder mit 5V?
mit beidem ;)
über swd kommen die 3,3V mit, die 5V gibts gratis oben drauf ....
bringe die jetzt über die micro-USB-Schnittstelle rein, das ist recht
zuverlässig bis jetzt
Torsten C. schrieb:> Also Ausgang auf Ausgang? Na denn…
wieso Ausgang auf Ausgang?
Laut dem Stromlaufplan weiter oben im Thread sollte es relativ egal
sein, wie ich das Potential rein bringe, solange ich es an 5V anlege.
Weitere Informationen zu der Platine habe ich leider nicht, wenn du mir
da weiter helfen kannst: sehr gern.
das Ursprüngliche Problem war nur ein Wackler in nem Steckbrett was ich
verwendet habe. Das ist behoben und die Potentiale können korrekt
gemessen werden.
hab jetzt auch mit dem "Minimum board" vom Chinesen (3,40$ wie machen
die das ??) gespielt..
nach 1-2 Stunden einlesen, hat es tatsächlich funktioniert (mit
funktioniert ist, es BLINKT gemeint ;-)
@Hans Lang
mach braucht den bootloader (hast du wohl schon)
https://github.com/rogerclarkmelbourne/STM32duino-bootloader
(muss per usb-Serial adapter flashed werden)
wenn die Arduino IDE + STM32 erweiterung installiert hast
ist der Treiber dann unter:
\hardware\Arduino_STM32\drivers\win
es funktioniert der COM port aber nicht sofort (was mich viel zeit
gekostet hat) bis ich rausgefunden habe, dass das egal ist, und man das
"sketch" trotzdem per USB Programmieren , und DANN erst wird der
Virtualle COM-Port installiert.. also nachdem man das 1. sketch uploaded
hat..
Mir war die ganze Zeit gar nicht bewusst, dass die STM32 Minimum Boards
keine Pin-kompatiblen Maple Mini Clones sind.
Abgesehen davon das die "richtigen" Maple Mini Clones (z.B. "Baite") den
größeren Chip mit 128kB Flash haben gibts da ja doch noch eine ganze
Menge an unterschieden. Auf den ersten Blick wären das:
Maple Mini STM32 mini
Mini-USB Micro-USB (der angeblich gerne mal abbricht)
dicker LDO winziger LDO
zwei Buttons nur ein Button
keine zus. zwei Jumper (wofür auch immer die gut sind)
Jumper
SWD nicht zus. SWD-Pins zusätzlich
herausgeführt herausgeführt
aber vorhanden
(PA13, PA14)
kein RTC-Quarz RTC-Quarz
Bei den Pin-Outs fällt mir auf, dass beim Maple-Mini noch die analogen
Referenzpins herausgeführt sind (zwei mal GND beim STM32 Mini). Dafür
hat das STM32 Mini noch den PB9, den man mit PB8 zusammen als CAN Pin
remappen kann, da der CAN sonst auf den USB-Pins liegt.
Eine Übersicht über die unterschiedlichen Pinouts habe ich hier
gefunden: http://stm32duino.com/viewtopic.php?f=28&t=37&start=10#p723
Ecki schrieb:> Eddy Current schrieb:>> Im Anhang ein rückwärts entwickelter Schaltplan>> Interessant! Der feste USB pullup R10 war mir schon immer laestig beim> entwickeln von USB-Anwendungen, und R2 sollte wohl auch besser> rausgeschmissen werden (der STM32F103 hat einen internen pullup).>> Danke fuer den Schaltplan!
Kann das jemand bestätigen? Ich habe nachdem ich den Pullup
runtergenommen habe, gerade feststellen müssen, dass dies nur bei
OTG-USB-Schnittstellen im STM so ist (ab F105/F107).
Benny schrieb:> dass dies nur bei> OTG-USB-Schnittstellen im STM so ist (ab F105/F107).
Vermutlich sprichst Du von R10.
R10 wird benötigt. Dieser signalisiert dem Host, dass ein USB FS Gerät
angeschlossen ist. Das Problem mit R10 ist, das Du mit dessen
Vorhandensein keinen USB-Disconnect durchführen kannst (um z.B. einen
anderen USB-Stack hochzufahren). In so einem Fall muss man R10 schaltbar
machen. D.h. nicht auf VCC legen, sondern mit einem I/O verbinden, über
welchen R10 dann beliebig geschaltet werden kann.
Christopher Johnson schrieb:> Maple Mini STM32 mini
Danke für die Übersicht!
Zu den Unterschieden möchte ich noch anmerken, dass der Maple Mini
sicherlich die bessere Wahl für Leute ist, welche im Arduino-Universum
unterwegs sind.
Das STM32 Mini-Board hat mit dergleichen eher nichts am Hut und ist für
Programmierer geeignet, welche ihr System "from Scratch" aufsetzen. Die
wissen dann auch mit den Jumpern umzugehen, bzw. klinken sich über SWD
auf den Prozessor.
Entscheidender Unterschied ist, dass im Maple Mini ein Bootloader für
Arduino vorprogrammiert ist, was beim STM32 Mini-Board nicht der Fall
ist.
Virtueller User möge schreiben:
>Den Bootloader kann man aber nachprogrammieren!
Richtig. Wenn Du das kannst, steht Dir die Welt in alle Richtungen
offen.
Eddy C. schrieb:> R10 wird benötigt. Dieser signalisiert dem Host, dass ein USB FS Gerät> angeschlossen ist. Das Problem mit R10 ist, das Du mit dessen> Vorhandensein keinen USB-Disconnect durchführen kannst (um z.B. einen> anderen USB-Stack hochzufahren). In so einem Fall muss man R10 schaltbar> machen. D.h. nicht auf VCC legen, sondern mit einem I/O verbinden, über> welchen R10 dann beliebig geschaltet werden kann.
Geht auch anders, nur via SW und ohne extra Schaltung:
https://github.com/rogerclarkmelbourne/STM32duino-bootloader
Man kann PA12 kurz als GPIO konfigurieren, auf low schalten, und dann
zurück als USB-Pin konfigurieren.
Ich habe eine deutschsprachige Anleitung zur Installation von STM32Duino
und zum Flashen des Bootloaders geschrieben. Vielleicht hilft es ja
jemandem...
Den Bootloader 2.0 kann man auch wesentlich einfacher flashen, ist
jedoch riskant, wenn man kein Upload-Tool (STlink 2 oder so) zur Hand
hat (falls etwas schief läuft):
https://github.com/rogerclarkmelbourne/STM32duino-bootloader/blob/master/STM32F1/maple_mini_bootloaer_updater/maple_mini_bootloaer_updater.ino
Einfach den Sketch auf den mini (!!! - bitte nicht für andere Boards
verwenden - sonst Pin-Konflikt) uploaden, ausführen, Befehlen folgen,
Reset und dann unter "Tools" den "Bootloader 2.0" verwenden. Bei manchen
ist es vorgekommen, dass sie den ersten Sketch noch mit Bootloader 1.0
flashen mussten, kann ich nicht nachvollziehen (denk mal, dass sie kein
ordentliches Reset gegeben haben), aber bei Problemen es so versuchen.
Habe gut 20 Minis damit geflashed (aus Faulheit) ohne Probleme.
Ich habe jetzt auch auch so einen hier (STM32F103C8T6)
https://www.mikrocontroller.net/attachment/273587/2.jpg
vor mir liegen. Außerdem hab ich mir auch einen ST-Link V2 besorgt.
Installiert habe bisher die "stlink" tools - jetzt fangen die Fragen
erst so richtig an.
Diese Video scheinen erst einmal hilfreich um mit Arduino zu starten:
https://www.youtube.com/watch?v=Ze6q6NidS5whttps://www.youtube.com/watch?v=G_RF0a0hrak
Aber was sollen die beiden Jumper?
Boot0 und Boot1 - was machen die?
Und warum per Serial programmieren?
Kann man auch per USB programmieren?
Für ST-Link nehme mal an
Board ST-Link
DIO <-> SWDIO
GND <-> GND
DCLK <-> SWCLK
3.3V <-> 3.3V
und dann sollte "st-util" was finden?
Ohne Board bekomme ich nur:
2016-04-13T23:38:33 INFO src/stlink-usb.c: -- exit_dfu_mode
2016-04-13T23:38:33 INFO src/stlink-common.c: Loading device
parameters....
2016-04-13T23:38:33 WARN src/stlink-common.c: unknown chip id!
0xe0042000
Dann cross-compilen und mit "st-flash" schreiben?
Gruss,
Torsten
Andreas R. schrieb:> Per USB kannst Du nur programmieren, wenn Du nen Bootloader drauf hast,> der das unterstützt. Die meisten stm32 kommen wohl ohne diese Funktion.> Du kannst aber z.B. den stm32duino Bootloader drauf machen. Der kann das> z.B.
Vielleicht eine doofe Frage - aber wie bekomme ich den drauf?
Ich hab das gefunden:
https://github.com/rogerclarkmelbourne/Arduino_STM32/wiki/Bootloader
"Currently the only way to install the new bootloader is to flash your
board using USB to Serial or STLink (or another SWD device e.g. JTAG or
Black Magic Probe etc)."
Liegt der einfach an einer fixen Position (z.B. ganz am Anfang) und das
Programm kommt dann später?
> Beitrag "STM32 Boot0 / 1"
Hilfreicher Thread - Danke!
Besonders der Verweiß aufs Manual :)
http://www.st.com/web/en/resource/technical/document/reference_manual/CD00171190.pdf
x0 Main Flash memory
01 System memory
11 Embedded SRAM
Mal eine Frage:
Der USB-Pullup R10 ist auf der Platine mit 10k vorhanden. Müsste der
nicht laut Spezifikation für USB2.0 nur 1k5 haben? Funktioniert es auch
mit den 10k?
Hatte irgendwo von Problemen mit den Pullups gelesen und die in einem
Board dann irgendwann mal ausgetauscht. Macht keinerlei Unterschied,
funktioniert bei mir mit beiden Varianten (bei Zimmertemperatur, habe da
keine Extreme getestet).
mit ST-Link stimmt
aber das Visual Devlop ist doch nur fpr ST8 und nicht STM32 Conrtoller
gedacht.
Aber wenn du eine IDE suchst, hier wiki sind sehr viele aufgelistet.
Tony schrieb:> Der USB-Pullup R10 ist auf der Platine mit 10k vorhanden. Müsste der> nicht laut Spezifikation für USB2.0 nur 1k5 haben? Funktioniert es auch> mit den 10k?
Bei mir nicht, ich hab' 2k2 drauf gelötet, passt.
Max M. schrieb:> Das Board lässt sich, nehme ich mal an, ganz normal mit ST-Link und ST> Visual Develop nebst passendem Compiler programmieren?
So wie ich meine Arduinos über USBASP progge muss bei den MInimum System
Boards ein ST-Link herhalten.
Allerdings musst Du entscheiden, ob Du den Bootloader nutzen möchtest
oder nicht, im normalen Betriebsmodus über die "STM32duino"-IDE wird der
Bootloader bei der Auswahl "ST-Link" als Programmiergeträt
überschrieben.
Die Installation des ST-Link Flash-Utilitys von STM für ist nie
verkehrt.
Ich experimentiere auch gerade mit diesem Board (Eclipse, GNU-ARM
plugins, OpenOCD). Mit CAN und I2C habe ich erste Erfolge erzielt. USB
klappt nicht. Ich habe bisher lediglich die von STM32CubeMX (Middleware
USB/CDC) generierten Dateien ins Projekt übernommen und die
USB-Initialisierung (MX_USB_DEVICE_Init) aufgerufen.
Beim Anstecken an den USB-Port wird das Gerät aber nicht erkannt:
1
Beim Start des Geräts USB\VID_0000&PID_0002\5&39176fe7&0&3 ist ein Problem aufgetreten.
Mein Ansinnen ist einen COM-Port zu realisieren und damit mit dem STM zu
kommunizieren.
Irgendwie fehlt mir da aber noch der richtige Einstieg in diese
USB-Geschichte. Da wäre ich für jeden Hinweis dankbar.