Nachdem in einem Nachbarthread doch tatsächlich jemand den Selbstbauprogrammer für einen CH32V003 nachgefragt hat, obwohl es einen originalen Programmer von WCH für sehr kleines Geld gibt (jedoch oft nicht erhältlich), habe ich mich daran gesetzt, das ganze aufzuarbeiten. Wirklich witzig ist, ohne Namen zu nennen, dass es Mitglieder hier gibt, die sich mittlerweile schier nicht "trauen" etwas zu posten, weil sie denken Gefahr zu laufen xyz Kommentare dafür zu erhalten: Ich habe 3 (okay das sind nicht sehr viele) Interessenten, die den Selbstbauprogrammer wie ich den gemacht habe, gerne sehen würden und haben mich dann auch per Mail angeschrieben. Das, was ursprünglich kein Projekt war, und so auch nicht geplant war (ich dachte ich schreibe die Sachen einfach nur zusammen) wurde dann zu einem Projekt, zumindest für mich. Wenn die Moderatoren dieses anderst sehen und zu der Ansicht kommen, dass dieser Thread hier woanderst besser aufgehoben ist, dann bitte verschieben (und nein, das ist absolut nicht böse gemeint). Allerdings: im Archiv sind absolut genug Codebeispiele enthalten, sowie der Aufbau der Hardware an sich ist ja auch ein Projekt. Grundsätzlich ist aus dem Selbstbauprogrammer eher ein "Getting started with CH32V003" geworden und wie immer glaube ich, deutlich zu viel geschrieben zu haben: Das Dokument ist jetzt 30 Seiten lang geworden (ob das dann wirklich jemand liest?). Wie dem auch sei: Im Dokument wird beschrieben, wie man einen Selbstbauprogrammer für einen CH32V003 herstellen kann. Das einzige was benötigt wird ist ein CH32V003 Chip im 20pol. Gehäuse und ein Arduino Uno/Nano um den Programmer selbst zu flashen. Im Archiv ist ein komplettes Setup unter Linux auf Basis von CH32FUN enthalten um damit starten zu können. Und, auch wenn ich kein Arduino-Fan bin, ist den Seiten eine Anleitung hinzugefügt, wie man den CH32V003 auch unter Arduino programmieren kann und wie man den Selbstbauprogrammer der Arduino-IDE "unterjubelt". Downloadlinks als "Quellenangabe", bis auf den Compiler sind alle benötigten Dateien hier im Archiv angehängt: Für den Fall dass ich etwas ergänze, hier kann auch der RISCV-Compiler gedownloadet werden: https://www.jjflash.de/ch32v003/downloads/ Der riscv-Compiler auf der originalen Webseite https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/ V-USB mit der Programmerfirmware auf der Githubseite von Christian Lohr https://github.com/cnlohr/rv003usb CH32FUN von hier wurde das Framework für den V003 entnommen sowie das Hostprogramm minichlink für den Selbstbauprogrammer: https://github.com/cnlohr/ch32fun Der Arduino-Core für den CH32V003 https://github.com/openwch/arduino_core_ch32 Für denjenigen der das hier wirklich ausprobiert: Viel Spaß dabei (vllt. einfach bei der nächsten Bestellung bei einem Elektroniklieferanten die Chips mitbestellen. Außer dem Chip selbst benötigt es nur zusätzliches "Hühnerfutter" um damit anzufangen und bei einem Preis von ca. 25Cent / Stück ist das nun wirklich keine Investition).
Sofern man keinen CH32V003 auf Lager hat und daher eh bestellen muß, wäre ein CH32V203 praktischer wegen echtem USB statt V-USB.
F. P. schrieb: > Sofern man keinen CH32V003 auf Lager hat und daher eh bestellen muß, > wäre ein CH32V203 praktischer wegen echtem USB statt V-USB. Für den ist die Anleitung aber nicht gemacht! Außerdem: Die Firmware des Selbstbauprogrammers läuft auf dem V203 nicht (ich habe es ausprobiert). Das einzige das funktioniertist: Der Programmer (mit V003) kann auch den V203 flashen. Der Arduino-Core kann auch den V203 programmieren (allerdings muß man dann hier die Config-Dateien in ~./arduino15 nochmals patchen. Warum nur müssen irgendwelche Postings immer in der Art ausufern: Mein Chip ist aber besser als deiner und die Programmiersprache taugt nichts, nimm lieber die andere. Das hier ist ein "Getting started" für einen CH32V003 und nicht für einen CH32V203. Warum schreibst du nicht, nimm lieber einen STM32F400 (dem gibt es bei LCSC wirklich, ich habe ihn hier liegen), der kostet auch nur einen 1 Euro, gibt es im LQFP-48 Gehäuse und hat FPU, 128kB Flash und 32kB SRAM. Okay, USB hat er nicht (ich war überrascht, ich dachte alle F4 haben das), aber ansonsten in allem besser als V003. Warum also nicht den nehmen? Ganz einfach, für den ist diese Anleitung hier nicht gemacht, für diese braucht es eine andere.
Ralph S. schrieb: > Wirklich witzig ist, ohne Namen zu nennen, dass es Mitglieder hier gibt, > die sich mittlerweile schier nicht "trauen" etwas zu posten, weil sie > denken Gefahr zu laufen xyz Kommentare dafür zu erhalten Leider wahr. Ist mir hier auch begegnet. Viel schöner finde ich das du das ganze hier trotzdem für alle veröffentlichst! Danke dafür. O.T Ich hab zwar (noch) keine CH32, hab mir das ganze aber gespeichert, wenn mir auf einer der Schlachtplatinen mal ein CH32 begegnet kann ich ihn so nutzbar machen ohne extra Geld ausgeben zu müssen. Super Sache!
:
Bearbeitet durch User
Ralph S. schrieb: > Nachdem in einem Nachbarthread doch tatsächlich jemand den > Selbstbauprogrammer für einen CH32V003 nachgefragt hat, obwohl es einen > originalen Programmer von WCH für sehr kleines Geld gibt (jedoch oft > nicht erhältlich) Der "originale Programemr" (WCHLinkE) ist kein "Programmer", sondern ein Debuginterface. Darüber kann man also mehr anstellen, als Code in µCs zu laden, man kann Breakpoints im Code setzen, Speicherinhalte betrachten etc. Obendrein stellt das Ding auch noch eine serielle Schnittstelle zur Verfügung. Kann das dieser Nachbau hier auch, oder ist das ein reiner "Flasher"? Abgesehen davon: Schickes Projekt, das gehört definitiv nach "Projekte & Code" und das hast Du auch schön detailliert aufgearbeitet - Schaltplan, Aufbauhinweise, Links -- richtig gut! Großes Lob!
Harald K. schrieb: > Der "originale Programemr" (WCHLinkE) ist kein "Programmer", sondern ein > Debuginterface. > Darüber kann man also mehr anstellen, als Code in µCs zu laden, man kann > Breakpoints im Code setzen, Speicherinhalte betrachten etc. Obendrein > stellt das Ding auch noch eine serielle Schnittstelle zur Verfügung. Der WCH-LinkE ist nicht nur ein Debuginterface, er hat zudem noch eine sehr praktische USB2UART-Bridge mit integriert. Harald K. schrieb: > Kann das dieser Nachbau hier auch, oder ist das ein reiner "Flasher"? Leider ist der Nachbau tatsächlich ein reiner "Flasher", Breakpoints setzen und Variableinhalte ansehen geht also tatsächlich nicht. Harald K. schrieb: > Schickes Projekt, das gehört definitiv nach "Projekte & Code" und das > hast Du auch schön detailliert aufgearbeitet - Schaltplan, > Aufbauhinweise, Links -- richtig gut! Großes Lob! :-) Vielen Dank fürs Lob
leider haben sich im PDF kleinere Fehler eingeschlichen (vorzugsweise eines fehlenden "make flash" beim Flashen des Programmers) und deshalb hier die erste bereinigte Version des PDF's Sorry
Ralph S. schrieb: > Der WCH-LinkE ist nicht nur ein Debuginterface, er hat zudem noch eine > sehr praktische USB2UART-Bridge mit integriert. Sieh mal, was im letzten von Dir zitierten Satz von mir drinsteht: Harald K. schrieb: > Obendrein stellt das Ding auch noch eine serielle Schnittstelle > zur Verfügung. Aber schön, wenn wir uns da einig sind.
Harald K. schrieb: > Sieh mal, was im letzten von Dir zitierten Satz von mir drinsteht: > > Harald K. schrieb: >> Obendrein stellt das Ding auch noch eine serielle Schnittstelle >> zur Verfügung. > > Aber schön, wenn wir uns da einig sind. :-) sorry, das hatte ich überlesen => wer lesen kann ist klar im Vorteil (das ging jetzt an mich selbst)
Ralph S. schrieb: > Warum nur müssen irgendwelche Postings immer in der Art ausufern: Mein > Chip ist aber besser als deiner und die Programmiersprache taugt nichts, > nimm lieber die andere. Darum ging es mir doch gar nicht! Ich will hier keinen angreifen. Du schreibst mehrfach von einem "Selbstbauprogrammer für einen CH32V003" nicht von einem "Selbstbauprogrammer mit einem CH32V003". Wenn man eh Chips für einen Selbstbauprogrammer kaufen muß, ist ein CH32V203 besser als ein CH32V003. Ich schrieb an etwaige Nachbauwillige, nicht an Dich. Die Lage ist natürlich eine andere, wenn man schon eine 50er-Rolle CH32V003 hat. Noch besser wäre natürlich ein CH32V305. Kostet etwas mehr, aber damit kann man einen WCH-LinkE nachbauen und hat dann auch gleich einen Debugger. Die beiden CH217K kann man durch einen mechanischen Umschalter ersetzen. > Das hier ist ein "Getting started" für einen CH32V003 und nicht für > einen CH32V203. Genauer: Für zwei CH32V003 und einen Arduino. > Warum schreibst du nicht, nimm lieber einen STM32F400 (dem gibt es bei > LCSC wirklich, ich habe ihn hier liegen) Weil ich kein Polemiker bin.
Zitat 2: F. P. schrieb: > Weil ich kein Polemiker bin. Zitat 1: F. P. schrieb: > "Selbstbauprogrammer für einen CH32V003" > nicht von einem "Selbstbauprogrammer mit einem CH32V003"
> schreibst mehrfach von einem "Selbstbauprogrammer für einen CH32V003" > nicht von einem "Selbstbauprogrammer mit einem CH32V003". Waere nicht ein Selbstbauprogrammer fuer einen CH32V003 aber mit einem Atmel/ST/usw irgendwie klueger? Denn wenn ich schon einen CH32V003 flashen kann, dann brauch ich den Programmer ja garnicht mehr. :-p Vanye
Vanye R. schrieb: > Denn wenn ich schon einen CH32V003 > flashen kann, dann brauch ich den Programmer ja garnicht mehr. Manch einer, der so ausgestattet ist, könnte als Freundschaftsdienst so einen Programmieradapter programmieren, um jemandem zu helfen, der aus welchen Gründen auch immer noch keinen WCH-LinkE abbekommen hat. Sowas soll es ja geben. (Ansonsen hast Du recht, dieses Projekt hat ein deutliches Henne-Ei-Problem).
Ralph S. schrieb: > Zitat 2: > Zitat 1: Pedanterie muß nicht Polemik sein. Das Huhn-und-Ei Problem läßt sich umgehen, indem man einen 64-Pin-CH32V305 nimmt, den kann man wegen rausgeführtem BOOT0 auch ohne vorhandene Firmware über USB programmieren. Ich habe hier einen CH32V305RBT6, vielleicht sollte ich mal ausprobieren, ob die WCH-LinkE-Firmware darauf läuft. Übrigens ist der WCH-LinkE im WCH-Store auf AliExpress wieder lieferbar: https://www.aliexpress.com/item/1005004881582037.html
@jjflash, vielen Dank, werde mir das ganze bei Gelegenheit mal ansehen, da ich vorhabe, mich in die CH32 einzuarbeiten. Weil die so billig sind (und ich nur größere Mengen bei LCSC bestelle, damit sich die Versandkosten lohnen), habe ich mir kürzlich bei LCSC mal 150 Stück CH32V003 im TSSOP-20 bestellt. Da ich so viele ja eigentlich auf absehbare Zeit nicht brauchen werde, wäre ich gern bereit, zum Selbstkostenpreis welche abzugeben (in 10er-Packungen). Wer Interesse hat, kann mir gern ne PN schreiben.
F. P. schrieb: > Ich habe hier einen > CH32V305RBT6, vielleicht sollte ich mal ausprobieren, ob die > WCH-LinkE-Firmware darauf läuft. Wird länger dauern, denn ich habe nicht den passenden Quarz auf Lager.
Hm, irgendwie glaube ich, dass ihr das ganze nicht ganz korrekt (oder vollständig) gelesen habt. Wenn man einen Selbstbauprogrammer zusammennagelt hat man natürlich immer ein Henne-Ei Problem. Genau aus diesem Grunde ist die Anleitung etwas länger geworden. Diese Anleitung soll helfen, wenn man schlicht die V003 Controller schon hat... und sonst auch nichts hat. Aus diesem Grund wird einem Arduino UNO oder Nano eine Programmersoftware aufgespielt und der Arduino ist fortan mein Programmer für CH32. Der Haken an einem Arduino basierenden Programmer ist, dass er schnarch langsam ist (er braucht ca. 80 Sekunden um den gesamten Flash von 16384 Bytes zu flasen - was inakzeptabel ist). Allerdings kann man ihn genau ein einziges mal dafür verwenden, nachdem die Hardware für den Selbstbauprogrammer aufgebaut ist, um genau diesem die Programmersoftware aufzuspielen und fortan braucht man dann den Arduino-basierenden Programmer nicht mehr (der sich im Übrigen Ardulink nennt). F. P. schrieb: > Das Huhn-und-Ei Problem läßt sich umgehen, indem man einen > 64-Pin-CH32V305 nimmt, den kann man wegen rausgeführtem BOOT0 auch ohne > vorhandene Firmware über USB programmieren. sofern man zum einen einen CH32V305 hat, diesen aufgebaut hat und man dann eine Firmware für CH32V305 hat. Ich hatte das nicht gesucht und werde das auch nicht suchen, weil der Programmer mit V003 wirklich gut funktioniert. Ob nun die Software des WCH-LinkE im Netz auffindbar ist, weiß ich nicht. Welches Hühnerfutter daraum noch zu platzieren ist, weiß ich auch nicht. Vanye R. schrieb: > Waere nicht ein Selbstbauprogrammer fuer einen CH32V003 aber mit einem > Atmel/ST/usw irgendwie klueger? Warum sollte das klüger sein? Mit Atmel gibt es den für ATmega88 bis 328p und ATtiny2313, nennt sich wie oben genannt ArduLink .. und ist schnarch lahm. Ob es etwas für STM32 gibt weiß ich nicht (glaube ich allerdings auch nicht). Also, warum sollte es klüger sein, etwas das (zufriedenstellend) funktioniert durch etwas zu ersetzen von dem man es nicht weiß? Das Szenario ist/war doch: Ich habe mehrere ch32V003 und wie kann ich den mit den Mitteln flashen die ich habe. Meine Mittel waren vor Beginn des Projekts: Boards mit USB-Zugang oder virtuellen COM-Ports auf Basis von: MCS-51, PIC16, STM8, PFS154, STM32F0, F1, F3, F4 und Atmel AVR. Ich habe genau 2 Firmware's gefunden, die in der Lage sind, einen CH32 zu flashen, eben die eine für Atmel und die andere für einen V003. Und aus den oben genannten Gründen gab es eben eine Anleitung für den V003 basierenden Programmer! Warum muß hier jetzt nach Alternativen gesucht werden. Die einzige Alternative die wirklich zählt (und die habe ich gleich auf den ersten beiden Seiten beschrieben) ist es, einen originalen WCH-LinkE zu benutzen, der - in Einigkeit mit Kirnbichler - zum einen schnell ist, natürlich auch ein Debug-Interface hat, zudem eine UART-USB-Bridge und außerdem auch noch super preiswert ist. Alle anderen Klimmzüge (auch die meinigen bei diesem Projekt) müssen hinterfragt werden, wieviel Sinn die machen (und "mein" Selbstbauprogrammer macht dann Sinn, wenn es gerade mal wieder keinen WCH-LinkE gibt oder man nicht auf dessen Lieferung warten möchte um anzufangen). Letztendlich: Wenn jemand andere Programmerfirmware (egal für welche Plattform) findet als die beiden von mir genannten: postet die hier, das würde mich interessieren und wie man die verwenden kann. Im übrigen, so als Überlegung, welchen Sinn ein Programmer mit V003 noch machen könnte: Bei mir ist mit derselben Hardware plus zusätzlich einer Resetschaltung ein V003 mit USB-Bootloader am laufen. Dieser Bootloader kann natürlich auch die Programmersoftware flashen und so habe ich eine Schaltung die überhaupt keinen Programmer benötigt, aber zur Not selbst zum Programmer werden kann.
Johannes F. schrieb: > @jjflash, vielen Dank, werde mir das ganze bei Gelegenheit mal ansehen, > da ich vorhabe, mich in die CH32 einzuarbeiten. In der nächsten Zeit, so hoffe ich, werde ich mich meinen STM32F4 Projekten widmen, allerdings wird das nächste auf der ToDo-Liste für CH32V003 das Routen eines eigenen Evaluation-Boards sein, bei dem dort der V003 über einen USB-Bootloader verfügen wird, und entweder als normales Board verwendbar ist, oder eben auch als Programmer für weitere V003. Allerdings, wie oben beschrieben, wenn du schon einen WCH-LinkE hast, wirst du den Programmer nicht wirklich brauchen, allerdings könnte der Bootloader interessant werden. Außerdem hatte ich gestern abend mit Arduino "gespielt" (entgegen meinen Überzeugungen) und habe aus meiner TM16xx-Software eine "Arduino-Library" gemacht (an alle: ich weiß, dass das keine Library im Sinne von C, C++ ist, Library's ist eine Ansammlung von compilierter Software in einer *.a Datei, die mittels -lfoo.a hinzugelinkt wird) ... wobei ich zu meinem Erschrecken festgestellt hatte, dass die noch Fehler enthalten hat. Das Ergebnis des Spielens mit Arduino und CH32V003 war erschreckend und ernüchternd: Während ein einfaches Zählerprogramm in C mit CH32FUN und TM1650 nicht ganz 1500 Byte groß wurde, wurde dasselbe Programm mit Arduino über 9000 Byte groß. Angesichts der Tatsache dass der V003 nur 16384 Flashbytes hat stellt sich die Frage nach dem Sinn von V003 und Arduino. Hier werde ich mal nachsehen, ob es evtl. effizientere Cores als den von mir benutzten gibt. Es gibt noch viel zu tun, warten wir's ab!
Ralph S. schrieb: > Aus diesem Grund wird einem Arduino UNO oder Nano eine > Programmersoftware aufgespielt und der Arduino ist fortan mein > Programmer für CH32. Der Haken an einem Arduino basierenden Programmer > ist, dass er schnarch langsam ist (er braucht ca. 80 Sekunden um den > gesamten Flash von 16384 Bytes zu flasen - was inakzeptabel ist). > > Allerdings kann man ihn genau ein einziges mal dafür verwenden, nachdem > die Hardware für den Selbstbauprogrammer aufgebaut ist, um genau diesem > die Programmersoftware aufzuspielen und fortan braucht man dann den > Arduino-basierenden Programmer nicht mehr (der sich im Übrigen Ardulink > nennt). Dann hat sich das Henne-Ei-Problem in Luft aufgelöst. Das wurde aus der ursprünglichen Beschreibung (zumindest mir) nicht so ganz klar. Ein Satz wie "Hier wird einmalig der pröttenlahme Arduino-Programmer genutzt, um dann einen viel schnelleren auf Grundlage des CH32V003 zu gewinnen" vielleicht noch hervorgehoben, in einem eigenen Absatz, hätte mir geholfen. Ja, das steht anders formuliert im Eröffnungsposting, aber das hätte man gründlicher lesen müssen (als zumindest ich es getan habe). Fazit: Ich bleibe bei meinem Lob für das Projekt. Klasse Idee, klasse umgesetzt (und bei Problemen muss man halt gründlicher lesen - Asche auf mein alterndes Haupt)
:
Bearbeitet durch User
Die Original-WCH-LinkE-Firmware für den CH32V305 (u.a.) gibt es hier: https://github.com/cjacker/wlink-iap/tree/main/firmwares Die Software zum Flashen des CH32V305 (u.a.) über USB ohne vorhandene Firmware ist hier: https://github.com/ch32-rs/wchisp Hühnerfutter: 12-MHz-Quarz mit passenden Kondensatoren. Kompletter Original-Schaltplan mit einigem, was man nicht braucht: https://www.wch.xx/download/file?id=421 (Bitte xx durch cn ersetzen) Der Schaltplan für den WCH-LinkE ist auf der zweiten Seite. Offen ist, ob die Firmware für den 20-Pin-CH32V305 (der keinen BOOT0-Pin hat und daher das Huhn-und-Ei-Problem hat) auch für den 64-Pin-CH32V305 (mit per BOOT0 aktivierbarem USB-Bootloader) funktioniert. Das Flashen der Firmware funktioniert, aber das Ding meldet sich nicht am USB-Port. Eine mögliche Ursache ist, daß die Firmware den HSE statt des HSI für USB verwendet (der HSE hat bei mir die falsche Frequenz). Oder daß die beiden Versionen des CH32V305 zu verschieden sind. Werde ich herausfinden, sobald ich einen Quarz aufgetrieben habe. Für Taktung mit SI5351 bin ich im Moment zu faul. Ich habe halt ein paar 64-Pin-CH32V305 (samt PCB) da und ein Notfall-WCH-LinkE wäre ganz praktisch...
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.