Ich entwerfe derzeit eine Platine für einen STM32F102-Chip, der den USB-Bus verwenden muss, um Daten zu übertragen, während der Chip läuft. Ich möchte jedoch auch den Chip über USB programmieren können, während ich die Software entwickle.
Ich möchte sicherstellen, dass ich beim Entwerfen des Boards nichts tue, was dies später unmöglich macht, daher bitte ich um einige Klarstellungen zu einigen Dingen.
Zunächst einmal gemäß dem USB-Standard, da der STM32F1 USB mit voller Geschwindigkeit unterstützt, habe ich einen Pull-up-Widerstand auf der D + -Leitung.
Um nun vom Haupt-Flash zu booten, muss der Boot0-Pin logisch 0 sein, also werde ich ihn mit einem Pulldown-Widerstand auf der Platine verbinden. Um den mitgelieferten Bootloader zu verwenden (was ich meiner Meinung nach über USB programmieren muss), muss der Boot0-Pin logisch 1 sein und der Boot1-Pin (der ein gpio ist, jedoch ein Eingang beim Zurücksetzen ist) sollte logisch 0 sein.
Angenommen, ich verstehe alle diese Informationen richtig, was wäre der beste Weg, um den Chip zu programmieren, wenn ein USB-Kabel angeschlossen ist? Kann ich USB V+ und GND verwenden, um die am Boot-Pin benötigten Logikpegel einzustellen? oder sollte ich diese an die Platinen V+ und GND anschließen und einen Schalter verwenden, um die Boot-Pins entsprechend einzustellen?
Wenn weitere Informationen erforderlich sind, helfe ich Ihnen gerne zu verstehen, was ich brauche oder um was ich bitte.
Ich habe eine schlechte Nachricht für Sie: Der STM32F102 (und ich vermute die STM32F1xx-Geräte im Allgemeinen) hat keinen USB-Bootloader, nur einen UART-Bootloader. Sie benötigen einen STM32F2xx oder STM32F4xx, um einen USB-Bootloader in das System-ROM-Image zu laden.
Sie haben viele Alternativen, darunter:
Feind der Staatsmaschine
Nick
Feind der Staatsmaschine
Nick