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: https://github.com/stm32duino/Arduino_Core_STM32/blob/master/variants/NUCLEO_H743ZI/PeripheralPins.c#L274
Christopher J. schrieb: > Guckst du entweder im Datenblatt oder eben z.B. hier: > https://github.com/stm32duino/Arduino_Core_STM32/blob/master/variants/NUCLEO_H743ZI/PeripheralPins.c#L274 Wie kann man den armen H7 mit dem Arduino Framework nur so böse kastrieren :( Mein Tipp, Wenn du schon so einen mächtigen uC benutzt dann programmier ihn richtig...
>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#L203 chris 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/
:
Bearbeitet durch User
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
hochsitzcola schrieb: > STM32CubeProgrammer -> serial bedeutet, dass du einen USB-UART Adapter mit dem seriellen Port des Mikrocontrollers verbindest. Siehe http://stefanfrings.de/stm32/stm32f1.html#serialbootloader Es gibt ein ähnliches Board mit STM32F303, der hat einen nicht löschbaren USB Bootloader: http://stefanfrings.de/stm32/stm32f3.html#stm32f3mini
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
Bei all der Meckerei: Wenn du das neue schwarze Board verwendest, dass ich weiter oben empfohlen habe, hast du diesen Streß nicht.
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
Hm, blöd, wenn ich im Menü "Werkzeuge" CDC aktiviere, kommt die Fehlermeldung
1 | arm-none-eabi/bin/ld.exe: region `FLASH' overflowed by 10640 bytes |
selbst beim einfachen Blink example... HAL lässt grüßen :-) 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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.