====== Fysetc Spider H7 (USB) ======
Schrittweise Anleitung, um das Fysetc **Spider H7** Board über über **USB** in Betrieb zu nehmen.
**Fysetc Spider Board H7** \\ {{:klipper_faq:flash_guide:stm32h723:pasted:20240904-062030.png}}
===== YouTube Video #108 =====
{{youtube>I2pKr37gh0A?half}}
\\
===== Hinweise =====
* **SBC** bedeutet in der Anleitung **S**ingle **B**oard **C**omputer. Also meistens wohl ein Raspberry Pi.
* Es wird davon ausgegangen das auf dem SBC Klipper und MainSail eingerichtet ist.
* Ein Zugang zum SBC über SSH ist notwendig!
* Wenn ''dmesg -HW'' einen Fehler bringt, einfach ''dmesg -Hw'' verwenden.
* Der SD-Slot ist bei diesem Controller komplett überflüssig 8-)
===== Verkabelung =====
==== Stromversorgung ====
* Der Jumper ist entweder mit ''DC5V / U5V'', ''DC5V / USB5V'' oder nur ''U5V'' gekennzeichnet.
* Der Jumper ''DC5V / U5V'' befindet sich hinter dem USB-C Anschluss.
* :!: Bei 24V Versorgung muss der Jumper immer auf die Position ''DC5V'' :!:
* **Betrieb**
* Im Betrieb wird das Board mit 24V versorgt (Anschluss PWR-IN GND / 24V)
* :!: Der Jumper auf Position ''DC5V'' setzen!
* **Firmware flashen**
* Das Board wird **nicht mit 24V versorgt**. \\ Den Jumper auf Position ''U5V'' (oder ''USB5V'') setzen.
* Das Board wird **mit 24V betrieben**. \\ Den Jumper auf Position ''DC5V'' setzen!
==== Versorgung Raspberry Pi ====
* Ein Raspberry Pi kann direkt über das Board versorgt werden. Ein passendes Kabel liegt bei.
* Über diesen Anschluss wird auch gleich TX / RX verbunden mit dem Pi. Damit wäre ein Betrieb über UART möglich.
==== 48V Anschluss ====
* Alle Treiber können per Jumper selektierbar mit 24V oder 48V betrieben werden.
* Die 48V am Eingang werden nur für die Treiber genutzt!
* 24V müssen trotzdem anliegen!
===== Bootloader sichern =====
Das Board wird mit Marlin ausgeliefert (Stand 04.09.2024).
pi@TestPi5:~ $ dmesg -HW
[Sep 4 06:54] usb 3-1: USB disconnect, device number 2
[ +0.405181] usb 3-1: new full-speed USB device number 3 using xhci-hcd
[ +0.183840] usb 3-1: New USB device found, idVendor=0483, idProduct=5740, bcdDevice= 0.00
[ +0.000005] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ +0.000002] usb 3-1: Product: MARLIN_STM32H723VG CDC in FS Mode
[ +0.000002] usb 3-1: Manufacturer: STMicroelectronics
[ +0.000002] usb 3-1: SerialNumber: 364334613532
[ +0.028036] cdc_acm 3-1:1.0: ttyACM0: USB ACM device
Mit den original Bootloader Settings (128k) lässt sich das Board nicht betreiben.
Der Hex Abzug zeigt auch das da scheinbar gar kein Bootloader installiert ist / war!
Es gibt also nichts zu sichern ...
===== DFU Modus =====
Das Board in den DFU Modus bringen:
* Im Terminal folgendes eingeben \\ ''dmesg -HW''
* An der Seite sind zwei Taster. Der Taster der zum USB-C Port zeigt ist BT0. Der da drüber ist Reset. \\ Den BT0 Taster gedrückt halten, einmal auf Reset drücken und dann BT0 wieder loslassen.
* Das Board meldet sich mit ''**Product: STM32 BOOTLOADER**'' oder ''**Product: DFU in FS Mode**'' \\
pi@Pi4Test:~ $ dmesg -HW
[Sep 4 06:55] usb 3-1: USB disconnect, device number 3
[ +0.448648] usb 3-1: new full-speed USB device number 4 using xhci-hcd
[ +0.154183] usb 3-1: not running at top speed; connect to a high speed hub
[ +0.024000] usb 3-1: New USB device found, idVendor=0483, idProduct=df11, bcdDevice= 2.00
[ +0.000005] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ +0.000002] usb 3-1: Product: DFU in FS Mode
[ +0.000002] usb 3-1: Manufacturer: STMicroelectronics
[ +0.000002] usb 3-1: SerialNumber: 364334613532
* ''STRG+C'' drücken, um die Meldungen zu beenden
===== Klipper flashen =====
> **Hinweis** \\ Wenn das Board mit USB betrieben wird, braucht es **keinen extra Bootloader**! \\ Es ist auch default keiner installiert!
* ''cd ~/klipper''
* ''make menuconfig'' \\
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32H723) --->
Bootloader offset (No bootloader) --->
Clock Reference (25 MHz crystal) --->
Communication interface (USB (on PA11/PA12)) --->
USB ids --->
() GPIO pins to set at micro-controller startup
* beenden mit ''Q'' und ''Y''
* Klipper kompilieren \\ ''make -j4''
* Klipper flashen \\ ''dfu-util -R -a 0 -s 0x08000000:mass-erase:force -D ~/klipper/out/klipper.bin'' \\ Das Ergebnis sollte sein ''File downloaded successfully''
===== Port ermitteln =====
* Den USB Stecker abziehen
* ''dmesg -HW'' starten und USB wieder anstecken \\
pi@TestPi5:~/klipper $ dmesg -HW
[Sep 4 07:56] usb 3-1: USB disconnect, device number 10
[ +0.437458] usb 3-1: new full-speed USB device number 11 using xhci-hcd
[ +0.190009] usb 3-1: New USB device found, idVendor=1d50, idProduct=614e, bcdDevice= 1.00
[ +0.000005] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ +0.000002] usb 3-1: Product: stm32h723xx
[ +0.000002] usb 3-1: Manufacturer: Klipper
[ +0.000001] usb 3-1: SerialNumber: 31000E000951323530343536
[ +0.241050] cdc_acm 3-1:1.0: ttyACM0: USB ACM device
* Wir brauchen die Information mit **tty...** also in diesem Fall **ttyACM0**
* ''STRG+C'' drücken, um die Meldungen zu beenden
* Den zugehörigen Link ermitteln \\ ''ls -lR /dev/ | grep -v '\%%->%%\s../tty' | grep -e 'tty%%[[:%%alpha%%:]]%%' -e serial''
* Wir brauchen die Info unter ''/dev/serial/by-id:'' : \\ ''lrwxrwxrwx 1 root root 13 Mar 2 06:59 **usb-Klipper_stm32h723xx_31000E000951323530343536-if00** -> ../../ttyACM0''
* Achte darauf das am Ende die gleiche tty Bezeichnung steht wie sie im vorherigen Schritt ermittelt wurde (hier also ttyACM0)
* Was wir für die Konfig brauchen ist dann am Ende: \\ ''/dev/serial/by-id/usb-Klipper_stm32h723xx_31000E000951323530343536-if00''
===== kurzer Test =====
Ob das Board korrekt mit Klipper läuft, lässt sich mit folgendem Befehl schnell testen: \\ ''~/klippy-env/bin/python ~/klipper/klippy/console.py /dev/serial/by-id/usb-Klipper_stm32h723xx_31000E000951323530343536-if00''
Der Pfad am Ende muss natürlich mit dem übereinstimmen was ihr im vorherigen Schritt ermittelt habt!
Wenn ihr ein ''**connected**'' am Anfang des Textes seht, ist das Board richtig geflasht. \\ {{:klipper_faq:flash_guide:stm32g0b1:pasted:20231111-152555.png}}
Abbrechen kann man die Abfrage mittels ''STRG + C''.
===== Konfiguration =====
* ''cd ~/printer_data/config''
* ACHTUNG NOCH KEINE AKTUELLE KONFIG \\ **Beispiel Konfiguration** \\ ''wget https://raw.githubusercontent.com/FYSETC/FYSETC-SPIDER/main/firmware/Klipper/printer.cfg -O printer.cfg''
* ''nano ~/printer_data/config/printer.cfg'' \\ [mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_390028000950315239323320-if00
* Die Zeile mit ''serial'' entsprechend mit dem ermittelten Pfad von oben anpassen
**Meine vorläufige Konfig** \\ {{ :klipper_faq:flash_guide:stm32h723:spiderh7config.zip | Spider H7 Konfig}}
===== Klipper Update =====
* Klipper Dienst stoppen \\ ''sudo systemctl stop klipper.service''
* ''cd ~/klipper && make menuconfig''
* Die Einstellungen sind genauso wie im Kapitel [[klipper_faq:flash_guide:stm32h723:fysetc_spider_h7_usb#klipper_flashen|Klipper flashen]]
* ''make flash -j4 FLASH_DEVICE=/dev/ttyACM0''
* Wie man an den Port (hier ttyACM0) kommt, ist [[klipper_faq:flash_guide:stm32h723:fysetc_spider_h7_usb#port_ermitteln|hier]] beschrieben
* Am Ende kann es zu einem Fehler kommen. Davon nicht irritieren lassen. Wichtig ist diese Zeile: \\ ''File downloaded **successfully**''
* Klipper Dienst starten \\ ''sudo systemctl start klipper.service''
* Sollte sich das Board nicht melden, am besten den Drucker einmal stromlos machen und neu starten.
===== Sonstiges =====
Diese Punkte sind nicht immer Bestandteil vom YouTube Video, aber nützlich 8-)
==== ST-Link (SWD) ====
Das Board verfügt über einen SWD Port. Mit einem entsprechenden ST-Link kann das Board auch direkt geflasht werden.
{{:klipper_faq:flash_guide:stm32h723:pasted:20240904-080524.png}}
* 3V3 -> 3,3V Anschluss
* G -> Masse Anschluss
* IO -> SWDIO vom ST-Link
* CLK -> SWCLK vom ST-Link
==== ADXL345 (Input Shaper) ====
Ein ADXL345 Sensor für Input Shaper kann direkt an das Board angeschlossen werden.
Bis Board 2.2 \\ {{:klipper_faq:flash_guide:stm32f446:pasted:20240302-070927.png}}
Ab Board 2.3 \\ {{:klipper_faq:flash_guide:stm32f446:pasted:20240302-071015.png}}
^ ADXL345 Pin ^ Spider Board (SPI1) ^ STM32 Pin ^
| GND | GND | |
| VCC | +5V | |
| CS | CS | PA4 |
| INT1 | N/A | |
| INT2 | N/A | |
| SDO | MISO | PA6 |
| SDA | MOSI | PA7 |
| SCL | CLK | PA5 |
* Konfig Anpassung \\
[adxl345]
axes_map : x,y,z
cs_pin : PA4
spi_bus : spi1
[resonance_tester]
accel_chip : adxl345
probe_points : 150, 150, 20 # Center of your bed, raised up a little
* **Test** in der MainSail Konsole mittels \\ ''ACCELEROMETER_QUERY'' \\ Als Ergebnis sollte in etwa sowas kommen: \\ ''accelerometer values (x, y, z): -1110.308913, 1184.329507, 11414.822920''
* Sollte der Test folgenden Fehler bringen ist die Verkabelung falsch! \\ ''Invalid adxl345 id (got 0 vs e5)''
==== STM32 Temperatur ====
Der interne Temperatur Sensor des STM32 kann mit folgendem Konfig Schnibsel ausgelesen werden:
[temperature_sensor Levi]
sensor_type : temperature_mcu
sensor_mcu : mcu
===== Links =====
* Github Repo \\ https://github.com/FYSETC/FYSETC-SPIDER-H7
* Schaltplan \\ **Spider H7** https://github.com/FYSETC/FYSETC-SPIDER-H7/blob/0a01a5dd6fb8491fde522b36390bc144476f1634/Schematic/SPIDER_H7_SCH.pdf
* Klipper Konfig \\ TBD !