M5StickC Plusを使ってみた
![]() |
ESP32 240 MHzデュアルコア 520KB SRAM フラッシュメモリ 4 MB Wi-Fi / デュアルモードBluetooth 135*240 カラーTFT LCD(ST7789v2) カスタムボタン x 2 LED 赤色LED IMU MPU6886 IR 赤外線送信機 マイクロフォン SPM1423 RTC BM8563 PMIC(電源管理) AXP192 バッテリ 120 mAh @ 3.7 V |
M5AtomにLCDが付いただけ・・・と思って使ってみたら、意外にM5Atomとは別物でした。
かなり癖があるのでM5StickC Plusの内蔵デバイスの使用方法をまとめてみました。
LCD ST7789V
M5Atomにつないでみたカラーディスプレー ST7789 の解像度違いのディスプレーコマンドは互換ですが、240x320ドットのLCD操作用なのでフレームメモリーのサイズが異なります。
M5StickC PlusのLCDは135x240ドットなので、フレームメモリーのサイズと実際のLCDのサイズが異なるため、
メモリーと表示デバイスは▼の対応になっています。
上下の80ドットはスクロールすれば表示できますが、左右の105ドットは表示する手段がありません。
ST7789Vとの接続は| 接続ピン | ||
|---|---|---|
| 機能 | ピン番号 | 説明 |
| CS | 5 | Chip Select |
| MOSI | 15 | Master In Slave Out |
| CLK | 13 | Clock |
| DC | 23 | Data / Command |
| RST | 18 | Reset |
| SPI |
|---|
| MODE 0 |
| MSBFIRST |
RTC BM8563
RTC BM8563はI2Cで接続されています| I2Cアドレス | 0x51 |
| SDA | 21 |
| SCL | 22 |
※取りあえず、STOPを0しとけば動く
時刻は全てBCD(2進化10進数)表記
| アドレス | レジスタの説明 | Bit 0 | Bit 1 | Bit 2 | Bit 3 | Bit 4 | Bit 5 | Bit 6 | Bit 7 |
|---|---|---|---|---|---|---|---|---|---|
| 00h | Control Status 1 | TEST 1 | N | STOP | N | TESTC | N | N | N |
| 01h | Control Status 2 | N | N | N | TI_TP | AF | TF | AIE | TIE |
| 02h | VL Seconds | VL | SECONDS(0~59) | ||||||
| 03h | Minutes | x | MINUTSE(0~59) | ||||||
| 04h | Hours | x | x | HOURS(0~23) | |||||
| 05h | Days | x | x | DAYS(0~31) | |||||
| 06h | Weekdays | x | x | x | x | x | WEEKDAYS(0~6) | ||
| 07h | Century months | C | x | x | MONTHS(1~12) | ||||
| 08h | Years | YEARS(0~99) | |||||||
電源管理 AXP192
M5StickC Plusの電源関係はAXP192で制御されています外部端子とGROVEコネクタの5V電源、LCDのバックライト、LCDの電源がディフォルトでOFFになっています。
これらを使用するにはAXP192のレジスタを操作して、電源のON/OFFと電圧値を設定する必要があります。
AXP192はI2Cで接続されています。
| I2Cアドレス | 0x34 |
| SDA | 21 |
| SCL | 22 |
▼M5StickC Plusの構成図(クリックで拡大)

