Inhaltsverzeichnis
MicroPython
Ich möchte mich mal kurz mit MicroPython beschäftigen. Deshalb habe ich mir vom Chinesen das unten aufgeführte PBYv1.1 Board welches einen STM32F405 beherbergt gekauft.
Funktionstest
Nach dem Anstecken an den Mikro-USB meldet sich die Platine als USB-Laufwerk an. Damit man die virtuelle serielle Schnittstellen nutzen kann, muss man im Gerätemanager den Treiber aktualisieren mit der auf dem USB-Laufwerk bereitgestellte Datei: pybcdc.inf
Der migelieferte Treiber verursacht unter folgenden Fehler:
Die INF-Datei … enthält keine Digitalsignaturinformationnen
Da ab Windows 8 normalerweise nur Treiber mit einer digitalen Signatur installierte werden können. Abhilfe siehe folgendes Dokument:
Micro-Python-Windows-Setup.pdf
Nach der Installation des Treibers (mit gedrückter Shift-Taste Neustart auswählen , und dann bei Adavanced mit F7 nach dem Neustart..) meldet sich das Board im Terminal (aber erst einem Board reset):
MicroPython v1.9.4-85-gdf9b7e8f on 2018-05-24; PYBv1.1 with STM32F405RG Type "help()" for more information. >>>
Soweit so gut, allerdings konnte ich mit meinem übliche Terminal Programm keine Befehl senden, bzw. ich bekam keine Antworten zurück. (Handshaking RTS/CTS aktivieren dann gehts auch mit Terminal)
Erst nachdem ich PuTTY ( 115200 8N1 ) verwendet hatte, konnte ich mit dem Board interagieren.
Und hier noch ein kurzes Demo des Beschleunigungssensors:
import pyb accel = pyb.Accel() while True: print(accel.filtered_xyz()) pyb.delay(250)
Firmware Update
Brücke zwischen +3V3 und DFU-Pin (boot0) setzen und dann mit USB verbinden. Wenn der Bootloader aktiviert ist leuchten die rote, gelb und blaue LED dunkel.
Als erstes mal eine Sicherung durchführen (512kByte sollten reichen):
Sicherung erstellen mit (Upload): dfu-util.exe -a 0 -s 0x08000000:524288 -U test_orig_512k.bin dfu-util 0.9 Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. Copyright 2010-2016 Tormod Volden and Stefan Schmidt This program is Free Software and has ABSOLUTELY NO WARRANTY Please report bugs to http://sourceforge.net/p/dfu-util/tickets/ Opening DFU capable USB device... ID 0483:df11 Run-time device DFU version 011a Claiming USB DFU Interface... Setting Alternate Setting #0 ... Determining device status: state = dfuIDLE, status = 0 dfuIDLE, continuing DFU mode device DFU version 011a Device returned transfer size 2048 DfuSe interface name: "Internal Flash " Upload [=========================] 100% 524288 bytes Upload done.
und jetzt die aktuellste Firmware (Stand 02.01.2018) auf spielen:
dfu-util.exe -a 0 -D pybv11-20190102-v1.9.4-771-gb33f108cd.dfu dfu-util 0.9 Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. Copyright 2010-2016 Tormod Volden and Stefan Schmidt This program is Free Software and has ABSOLUTELY NO WARRANTY Please report bugs to http://sourceforge.net/p/dfu-util/tickets/ Match vendor ID from file: 0483 Match product ID from file: df11 Opening DFU capable USB device... ID 0483:df11 Run-time device DFU version 011a Claiming USB DFU Interface... Setting Alternate Setting #0 ... Determining device status: state = dfuIDLE, status = 0 dfuIDLE, continuing DFU mode device DFU version 011a Device returned transfer size 2048 DfuSe interface name: "Internal Flash " file contains 1 DFU images parsing DFU image 1 image for alternate setting 0, (2 elements, total size = 331280) parsing element 1, address = 0x08000000, size = 14720 Download [=========================] 100% 14720 bytes Download done. parsing element 2, address = 0x08020000, size = 316544 Download [=========================] 100% 316544 bytes Download done. done parsing DfuSe file
Das Modul meldet sich dann mit:
MicroPython v1.9.4-771-gb33f108cd on 2019-01-02; PYBv1.1 with STM32F405RG Type "help()" for more information. >>>
Hmm meine modifizierte main.py blieb erhalten und wurde nicht zurückgesetzt.
Achtung: Jetzt funktioniert auch mein standard Terminal wieder, ohne das das Handshaking aktiviert ist. (muss nun wieder entfernt werden).
SD-Karte
Kurzes Beispiel, wie man sich den Inhalt der SD-Karte anschauen kann (root Verzeichnis)
import os sd = pyb.SD #sd = pyb.SDCard() os.mount(sd, '/sd') os.listdir('/sd') os.umount('/sd')
Tipps
- STR+E : aktiviert den Paste Modus (das automatische Einrücke wird abgeschaltet)