1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MCP23S17の制御 覚え書き

Posted at

MCP23S17 セットアップ

SPIインタフェースで16ビットパラレルインタフェースに接続できるMCP23S17は安価で便利なデバイスであるが、その分制御が複雑でややわかりにくい。
そこで使う上で勘所となることを記録しておくことにした。

1.パワーオンリセット
 MCP23S17には電源投入時にリセットがかかる機能があるが、あまり使えない。
 通常コントローラのSPIがその後初期化されるので各信号線が変化することがある。この変化をMCP23S17が受け取るのでその次のSPIからのパケットを正しく受け取れない。
 回避策は、MCP23S17のリセット信号をコントローラに接続し、コントローラのSPIの初期化後にリセットをかけ直すことで回避できる。

2.リセット
 データシートによるとリセット信号はレベルで動作しているように見えるが、
立ち下がりと立ち上がりの両エッジが必要なようだ(詳細は検証していない)。
 1の回避策を採用する場合は、ハイレベルにしてある(リセット解除)状態からローレベルにしてハイレベルに戻す操作を要する。

3.データ転送
3.1 デバイスの設定 
 16ビットのパケットを送る。
3.2 読み出し、書き込み
 バイトモードとワードモードがあるが、コマンドが16ビットなのとデバイスのポートが16ビットなので私はワードモードを好んでいる。
 ワードモードの場合、読み出しも書き込みもパケットは32ビット(2ワード)である。1ワード目がコマンドで、2ワード目がデータで読み出しの場合は適当な値を1ワード送信するとMISOに読み出しデータが乗ってくる。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?