2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

M5StackAdvent Calendar 2024

Day 14

M5Stack MP135のGPIO・i2c調査

Last updated at Posted at 2024-12-17

はじめに

M5Stack MP135にM5_CoreMP135_debian12_20240628のイメージを書き込んで起動して、GPIOやi2cがどのように認識されてるか調査しました。

GPIOの調査

Port CのGPIOが使いやすそうなので、どのGPIOにつながっているか、ドキュメントでみてみるとPC6,PC7となっている。

image.png

PC7がGPIOの何番か調べた結果

pin 38 (PC6) 6:GPIOC
pin 39 (PC7) 7:GPIOC
調べ方
root@CoreMP135:/sys/class/gpio# cat /sys/kernel/debug/pinctrl/*/pins
registered pins: 135
pin 0 (PA0) 0:GPIOA
pin 1 (PA1) 1:GPIOA
pin 2 (PA2) 2:GPIOA
pin 3 (PA3) 3:GPIOA
pin 4 (PA4) 4:GPIOA
pin 5 (PA5) 5:GPIOA
pin 6 (PA6) 6:GPIOA
pin 7 (PA7) 7:GPIOA
pin 8 (PA8) 8:GPIOA
pin 9 (PA9) 9:GPIOA
pin 10 (PA10) 10:GPIOA
pin 11 (PA11) 11:GPIOA
pin 12 (PA12) 12:GPIOA
pin 13 (PA13) 13:GPIOA
pin 14 (PA14) 14:GPIOA
pin 15 (PA15) 15:GPIOA
pin 16 (PB0) 0:GPIOB
pin 17 (PB1) 1:GPIOB
pin 18 (PB2) 2:GPIOB
pin 19 (PB3) 3:GPIOB
pin 20 (PB4) 4:GPIOB
pin 21 (PB5) 5:GPIOB
pin 22 (PB6) 6:GPIOB
pin 23 (PB7) 7:GPIOB
pin 24 (PB8) 8:GPIOB
pin 25 (PB9) 9:GPIOB
pin 26 (PB10) 10:GPIOB
pin 27 (PB11) 11:GPIOB
pin 28 (PB12) 12:GPIOB
pin 29 (PB13) 13:GPIOB
pin 30 (PB14) 14:GPIOB
pin 31 (PB15) 15:GPIOB
pin 32 (PC0) 0:GPIOC
pin 33 (PC1) 1:GPIOC
pin 34 (PC2) 2:GPIOC
pin 35 (PC3) 3:GPIOC
pin 36 (PC4) 4:GPIOC
pin 37 (PC5) 5:GPIOC
pin 38 (PC6) 6:GPIOC
pin 39 (PC7) 7:GPIOC
pin 40 (PC8) 8:GPIOC
pin 41 (PC9) 9:GPIOC
pin 42 (PC10) 10:GPIOC
pin 43 (PC11) 11:GPIOC
pin 44 (PC12) 12:GPIOC
pin 45 (PC13) 13:GPIOC
pin 46 (PC14) 14:GPIOC
pin 47 (PC15) 15:GPIOC
pin 48 (PD0) 0:GPIOD
pin 49 (PD1) 1:GPIOD
pin 50 (PD2) 2:GPIOD
pin 51 (PD3) 3:GPIOD
pin 52 (PD4) 4:GPIOD
pin 53 (PD5) 5:GPIOD
pin 54 (PD6) 6:GPIOD
pin 55 (PD7) 7:GPIOD
pin 56 (PD8) 8:GPIOD
pin 57 (PD9) 9:GPIOD
pin 58 (PD10) 10:GPIOD
pin 59 (PD11) 11:GPIOD
pin 60 (PD12) 12:GPIOD
pin 61 (PD13) 13:GPIOD
pin 62 (PD14) 14:GPIOD
pin 63 (PD15) 15:GPIOD
pin 64 (PE0) 0:GPIOE
pin 65 (PE1) 1:GPIOE
pin 66 (PE2) 2:GPIOE
pin 67 (PE3) 3:GPIOE
pin 68 (PE4) 4:GPIOE
pin 69 (PE5) 5:GPIOE
pin 70 (PE6) 6:GPIOE
pin 71 (PE7) 7:GPIOE
pin 72 (PE8) 8:GPIOE
pin 73 (PE9) 9:GPIOE
pin 74 (PE10) 10:GPIOE
pin 75 (PE11) 11:GPIOE
pin 76 (PE12) 12:GPIOE
pin 77 (PE13) 13:GPIOE
pin 78 (PE14) 14:GPIOE
pin 79 (PE15) 15:GPIOE
pin 80 (PF0) 0:GPIOF
pin 81 (PF1) 1:GPIOF
pin 82 (PF2) 2:GPIOF
pin 83 (PF3) 3:GPIOF
pin 84 (PF4) 4:GPIOF
pin 85 (PF5) 5:GPIOF
pin 86 (PF6) 6:GPIOF
pin 87 (PF7) 7:GPIOF
pin 88 (PF8) 8:GPIOF
pin 89 (PF9) 9:GPIOF
pin 90 (PF10) 10:GPIOF
pin 91 (PF11) 11:GPIOF
pin 92 (PF12) 12:GPIOF
pin 93 (PF13) 13:GPIOF
pin 94 (PF14) 14:GPIOF
pin 95 (PF15) 15:GPIOF
pin 96 (PG0) 0:GPIOG
pin 97 (PG1) 1:GPIOG
pin 98 (PG2) 2:GPIOG
pin 99 (PG3) 3:GPIOG
pin 100 (PG4) 4:GPIOG
pin 101 (PG5) 5:GPIOG
pin 102 (PG6) 6:GPIOG
pin 103 (PG7) 7:GPIOG
pin 104 (PG8) 8:GPIOG
pin 105 (PG9) 9:GPIOG
pin 106 (PG10) 10:GPIOG
pin 107 (PG11) 11:GPIOG
pin 108 (PG12) 12:GPIOG
pin 109 (PG13) 13:GPIOG
pin 110 (PG14) 14:GPIOG
pin 111 (PG15) 15:GPIOG
pin 112 (PH0) 0:GPIOH
pin 113 (PH1) 1:GPIOH
pin 114 (PH2) 2:GPIOH
pin 115 (PH3) 3:GPIOH
pin 116 (PH4) 4:GPIOH
pin 117 (PH5) 5:GPIOH
pin 118 (PH6) 6:GPIOH
pin 119 (PH7) 7:GPIOH
pin 120 (PH8) 8:GPIOH
pin 121 (PH9) 9:GPIOH
pin 122 (PH10) 10:GPIOH
pin 123 (PH11) 11:GPIOH
pin 124 (PH12) 12:GPIOH
pin 125 (PH13) 13:GPIOH
pin 126 (PH14) 14:GPIOH
pin 128 (PI0) 0:GPIOI
pin 129 (PI1) 1:GPIOI
pin 130 (PI2) 2:GPIOI
pin 131 (PI3) 3:GPIOI
pin 132 (PI4) 4:GPIOI
pin 133 (PI5) 5:GPIOI
pin 134 (PI6) 6:GPIOI
pin 135 (PI7) 7:GPIOI
root@CoreMP135:/sys/class/gpio#

