最近 M5 Stack を使い始めたのですが, いくつかハマりどころに引っかかりまくっているので, 自分のためにまとめておこうと思います。
GPIOについてのハマりどころ
使うべからずポート
GPIO 25, Audioと共有
GPIO 23, LCDと共有
GPIO 19, SDと共有
GPIO 18, LCDと共有
GPIO 3, TXDと共有
GPIO 1, RXDと共有
GPIO 0 PULLUP BOOTと共有
まず, M5 Stack は 使われているメインSoC の ESP32 の全ピンが外に出ていません。
残った数少ないポートも 内蔵された機能である LCDやボタン, スピーカー等 と共有されていて, LCDを有効化すると内部で動いてしまいます
注意して使うポート
GPIO 34-39 入力オンリー
M5 Stack のポートで外に出ている中では 34, 35, 36 だけですが, これらは入力専用で出力が使えません。 また, 内部でPULLUP も出来ないので,外付けする必要があります。
GPIO 2, [GPIO 0]が0の時, これも0でリセットされるとダウンロードモードになる
GPIO 12, 起動時に1だと LDOが1.8V, 0だと3.3Vになる
GPIO 15 , GPIO 5 標準でPULLUP 起動時に設定すると SDIOスレーブタイミングの設定
電源
充電中は電源を切ることが出来ません。 ※電源の切り方は 電源ボタンを(ゆっくりめに)2回押し
バッテリー
バッテリー端子は保護回路無しで並列接続されます。 電圧や容量の異なるバッテリーを接続するとバッテリー同士で充放電が起き, 最悪の場合 過電流により発熱・発火する危険性があります。
スピーカー
dacWrite(25, 0); // Speaker OFF ノイズが出るので, 0を出力しておく。 使えそうまとめ
GND | 1 | 2 | ADC1 | GPIO 35 | |
GND | 3 | 4 | ADC2 | GPIO 36 | |
GND | 5 | 6 | RESET | EN | |
GPIO 23 | MOSI | 7 | 8 | DAC0/AUDIO_L | GPIO 25 |
GPIO 19 | MISO | 9 | 10 | DAC1/AUDIO_R | GPIO 26 |
GPIO 18 | SCK | 11 | 12 | 3.3V | |
GPIO 3 | IO0/RXD1 | 13 | 14 | IO1/TXD1 | GPIO 1 |
GPIO 16 | IO2/RXD2 | 15 | 16 | IO3/TXD2 | GPIO 17 |
GPIO 21 | IO4/SDA | 17 | 18 | IO5/SCL | GPIO 22 |
GPIO 2 | IO6 | 19 | 20 | IO7 | GPIO 5 |
GPIO 12 | IO8/IIS_SCLK | 21 | 22 | IO9/IIS_WS | GPIO 13 |
GPIO 15 | IO10/IIS_OUT | 23 | 24 | IO11/IIS_MCLK/BOOT | GPIO 0 |
HPWR | 25 | 26 | ADC0/IIS_IN | GPIO 34 | |
HPWR | 27 | 28 | 5V | ||
HPWR | 29 | 30 | BATTERY | ||
他にも気づいたら追記します。