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 | 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 |
スペックシートの必要そうなトコだけ翻訳したPDF
サンプルプログラムソースコード
M5StickC-LCD:ST7789V 操作サンプル
以上の スケッチを公開しています。
YuruPuro/M5StickC