GPIOを使ってみる

/sys/class/gpioを通してGPIOにアクセスを参考にGPIOが使えるか試して見る

root@CoreMP135:/# echo 39 > /sys/class/gpio/export
-bash: echo: write error: Invalid argument

うまくいかない。

dmesgを確認するとserialポートとして使われているので、使えないというエラー。確かにPC7はPORT Cでシリアルポートとして使われているので、正しい。

[134733.553210] stm32mp135-pinctrl soc:pinctrl@50002000: pin PC7 already requested by 44003000.serial; cannot claim for GPIOC:39
[134733.553315] stm32mp135-pinctrl soc:pinctrl@50002000: pin-39 (GPIOC:39) status -22

シリアルポートを停止して、GPIOを使えないか、いろいろ試みてみましたが、うまく行かない。
次のコマンドを実行すると、帰ってこない。

root@CoreMP135:/# systemctl stop sys-devices-platform-soc-44003000.serial-tty-ttySTM0.device

状態を確認してみると、stoppingがTimed outしてる。止める機能が実装されてないのね。

root@CoreMP135:/# systemctl status sys-devices-platform-soc-44003000.serial-tty-ttySTM0.device
● sys-devices-platform-soc-44003000.serial-tty-ttySTM0.device - /sys/devices/platform/soc/44003000.serial/tty/ttySTM0
     Loaded: loaded
     Active: active (plugged) since Thu 2024-09-05 12:40:42 UTC; 1 day 13h ago
     Device: /sys/devices/platform/soc/44003000.serial/tty/ttySTM0

Sep 06 12:33:56 CoreMP135 systemd[1]: sys-devices-platform-soc-44003000.serial-tty-ttySTM0.device: Job sys-devices-plat>
Sep 06 12:33:56 CoreMP135 systemd[1]: Timed out stopping sys-devices-platform-soc-44003000.serial-tty-ttySTM0.device - >
Sep 06 12:33:56 CoreMP135 systemd[1]: sys-devices-platform-soc-44003000.serial-tty-ttySTM0.device: Job sys-devices-plat>
root@CoreMP135:/#

結論

  • GPIOの認識はできている
  • デバイスツリーでシリアルポートを無効にすれば使えそう
  • Overlay Device Trees supportでデバイスツリーの追加はできそう

I2C調査

M5STACK-U171をつないで検出されるか確認
ドキュメントによれば、PORTAのi2cは、/dev/i2c-1。番号は1番の様子。

root@CoreMP135:/sys/class/gpio# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --
root@CoreMP135:/sys/class/gpio#

取り外すと、68,76が表示されなくなるので、確かに検知されてる。
これは問題なく使えそう。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?