タラバガニー設計局stalins.clubNOTE/notes/ch32-pioc

CH32のPIOCはMCU内に置かれた小さなプロトコル処理CPUとして見ると面白い

CH32を理解するためのノート群 のうちPIOCを扱う。

事実

CH32X035などにはPIOC(Programmable Protocol I/O Controller)がある。

PIOCは単なるシフトレジスタやUARTではなく、専用命令を実行する小さなプログラマブルコントローラとして構成されている。資料ではRISC8Bと呼ばれる8bit系コア、専用命令領域、レジスタ、タイマ、GPIOなどが示されている。

公開されている例では、WS2812や1-Wire系デバイスのように、タイミング依存の強い信号生成・受信へ使われている。

コミュニティ側にはPIOC用のassembler/disassemblerを実装する試みもある。

考察

役割はRP2040のPIOに近い。

メインCPUでbit-bangすると、

  • 割り込みレイテンシに依存する
  • CPU時間を浪費する
  • OSやUSB処理と競合する

ような処理を、小さな専用実行器へ追い出せる。

一方でRP2040 PIOほど開発環境が広く普及しているわけではない。PIOCそのものが優れていても、assembler、debug、サンプルの量が利用価値を左右する。

WCHの「周辺回路を固定機能として入れるだけでなく、用途依存の信号処理を小さなプログラマブル回路へ逃がす」という考え方として見ると興味深い。

向く用途

  • WS2812系LED
  • 1-Wire
  • 独自single-wire protocol
  • IR/特殊pulse protocol
  • 厳密なbit timingを持つ単純I/O

ただし高速・複雑なprotocol全般を置き換えるものではない。

関連

X035全体についてはCH32X035は低価格MCUにUSBとUSB PDを同居させる意味が大きい。

出典

▸ ノート一覧に戻る