Dans cet essai, nous allons examiner la carte d'évaluation CH32V307 de WCH, que vous connaissez peut-être pour ses convertisseurs USB-série CH340/CH341 que l'on trouve souvent sur les cartes MCU bon marché en provenance d'Asie. La carte d'évaluation CH32V307 est une sorte de carte de dérivation pour le microcontrôleur CH32V307VCT6 de WCH. Il s'agit d'un MCU 32 bits construit autour d'un cœur RISC-V de QingKe.

Qu'est-ce que la carte d'évaluation CH32V307 ?

Avant d'examiner le MCU plus en détail, jetons un coup d'oeil à la carte qui l'héberge. A part de nombreux connecteurs, il n'y a pas grand chose sur cette carte. La carte est équipée de chaque côté d'un connecteur de 54 broches à 2 rangées. Entre ces connecteurs se trouvent des broches de connexion de type Arduino-UNO. Le MCU dans son boîtier LQFP à 100 broches se trouve au centre de la carte.

Sur l'un des petits côtés, appelons-le le côté droit, se trouvent deux connecteurs USB-C et une prise Ethernet. Le connecteur USB-C inférieur (P7) est relié à un régulateur de tension. Sur le côté gauche se trouvent deux interrupteurs tactiles et deux leds.

 
WCH CH32V307 evaluation board
Le module WCH Link à gauche est amovible.

Débogueur inclus

La carte s'étend un peu sur la gauche avec une interface série de débogage/programmation détachable basée sur un circuit intégré non marqué. Il s'agit du WCH Link. Elle dispose d'un interrupteur d'alimentation, d'un troisième connecteur USB-C, de trois autres leds et d'une jeu de cavaliers.

Le microcontrôleur CH32V307 RISC-V

Comme indiqué ci-dessus, le microcontrôleur CH32V307 a un noyau RISC-V. Il semble être le fleuron actuel d'une famille assez vaste. Il fonctionne à 144 MHz et dispose de 256 Ko de mémoire flash, de 64 Ko de mémoire vive et de 80 ports GPIO. Comme il s'agit d'un microcontrôleur d'interconnexions, il comporte huit ports série, trois SPI, deux I²C, deux I²S et deux interfaces CAN, ainsi que des interfaces USB2.0 (OTG à pleine vitesse, hôte/périphérique à haute vitesse) et Ethernet (Gigabit avec PHY 10M). En outre, il y a un CAN 12 bits à 16 canaux (avec des capacités de touches tactiles), deux DAC 12 bits, 10 minuteries, une unité de calcul CRC et un TRNG. Et ce n'est pas tout, consultez la fiche technique pour plus de détails.

Au niveau des performances, le CH32V307 est comparable à un ARM Cortex-M4. Il possède des fonctions de multiplication et de division à cycle unique et intègre une unité de calcul FPU.

MounRiver Studio alias MRS

Comme n'y a pas grand-chose à dire sur la carte ni sur le MCU, jetons un coup d'œil sur les outils de développement logiciel. Pour cela, il y a MounRiver Studio (MRS), un environnement de développement intégré (IDE) gratuit basé sur Eclipse pour les microcontrôleurs RISC-V/ARM. J'ai installé la version 1.84.
 
MounRiver Studio debug view
MounRiver Studio basé sur Eclipse en mode débogage.

Un pack d'exemples complet est disponible sur GitHub. Il couvre la plupart si pas tous les périphériques, ainsi que FreeRTOS et d'autres choses.

J'ai commencé par créer un nouveau projet, ce qui est très facile. Le nouveau projet est entièrement configuré et comporte même un exemple de code, de sorte que vous pouvez l'essayer immédiatement. 

Connectez le côté débogage de la carte d'évaluation à un PC Windows. Cela crée un port série USB (WCH-Link SERIAL). Allumez la carte avec S3. Ouvrez un terminal série, et faites-le écouter le nouveau port série à 115 200 bauds.

Trois clics, c'est tout ce qu'il y a à faire

Dans MRS, cliquez sur le bouton Build Project (ou appuyez sur F7). Lorsque la compilation est terminée, cela se passe très rapidement, appuyez sur le bouton debug. Lorsque l'IDE a fini de réorganiser ses fenêtres, vous vous retrouvez au début de votre programme. Cliquez sur Exécuter ou appuyez sur F5 pour voir la sortie du programme apparaître dans le terminal série.

Comme deuxième essai, j'ai importé l'exemple RNG, le générateur de nombres aléatoires. Après avoir exécuté la même séquence de clics sur les boutons que précédemment, des nombres aléatoires sont apparus dans le terminal série.

 
tera term RNG example output
Numéros aléatoires générés par le périphérique TRNG du MCU CH32V307.

API de haut niveau pour le CH32V307

L'inspection du code source révèle des fonctions API de haut niveau avec des noms compréhensibles et faciles à retenir pour tous les périphériques. Bien entendu, cela simplifie grandement le développement des programmes, car il n'est pas nécessaire de consulter la fiche technique pour chaque petite étape à franchir.

Conclusion

Dans ma vie, j'ai essayé un grand nombre de cartes de développement pour toutes sortes de processeurs et d'environnements de programmation, alors vous pouvez me croire quand je dis qu'une expérience aussi fluide est extrêmement rare.

Je suis tenté de dire que la carte d'évaluation CH32V307 associée à MounRiver Studio est une sorte d'Arduino avec des stéroïdes. Elle est aussi facile à démarrer et à utiliser qu'Arduino, mais le débogueur intégré soutenu par un IDE de qualité professionnelle, son noyau RISC-V et le grand nombre de broches d'E/S la rendent beaucoup plus puissante.

Remarque : La langue par défaut du site web de WCH est par défaut le chinois, du moins pour moi, mais vous pouvez passer à l'anglais dans le coin supérieur droit, à l'endroit où il est indiqué 选择语言.

wch website to english

Traduction : Laurent RAUBER