In diesem Testbericht werfen wir einen Blick auf das CH32V307 Evaluation Board von WCH, die Sie vielleicht von den CH340/CH341 USB-zu-Seriell-Wandlern kennen, die man oft auf preisgünstigen MCU-Boards aus Asien findet. Das CH32V307 Evaluation Board ist eine Art Breakout Board für den CH32V307VCT6 Mikrocontroller von WCH. Dabei handelt es sich um eine 32-Bit-MCU, die auf einem RISC-V Kern von QingKe basiert.

Was ist das CH32V307 Evaluation Board?

Bevor wir uns die MCU genauer ansehen, wollen wir einen kurzen Blick auf die Leiterplatte werfen, auf der sie untergebracht ist. Abgesehen von vielen Anschlüssen gibt es nicht viel darauf. Die Platine hat auf jeder Seite eine 2-reihige 54-polige Stiftleiste. Dazwischen befinden sich Arduino-UNO-artige Shield-Sockel. Die MCU in ihrem 100-poligen LQFP-Gehäuse sitzt in der Mitte der Platine.

An einer der kurzen Seiten, nennen wir sie die rechte Seite, befinden sich zwei USB-C-Anschlüsse und eine Ethernet-Buchse. Der untere USB-C-Anschluss (P7) ist mit einem Spannungsregler verbunden. Auf der linken Seite befinden sich zwei taktile Schalter und zwei LEDs.

 
WCH CH32V307 evaluation board
Das WCH Link-Modul auf der linken Seite ist abtrennbar.

Debugger angehängt

Die Platine wurde auf der linken Seite durch eine abtrennbare Debug-/Programmier-/Seriell-Schnittstelle erweitert, die auf einem nicht gekennzeichneten IC basiert. Diese wird WCH Link genannt. Sie verfügt über einen Netzschalter, einen dritten USB-C-Anschluss, drei weitere LEDs und eine Jumper-Leiste.

Die CH32V307 RISC-V MCU

Wie bereits erwähnt, ist der Mikrocontroller CH32V307 ein RISC-V-Baustein. Er scheint das aktuelle Flaggschiff einer ziemlich großen Familie zu sein. Der Baustein läuft mit bis zu 144 MHz und verfügt über 256 KB Flash-Speicher, 64 KB RAM und 80 GPIO-Ports. Da es sich um eine Interconnectivity-MCU handelt, verfügt sie über acht serielle Schnittstellen, drei SPI-, zwei I²C-, zwei I²S- und zwei CAN-Schnittstellen sowie USB2.0 (OTG mit voller Geschwindigkeit, High-Speed-Host/Device) und Ethernet (Gigabit mit 10M PHY). Darüber hinaus gibt es einen 16-kanaligen 12-Bit-ADC (mit Touch-Key-Möglichkeit), zwei 12-Bit-DACs, 10 Timer, eine CRC-Recheneinheit und einen TRNG. Und es gibt noch mehr, die vollständigen Details finden Sie im Datenblatt.

Von der Leistung her ist der CH32V307 vergleichbar mit einem ARM Cortex-M4. Er verfügt über Single-Cycle-Multiplikation und -Division und hat eine FPU integriert.

MounRiver Studio alias MRS

Da es weder zum Board noch zum MCU viel zu sagen gibt, werfen wir einen Blick auf die Software-Entwicklungswerkzeuge. Hierfür gibt es MounRiver Studio (MRS), eine kostenlose, integrierte Entwicklungsumgebung (IDE) auf Basis von Eclipse für RISC-V/ARM-Mikrocontroller. Ich habe die Version 1.84 installiert.
 
MounRiver Studio debug view
Eclipse-basiertes MounRiver Studio im Debug-Modus.

Ein umfangreiches Beispielpaket ist auf GitHub verfügbar. Dieses deckt die meisten, wenn nicht alle Peripherals ab, sowie FreeRTOS und einige andere Sachen.

Ich begann mit der Erstellung eines neuen Projekts, was wirklich einfach ist. Das neue Projekt ist vollständig konfiguriert und enthält sogar Beispielcode, sodass man es sofort ausprobieren kann.

Schließen Sie die Debug-Seite des Evaluation-Boards an einen Windows-PC an. Dadurch wird eine serielle USB-Schnittstelle (WCH-Link SERIAL) geschaffen. Schalten Sie das Board mit S3 ein und öffnen Sie ein serielles Terminal und kommunizieren Sie damit über die neue serielle Schnittstelle bei 115‘200 Baud.

Drei Klicks sind alles, was es braucht

Klicken Sie in MRS auf die Taste Build Project (oder drücken Sie F7). Wenn die Kompilierung abgeschlossen ist - das geht sehr schnell - drücken Sie die Taste Debug. Wenn die IDE ihre Fenster neu angeordnet hat, befinden Sie sich am Anfang Ihres Programms. Klicken Sie auf Ausführen oder drücken Sie F5, um die Programmausgabe im seriellen Terminal zu sehen.

In einem zweiten Versuch habe ich das RNG-Beispiel, den Zufallszahlengenerator, importiert. Nachdem ich dieselbe Tastenklicksequenz wie zuvor ausgeführt hatte, wurden im seriellen Terminal Zufallszahlen angezeigt.

 
tera term RNG example output
Zufallszahlen, die von der TRNG-Peripherie der CH32V307 MCU erzeugt werden.

High-Level-API für den CH32V307

Ein Blick in den Quellcode offenbart High-Level-API-Funktionen mit verständlichen und leicht zu merkenden Namen für alle Peripherals. Dies vereinfacht natürlich die Programmentwicklung erheblich, da man nicht für jeden kleinen Schritt, den man versucht, das Datenblatt zurate ziehen muss.

Schlussfolgerung

In meinem Leben habe ich eine ganze Reihe von Entwicklungsboards für alle möglichen Prozessoren und Programmierumgebungen ausprobiert. Sie können mir also glauben, wenn ich sage, dass eine so reibungslose Erfahrung extrem selten ist.

Ich bin geneigt zu sagen, dass das CH32V307 Evaluation Board zusammen mit dem MounRiver Studio eine Art Arduino auf Steroiden ist. Es ist genauso einfach zu bedienen wie Arduino, aber der eingebaute Debugger, der von einer professionellen IDE unterstützt wird, sein RISC-V-Kern und die große Anzahl von I/O-Pins machen es noch viel leistungsfähiger.

Hinweis: Die WCH Website ist standardmäßig auf Chinesisch eingestellt, zumindest war das bei mir so, aber Sie können in der oberen rechten Ecke, wo 选择语言 steht, auf Englisch umschalten.

wch website to english