Seeed Studio XIAO ESP32C3のI/O割り付けに注意

Seeed K.K.の松岡です。
最近、Seeed Studio XIAO ESP32C3を使った某プロジェクトの回路を設計しました。基板を作って動かしてみると、なにもしていないのにLEDが点灯するとか、ファームウェアが書き換えできなくなるなどI/O割り付けに起因した問題がいくつか発生しました。
この経験で得られた知見を共有します。

  • D9はスイッチ入力に使う
  • D6ピンは極力使わない
  • D8はプルアップする

D9はスイッチ入力に使う

Seeed Studio XIAO ESP32C3のD9はESP32-C3のGPIO9(15)プルアップ抵抗(R6)BOOTボタンに繋がっています。このBOOTボタン(とRESETボタン)で手動でESP32-C3のboot modeを切り替えできるようにしています。

BOOTボタンを押すとD9がGNDに接続するので用途が限られます。スイッチ入力に使うのが無難でしょう。

D6ピンは極力使わない

Seeed Studio XIAO ESP32C3のD6はESP32-C3のU0TXD(28)に繋がっています。U0TXDには1st/2nd stage bootloaderの動作状況が115200, 8, N, 1でテキスト出力されます。

D6は起動時にUART出力に設定されるので、もしD6を入力として使うと不用意に大電流が流れてしまう危険性があります。出力で使うようにしましょう。

ただし、このD6はUART出力なのでいくつか気をつけなければいけません。1つは通信していない待機時はHIGHなことです。たとえば、アクティブHIGHでモーターが動くように配線していると、勝手にモーターが動いてしまいます。怖いですね...。もう1つは1st/2nd stage bootloaderのテキスト出力です。起動直後に信号がバタバタとHIGH/LOWするので必要に応じて対策しなければいけません。

D6はなるべく使わないようにしましょう。(もちろん理解した上で使うのは問題ないです。)

D8はプルアップする

Seeed Studio XIAO ESP32C3のD8はESP32-C3のGPIO8(14)に繋がっています。GPIO8はBOOTボタンを押しながら起動してboot modeをdownload bootにしたときに参照されていて、そのときにHIGHになっていないといけません。(ここに「The strapping combination of GPIO8 = 0 and GPIO9 = 0 is invalid and will trigger unexpected behavior.」と書かれています。)

download bootを使うときは、プルアップ抵抗を追加して、起動時にGPIO8がHIGHになるようにしておきましょう。

参考リンク

変更履歴

日付 変更者 変更内容
2023/4/1 松岡 作成