関係しているレジスタは▼
| グループ 1、電力制御クラス | |||
|---|---|---|---|
| アドレス | レジスタの説明 | R/W | デフォルト値 |
| 00 | 電源ステータス レジスタ | R | |
| 01 | 電力モード/充電ステータス レジスタ | R | |
| 04 | OTG VBUS ステータス レジスタ | R | |
| 06-0B | データバッファレジスタ 0-5 | R/W | F0/0F/00/FF/00/00 |
| 10 | EXTEN & DC-DC2 スイッチ制御レジスタ | R/W | X5H |
| 12 | DC-DC1/3 & LDO2/3 スイッチ制御レジスタ | R/W | XFH |
| 23 | DC-DC2 電圧設定レジスタ | R/W | 16H |
| 25 | DC-DC2 電圧スロープパラメータ設定レジスタ | R/W | 00H |
| 26 | DC-DC1 電圧設定レジスタ | R/W | 68H |
| 27 | DC-DC3 電圧設定レジスタ | R/W | 48H |
| 28 | LDO2/3 電圧設定レジスタ | R/W | CFH |
| 30 | VBUS-IPSOUT チャネル設定レジスタ | R/W | 60H |
| 31 | VOFF シャットダウン電圧設定レジスタ | R/W | X3H |
| 32 | シャットダウン、バッテリ検出、CHGLED 制御レジスタ | R/W | 46H |
| 33 | 充電制御レジスタ 1 | R/W | C8H |
| 34 | 充電制御レジスタ 2 | R/W | 41H |
| 35 | バックアップ電池充電制御レジスタ | R/W | 22H |
| 36 | PEK パラメータ設定レジスタ | R/W | 5DH |
| 37 | DCDCコンバータ動作周波数設定レジスタ | R/W | 08H |
| 38 | バッテリ充電温度低下アラーム設定レジスタ | R/W | A5H |
| 39 | バッテリ充電高温アラーム設定レジスタ | R/W | 1FH |
| 3A | APS ローパワー Level1 設定レジスタ | R/W | 68H |
| 3B | APS ローパワーレベル 2 設定レジスタ | R/W | 5FH |
| 3C | 電池放電低温警報設定レジスタ | R/W | FCH |
| 3D | バッテリ放電高温アラーム設定レジスタ | R/W | 16H |
| 80 | DCDC 動作モード設定レジスタ | R/W | E0H |
| 82 | ADC イネーブル設定レジスタ 1 | R/W | 83H |
| 83 | ADC イネーブル設定レジスタ 2 | R/W | 80H |
| 84 | ADC サンプリングレート設定、TS 端子制御レジスタ | R/W | 32H |
| 85 | GPIO [3:0] 入力レンジ設定レジスタ | R/W | X0H |
| 86 | GPIO1 ADC IRQ 立ち上がりエッジしきい値設定 | R/W | FFH |
| 87 | GPIO1 ADC IRQ 立ち下がりエッジしきい値設定 | R/W | 00H |
| 8A | タイマー制御レジスタ | R/W | 00H |
| 8B | VBUS 監視設定レジスタ | R/W | 00H |
| 8F | 過熱シャットダウン制御レジスタ | R/W | 01H |
レジスタ詳細
| REG 10H:EXTEN & DC-DC2出力制御 | |||
|---|---|---|---|
| ビット | 説明 | R/W | デフォルト |
| 7-3 | 予約済みで変更不可 | ||
| 2 | EXTEN スイッチ制御 0: 閉; 1: 開 | R/W | X |
| 1 | 予約済みで変更不可 | ||
| 0 | DC-DC2 スイッチ制御 0: 閉; 1: 開 | R/W | X |
| REG 12H: 電源出力制御 | |||
|---|---|---|---|
| ビット | 説明 | R/W | デフォルト |
| 7 | 予約済みで変更不可 | R/W | X |
| 6 | EXTEN スイッチ制御 0: 閉; 1: 開 ※外部出力電源(5V) |
R/W | X |
| 5 | 予約済みで変更不可 | R/W | X |
| 4 | DC-DC2 スイッチ制御 0: 閉; 1: 開 | R/W | X |
| 3 | LDO3 スイッチ制御 0: 閉; 1: 開 ※LCDのバックライト |
R/W | X |
| 2 | LDO2 スイッチ制御 0: 閉; 1: 開 ※LCD |
R/W | X |
| 1 | DC-DC3 スイッチ制御 0: 閉; 1: 開 | R/W | X |
| 0 | DC-DC1 スイッチ制御 0: 閉; 1: 開 | R/W | X |
| 注: REG12Hbit6/4 はそれぞれ REG10Hbit2/0 に対応します。 | |||
| REG 28H: LDO2/3 出力電圧設定 | デフォルト: CFH | ||
|---|---|---|---|
| ビット | 説明 | R/W | デフォルト |
| 7 | LDO2 出力電圧設定 Bit3 1.8-3.3V, 100mV/step | R/W | 1 |
| 6 | LDO2 出力電圧設定 Bit2 | R/W | 1 |
| 5 | LDO2 出力電圧設定 Bit1 | R/W | 0 |
| 4 | LDO2 出力電圧設定 Bit0 | R/W | 0 |
| 3 | LDO3 出力電圧設定 Bit3 1.8-3.3V, 100mV/step | R/W | 1 |
| 2 | LDO3 出力電圧設定 Bit2 | R/W | 1 |
| 1 | LDO3 出力電圧設定 Bit1 | R/W | 1 |
| 0 | LDO3 出力電圧設定 Bit0 | R/W | 1 |
| REG 32H: シャットダウン設定、バッテリー検出、CHGLED ピン制御 | デフォルト: 46H | ||
|---|---|---|---|
| ビット | 説明 | R/W | デフォルト |
| 7 | モード A でのシャットダウン制御 このビットに 1 を書き込むと、AXP192 の出力がオフになります。 |
R/W | 0 |
| 6 | 電池監視機能設定ビット:0:閉、1:開 | R/W | 1 |
| 5-4 | CHGLED 端子機能設定 00: 高耐性 01: 25% 1Hz フリッカー 10: 25% 4Hz フリッカー 11: 出力ローレベル |
R/W | 00 |
| 3 | CHGLED 端子制御設定 0: 充電機能による制御 1: レジスタ REG 32HBit[5:4] で制御 |
R/W | 0 |
| 2 | 予約済みで変更不可 | ||
| 1-0 | N_OE がローからハイに変化した後の AXP192 シャットダウン遅延時間 00: 0.5 秒; 01: 1 秒; 10: 2秒; 11: 3秒 |
R/W | 10 |
サンプルプログラムソースコード
以上の スケッチを公開しています。
