ページ 11

Arduino I2C プルアップ抵抗

投稿記事Posted: 2013年4月29日(月) 16:55
by kkk418jp
I2Cで複数つないだ場合のArduino SCL,SDAのプルアップ抵抗はどう考えればいいでしょうか?
スレブとして音声合成LSI ATP3010F, LCD ACM1602 両方接続した場合はどう考えたらいいですか?
スレブ台数とプルアップ抵抗の関係はどう考えればいいでしょうか?
基本的な質問ですみません。

Re: Arduino I2C プルアップ抵抗

投稿記事Posted: 2013年4月30日(火) 00:29
by yamaguch
kkk418jpさん、こんにちは、

I2C はデータとクロックの2本の信号線を使ったバス型の接続で、これらの2本は Pull-up しておく必要があります。(これは Low にすることで通信の開始を知らせる仕組みになっているためです。GND は図には描いていませんが共有しています)

コード: 全て選択
Vcc --------------+----+
                  |    |
                 []   [] Pull-up
                 |    |
SDA ---+---------+---------------+----------------+---------
       |              |          |                |
      I2C Master      |         I2C Slave1       I2C Slave2
              |       |                |                |   
SCL ----------+-------+----------------+----------------+---

Arduino の A4(SCL), A5(SDA) と Wire ライブラリを使った I2C 接続では Wire.begin() を実行すると A4, A5 ピンが Pull-up されるので、5V の I2C デバイスと接続するときには特に Pull-up はしなくても大丈夫です。5V であれば、接続するデバイスの個数も関係ありません。ご使用になる音声合成 LSI と LCD は共に 5V で動くようですから直接つないで大丈夫だと思います。

なお、3.3 V の I2C デバイスをつなぐときには MOS FET を使ったレベル変換の回路を経由するか、専用の変換モジュール使う必要があるようです。

山口

Re: Arduino I2C プルアップ抵抗

投稿記事Posted: 2013年5月06日(月) 01:31
by kkk418jp
ありがとうございます。