CH32V006 を使ってみた その1
ここ数年低価格マイコンとして定着した感のある CH32V003 ですが、 昨年発表された新製品がやっと入手できるようになったので、簡単にテストします。
CH32V006 とは
CH32V003 の後継機として発表された一連のシリーズのひとつです。 大きな変更箇所は以下の通りです
- RISC-V コアの改良 (乗算命令の追加)
- メモリの量が増えた (64K Flash/8KB RAM)
- ADC のビット数が増えた
- タイマーの数が増えた
- USART の数が増えた
ピン配置も同じですし、1-Wire で書き込みを行うのも変わっていません。 お値段もほぼ同じです。
開発環境
CH32V003 と同じ MounRiverStudio が標準です。 書き込み機も 1-Wire 対応の WCH-LinkE などが必要です。
SDK について
基本的に CH32V003 と同じなので、コードは大体そのまま動く…のかと思いましたが、 めちゃ大きな変更があります。
クロック周りの名前が APB
から PB
に変更になっているので、関数名や定義を全部変えないといけません。
たとえば、CH32V003 でこんなコードは、
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOD | RCC_APB2Periph_TIM1, ENABLE);
このように変更になります。
RCC_PB2PeriphClockCmd( RCC_PB2Periph_GPIOD | RCC_PB2Periph_TIM1, ENABLE);
また、GPIO の設定にも変更があります。
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
が、こうなります。
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_30MHz;
多分他にも細かい変更点はありそうですが、 周辺機器の構成やピン配置はほぼ同じなので、大きな変更は不要だと思います。
テスト
CH32V003 の exampleにある。polytone
を使います。
変更箇所は、上記の RCC 周りと GPIO Speed の 2 点です。
CH32V006 では MRS のテンプレートは 48MHz 内蔵クロックになっていたので、そのまま使えます。