Arduino




Um ein Programm für einen Mikrocontroller erstellen oder bearbeiten zu können, bedarf es eines Texteditors, der reine Ascii-Texte erstellt. Hierfür empfiehlt der Autor dieses Textes zum Einen Geany für den Desktop und zum anderen CIDE für die Konsole. Geany kann entweder aus dem Web heruntergeladen und compiliert werden, oder es kann, wie auch CIDE von hier als Binary gedownloaded werden:
Leider ist der Autor dieses Cores nicht namentlich genannt und deshalb geht von hier aus ein Dank an den unbekannten Ersteller des Cores.


    Installieren des Cores für Arduino Legacy IDE 1.8.x    

Zum Installieren des Cores starten sie die Arduino-IDE und wählen Sie unter Datei den Punkt "Voreinstellungen" aus. Ein Fenster öffnet sich und dort müssen sie unter:

Zusätzliche Boardverwalter URLs

Die Adresse des Cores für den CH32V003 eintragen:
      https://github.com/openwch/board_manager_files/raw/main/package_ch32v_index.json

Nachdem dieses geschehen ist, öffnen sie unter dem Menüpunkt "Werkzeuge => Board => Boardverwalter" das Dialogfenster des Boardverwalters und geben im Suchfeld "ch32" ein:


Klicken sie auf "Installieren". Dieser Vorgang kann etwas dauern, da Arduino nicht nur den Core, sonden die gesamte Toolchain-Kette (inklusive Compiler) installiert.

Nachdem der Core installiert ist, können wir zwar Programme für einen CH32V003 erstellen und kompilieren, dieses jedoch mit Einschränkungen:

  • der Core ist für die originalen Evaluationboards gemacht, die auf dem Board einen externen Quarz als Taktgeber haben. Aus diesem Grund initialisiert Arduino das Programm eben für einen externen Quarz. Da dieser an einem blanken Chip nicht vorhanden ist, läuft der Chip nur mit einem reduziertem Takt und u.a. stimmen bspw. Verzögerungszeiten bei "delay" dann nicht.

  • Arduino kann nach dieser Installation den Chip nur mit einem originalen WCH-LinkE Programmer flashen, aber arbeitet nicht mit unserem Selbstbauprogrammer zusammen.

Um diese beiden Einschränkungen zu beheben, reden wir der Arduino-IDE gut zu und patchen diese.


    platform.txt und boards.txt patchen    


Öffnen sie hierzu auf dem Desktop ihren persönlichen Ordner und aktivieren sie unter "Ansicht" den Punkt "Verborgene Dateien" anzeigen. Arduino hat seine Konfiguration in einem versteckten Ordner namentlich ./arduino15 abgelegt).

Dort klicken sie sich zu dem Pfad:
      /home/benutzername/.arduino15/packages/WCH/hardware/ch32v/1.0.4/

vor (oder geben diesen manuell ein).

Hier müssen 2 Dateien bearbeitet werden: platform.txt und boards.txt.

Klicken sie hierzu mit der rechten Mousetaste auf platform.txt und wählen sie im aufgehenden Fenster "Mit <<geany>> öffnen" aus (oder dem von ihnen präferierten Texteditor). Fügen sie am Ende der Datei folgende Einträge hinzu:
  
    ## minichlink
    tools.minichlink.path={runtime.tools.openocd-1.0.0.path}/bin/
    tools.minichlink.cmd=minichlink
    tools.minichlink.upload.params.verbose=
    tools.minichlink.upload.params.quiet=
    tools.minichlink.upload.config=
    tools.minichlink.upload.pattern="{path}{cmd}" -w {build.path}/{build.project_name}.bin flash -b  
  
Speichern sie die Datei ab und öffnen sie die Datei boards.txt ebenfalls in Geany. Dort suchen sie nach dem Text "Upload menu". Die Datei hat zwar für unterschiedliche Chips mehrere "Upload menu" Zeilen, dass sie an der richtigen Stelle sind erkennen sie daran, dass die Zeilen mit
  
     CH32V00x_EVT.menu.upload_method.
  
beginnen. Geben sie unterhalb von
  
     CH32V00x_EVT.menu.upload_method.swdMethod.upload.tool=WCH_linkE
  
folgende Zeilen ein:
  
    CH32V00x_EVT.menu.upload_method.minichlink=minichlink
    CH32V00x_EVT.menu.upload_method.minichlink.upload.protocol=
    CH32V00x_EVT.menu.upload_method.minichlink.upload.options=
    CH32V00x_EVT.menu.upload_method.minichlink.upload.tool=minichlink
  
Die IDE von Arduino hat jetzt Menüeinträge zur Auswahl unseres Flasherprogramms für den Selbstbauprogrammer. Das Flasherprogramm selbst muß jetzt in den Ordner:
      /home/benutzername/.arduino15/packages/WCH/tools/openocd/1.0.0/bin/
kopiert werden.

Klicken sie sich zu diesem Verzeichnis vor und öffnen sie ein zweites Dateifenster. Wechseln sie in das Verzeichnis, das sie beim Auspacken des Archives gewählt haben und dort in den Ordner minichlink.

Von dort kopieren sie die beiden Dateien:
  • minichlink           (die ausführbare Datei)

  • minichlink.so
in den oben aufgeführten Ordner. Arduino kann nun über den Selbstbauprogrammer einen Chip flashen.


    Arduino auf internen Clock patchen    


Als letzten Schritt muß Arduino mitgeteilt werden, dass es sich beim Mikrocontroller um einen Chip ohne externen Quarz handelt. Hierfür muß im Ordner
      /home/benutzername/.arduino15/packages/WCH/hardware/ch32v/1.0.4/system/CH32V00x/USER/
die Datei
      system_ch32v00x.c
bearbeitet werden.

In dieser Datei werden Defines deklariert, die die Takteinstellung des Chips vorgeben. Eine der Zeilen lautet:
  
       //#define SYSCLK_FREQ_48MHZ_HSI   48000000
  
Diese Zeile ist zu "entkommentieren" nach (die beiden Schrägstriche entfernen):
  
       #define SYSCLK_FREQ_48MHZ_HSI   48000000 
  
Die Zeile
  
       #define SYSCLK_FREQ_48MHz_HSE   48000000
  
ist "auszukommentieren" aus
  
       //#define SYSCLK_FREQ_48MHz_HSE   48000000
  
Speichern sie die Datei ab, beenden sie (falls gestartet) Arduino und starten sie Arduino neu.

Geschafft, sie können nun einen CH32V003 aus Arduino heraus programmieren und flashen.



    Arduino-Pinout des CH32V003    


Damit sie wissen, welcher Pin wo zu finden ist und unter welchem Namen Arduino die Pins kennt, gibt es hier noch das Pinout zu den Chips. Sie können die Pins unter dem Arduinonamen ansprechen (orangene Farbe) oder auch mit dem Namen des Chips, bspw. PD5 (grüne Farbe)