Skip to content

Instantly share code, notes, and snippets.

@mamemomonga
Last active September 9, 2019 01:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mamemomonga/bb915ea66904605598a9331cdbb4ac18 to your computer and use it in GitHub Desktop.
Save mamemomonga/bb915ea66904605598a9331cdbb4ac18 to your computer and use it in GitHub Desktop.
MCP23017メモ

MCP23017メモ

Raspberry Pi と i2c* コマンドでMCP23017の基本的な動作確認

  • i2cを有効にする
  • SDA,SCLを接続する
  • A0~A2 はプルダウン
  • /RESETはプルアップ
  • i2cのプルアップは不要

i2cデバイス検出

# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

ICONでバンクを切り替えられ、それでアドレスが変わる。以下はICON.BANK=0(デフォルト)

出力(PortA)

方向(IODIRA)

i2cset [-f] [-y] [-m MASK] I2CBUS CHIP-ADDRESS DATA-ADDRESS [VALUE] ... [MODE]
# i2cset -y 1 0x20 0x00 0x00

ラッチ(OLATA) PortAを全部Highにする

# i2cset -y 1 0x20 0x14 0xFF

ラッチ(OLATA) PortAを全部Lowにする

# i2cset -y 1 0x20 0x14 0x00

入力(PortB)

方向(IOIRB)

# i2cset -y 1 0x20 0x01 0xFF

入力(GPIOB)

i2cget [-f] [-y] I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]
# i2cget -y 1 0x20 0x13

GPB0のみLowなら

0x00

GPB0のみHighなら

0x01

必要に応じてプルアップ・プルダウンしておくこと。プルアップ機能がある。

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment