ゆるく楽しむプログラミング

M5StickC Plusを使ってみた


秋月電子通商
SWITCH SIENCE
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 STOP  TESTC 
01h Control Status 2 N N N TI_TP AF TF AIE TIE 
02h VL Seconds  VL  SECONDS(0~59) 
03h Minutes  MINUTSE(0~59) 
04h Hours  HOURS(0~23) 
05h Days  DAYS(0~31)      
06h Weekdays  WEEKDAYS(0~6) 
07h Century months  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

スペックシートの必要そうなトコだけ翻訳したPDF

サンプルプログラムソースコード


M5StickC-LCD:ST7789V 操作サンプル
以上の スケッチを公開しています。

YuruPuro/M5StickC

解説動画