Das aktuelle Arduino Framework von STM unterstützt mittlerweile einige
Boards:
https://github.com/stm32duino/Arduino_Core_STM32
Leider muss man sagen, dass es immer wieder Fallstricke gibt, bei denen
der ein- oder andere Treiber nicht läuft. Vieles läuft allerdings auch
schon.
Nichtsdestotrotz mag es vielleicht Sinn haben, sich trotzdem einmal
damit zu beschäftigen.
Im Moment versuche ich heraus zu kriegen, auf welche Pins man eine
HardwareSerial Schnittstelle auf einem H743 Board umbiegen kann und
welche am besten geeignet sind.
https://github.com/stm32duino/wiki/wiki/API#hardwareserial
Hat jemand einen Tipp?
>Guckst du entweder im Datenblatt oder eben z.B. hier:
Danke, habe ich schon gesehen. Irgendwo habe meine ich auch verstanden
zu haben, dass die Standart-UART ( also die, welch mit Serial.print
angesteuert wird ) UART3 ist, richtig?
Möglich wäre also z.B.
HardwareSerial Serial7(PE7, PA15);
Das ist ja ein multidimensionales Suchspiel, die Anschlüsse auf dem
Board wieder zu finden. Die sind ja kreuz und quer verteilt ... und sie
liegen nicht auf den Pfostenbuchsen.
Autor: Guest (Gast)
>Mein Tipp, Wenn du schon so einen mächtigen uC benutzt dann programmier>ihn richtig...
Super Idee. Und wie ziehst Du dann das gesamte 100k-Lines große Programm
nachher auf den K210 um, der bei mir schon auf dem Tisch liegt?
chris schrieb:> Super Idee. Und wie ziehst Du dann das gesamte 100k-Lines große Programm> nachher auf den K210 um, der bei mir schon auf dem Tisch liegt?
Du "Programmierst" einen 64 Bit dual core mit der arduino IDE? Ich nehme
es zurück, das ist ja eine noch viel schlimmere Kastration :(
Da fehlen mir jetzt etwas die Worte, viel Erfolg bei deinem Projekt.
Guest schrieb:> Da fehlen mir jetzt etwas die Worte, viel Erfolg bei deinem Projekt.
Da kann ich mich nur anschließen.
Ich kann nicht nachvollziehen wie man bei so leistungsstarken
Controllern so eine scheiß IDE benutzen kann. Ich muss zugeben
angefangen habe ich auch damit, bin aber schnell davon weg. Ich habe
selten Bibliotheken mit so viel Overhead erlebt. Und der fehlende
Debugger ist auch ein Krampf.
chris schrieb:> Irgendwo habe meine ich auch verstanden> zu haben, dass die Standart-UART ( also die, welch mit Serial.print> angesteuert wird ) UART3 ist, richtig?
Default ist bei den Nucleos vermutlich immer der UART, der am ST-Link
hängt und per USB als Virtual COM-Port durchgeschleift wird. Für dein
Board ist das wohl UART3. Kannst du einfach in der variant.h
nachschauen:
https://github.com/stm32duino/Arduino_Core_STM32/blob/master/variants/NUCLEO_H743ZI/variant.h#L203chris schrieb:> Möglich wäre also z.B.> HardwareSerial Serial7(PE7, PA15);
Sollte gehen, ja.
chris schrieb:> Das ist ja ein multidimensionales Suchspiel, die Anschlüsse auf dem> Board wieder zu finden. Die sind ja kreuz und quer verteilt ... und sie> liegen nicht auf den Pfostenbuchsen.
Joa, einfacher ist es die Pins aus einem ordentlichen Pinout-Diagramm
herauszuziehen. Dann siehst du auch schon direkt ob und mit welcher
weiteren Peripherie das dann kollidiert:
https://os.mbed.com/platforms/ST-Nucleo-H743ZI/
Autor: Guest (Gast) , Bernd (Gast)
>...
Ich habe mindestens 20 Jahre MC-Entwicklung hinter mir. Da wo ihr beide
seit war ich vor 10 Jahren, mittlerweile interessiert mich nur noch
Algorithmik und Signalverarbeitung. Die MCUs sind für mich nur noch
austauschbare Platformen.
>Ich kann nicht nachvollziehen wie man bei so leistungsstarken>Controllern so eine scheiß IDE benutzen kann.
Tu mir den Gefallen und mach dich mal kundig, bevor Du irgendwelchen
Senf von Dir gibst.
Christopher J. (christopher_j23)
>Joa, einfacher ist es die Pins aus einem ordentlichen Pinout-Diagramm>herauszuziehen. Dann siehst du auch schon direkt ob und mit welcher>weiteren Peripherie das dann kollidiert:
Muchas Gracias :-)
Hallo zusammen,
ich habe bisher mit der Maple-Implementation von Roger Clark und den
einfachen Blue Pill Boards gearbeitet. Hier musste man den Bootloader
erst mal über UART oder STLink flashen, um dann über den
Micro-USB-Anschluß vom Bluepill flashen zu können.
Im neuen STM32duino direkt von ST werden verschiedene Upload Methoden
beschrieben.
https://github.com/stm32duino/wiki/wiki/Upload-methods
Wie kann ich denn die Methode STM32CubeProgrammer -> serial nutzen? Geht
das über den Micro-USB Anschluß bei einem jungfräulichen Blue-Pill
Board?
Oder geht das nur über einen USB->UART Wandler?
Gruß
hochsitzcola
Bernd schrieb:> Ich kann nicht nachvollziehen wie man bei so leistungsstarken> Controllern so eine scheiß IDE benutzen kann.
Er hat nie erwähnt welche IDE er benutzt...
Außerdem ist die neue Arduino IDE ziemlich noice.
Stefan F. schrieb:> bedeutet, dass du einen USB-UART Adapter mit dem seriellen Port des> Mikrocontrollers verbindest
Danke für die schnelle Antwort. Ist die Micro-USB-Schnittstelle auf dem
Bluepill mit dem STM32CubeProgrammer dann gar nicht zum Flashen
nutzbar?!
Gruß
hochsitzcola
hochsitzcola schrieb:> Ist die Micro-USB-Schnittstelle auf dem> Bluepill mit dem STM32CubeProgrammer dann gar nicht zum Flashen> nutzbar?!
Ist sie leider nicht. Weil der Cube Programmer nichts mit dem Maple
Bootloader am Hut hat und der STM32F103 eben keinen USB Bootloader (auch
DFU genannt) enthält.
Stefan F. schrieb:> Weil der Cube Programmer nichts mit dem Maple> Bootloader am Hut hat
Man kann ja weiterhin die Upload Methode Maple DFU bootloader auswählen
und darüber erfolgreich flashen. Dann erscheint aber nach dem Reboot des
Board der Com-Port am Rechner nicht mehr :-(
Blöd.
Gruß
hochsitzcola
hochsitzcola schrieb:> Dann erscheint aber nach dem Reboot des> Board der Com-Port am Rechner nicht mehr
Man muss die USB Verbindung trennen und wieder herstellen.
Dazu kann man beim Bluepill Board den ohnehin falschen R10 auslöten und
stattdessen einen 1,5kΩ Pull-Up mit einem Transistor schalten.
Ganz mutige Schmutzfinken konfigurieren PA12 kurz als Ausgang mit Low
Pegel, dadurch wird das Board vom PC auch neu erkannt.
Stefan F. schrieb:> dadurch wird das Board vom PC auch neu erkannt
Nein, das geht eben nicht.
Es steht in den Upload methods tutorial ja auch der schöne Satz mit
Ausrufezeichen "USB CDC have to be enable else you will not be able to
upload anymore."
Wie man USB CDC enabled steht da aber nicht :-( Ich hab auf die schnelle
auch nur ein Video gefunden, was die Aktivierung mit CubeMX erklärt, das
hilft mir in Arduino herzlich wenig. Ein einfacher HAL-Befehl, der auch
in Arduino funktkioniert wäre schön. :-)
Gruß
hochsitzcola
hochsitzcola schrieb:> Es steht in den Upload methods tutorial ja auch der schöne Satz mit> Ausrufezeichen "USB CDC have to be enable else you will not be able to> upload anymore."
Das stimmt so aber nicht. Mann kan zu Beginn des Uploads den Reset Knopf
drücken. Danach gibt es ein kleines Fenster von einer Sekunde, wo der
Bootloader aktiv ist. Egal, ob das installierte Programm CDC benutzt,
oder nicht.
Das Timing ist allerdings Tricky, mich hat es genervt. Ich nutze den
Maple Bootloader daher nicht.
> Wie man USB CDC enabled steht da aber nicht
Beim alten STM32Duino Core von Roger Clark enthielt jedes Programm
automatisch den CDC Treiber. Für den neuen Core guck Dir mal diesen
Screenshot an:
https://user-images.githubusercontent.com/7065108/58769761-71b2f980-85aa-11e9-8ffa-77991f16527d.png
Stefan F. schrieb:> Bei all der Meckerei:
Ich will doch gar nicht meckern, ich will nur wissen wie es geht. Die
Dokumentation des neuen STM32duino von ST ist echt grottig bis nicht
vorhanden.
Danke für den Tipp mit dem Screenshot, werde ich mal ausprobieren.
Zum Glück wird man hier geholfen :-)
Gruß
hochsitzcola
Komisch. Wenn ich ohne Arduino mit CubeMX ein Hello-World Programm mit
CDC erzeuge, passt es in den Speicher. Allerdings ist das mit 19kB schon
erschreckend groß. In deinem Fall kommt der Bootloader noch dazu.
Wenn ich "sprintf(msg,"%f",3.123);" einfüge, sind es schon 31kB.
Vielleicht nimmst du besser die alte Version von Roger.
Zusätzliche Boardverwalter-URL:
http://dan.drown.org/stm32duino/package_STM32duino_index.json
:-) Den Gedanken, bei Rogers Version zu bleiben hatte ich auch schon.
Mein letztes Projekt hab ich auch in der STM32 Workbench und CubeMX
gemacht. Das braucht etwas mehr Einarbeitung, funktioniert dafür aber
auch...
Ich bilde mir aber ein, daß es leichter ist Mitstreiter für ein Projekt
zu bekommen, wenn man in Arduino arbeitet.
Gruß
hochsitzcola
hochsitzcola schrieb:> Ich bilde mir aber ein, daß es leichter ist Mitstreiter für ein Projekt> zu bekommen, wenn man in Arduino arbeitet.
Ja wahrscheinlich.
Der bare-metal Code von W.S. braucht nur 8kB. Siehe
http://stefanfrings.de/stm32/stm32f1.html#vcpnohal
Wenn man auf puts() verzichtet, wird er noch ein bisschen kleiner.
> mit CubeMX gemacht. Das braucht etwas mehr Einarbeitung,> funktioniert dafür aber auch...
Mein erste Versuch vor 2 Jahren scheiterte schon an der Initialisierung
der Taktversorgung. War ein Bug in Cube HAL, den hätte ich damals ohne
die Hilfe dieses Forum nicht gefunden.
OK, das müsste sich ja mit überschaubarem Aufwand auf Arduino übertragen
lassen, die Registerzugriffe sollten ja auch aus Arduino direkt gehen.
Gruß
hochsitzcola
hochsitzcola schrieb:> OK, das müsste sich ja mit überschaubarem Aufwand auf Arduino übertragen> lassen
Jaein. Dir fehlt dann das Serial Objekt, mit dem du so schön bequem
alles Mögliche ausgeben kannst. Stattdessen hast du nur das "dumme"
UsbCharOut().
Außerdem müsstest du dem Arduino Core beibringen, die USB Schnittstelle
nicht anzurühren.
Na bei euch geht's ja in die Tiefe.
Leider hat Roger Clark sein Forum dicht gemacht. Dort wären ein paar
Leute gewesen, die bei diesen Fragen sicherlich weiter geholfen hätten.
Ich weiß nicht, wo die jetzt abgeblieben sind. Einer war auf jeden Fall
deutsch aus München.