アプリ版:「スタンプのみでお礼する」機能のリリースについて

Raspberry PiのI2Cのクロック(baudrate)を変更したい.
Raspberry Pi2 model Bを使用しています.I2C接続のLCD (ACM1602NI)を接続し,ディスプレイに文字を表示させたいのですがうまく行きません.

このLCDを動作させるにはクロックを50KHzに抑えないと正常に動作しないのですが(RPiのデフォルトは100kHz),どうやらその設定がうまく行っていないようです.
i2c-tools,python-smbusはインストール済みで,raspi-configによりI2Cを有効にしています.また/etc/modulesに「i2c-dev」を追記しています.


ネット上のブログや書籍を参考に,

# sudo modprobe -r i2c-bcm2708
# sudo modprobe i2c-bcm2708 baudrate=50000

を実行したり,/etc/modprobe.d/i2c.confを

options i2c_bcm2708 baudrate=50000

のように編集しrebootしたのですが,

# /usr/sbin/i2cset -y 1 0x50 0x00 0x01
Error: Write failed

のようなエラーが起きます.また,pythonで動かそうとすると「IOError: [Errno 5] Input/output error」というエラーになります.
以下のコマンドでモジュールの起動を確認すると,

# dmesg | grep i2c
[ 4.490547] bcm2708_i2c_init_pinmode(1,2)
[ 4.500858] bcm2708_i2c_init_pinmode(1,3)
[ 4.511243] bcm2708_i2c 3f804000.i2c: BSC1 Controller at 0x3f804000 (irq 79) (baudrate 100000)
[ 7.194331] i2c /dev entries driver

とありbaudrateが50000になっていないのが問題なのかなあと推測したのですがいかがでしょうか.

解決策等あればご教示いただければと思います.

必要な情報があればお申し付けくださいませ.

質問者からの補足コメント

  • neorg様

    回答をありがとうございます.
    i2cdetectを実行しなくてもこのようなエラーが発生しました.
    また,その後誤ってi2cdetect実行してしまいましたが,RPiの電源を入れな直して対処しました.(正しい対処かわかりませんが...)

    プルアップ抵抗に関しては
    http://100year.cocolog-nifty.com/blog/2012/05/i2 …
    http://seppina.cocolog-nifty.com/blog/2014/09/pi …
    こちらのブログを参考に10kΩの抵抗を追加しましたが依然動作しません.

    よろしくお願いします.

      補足日時:2015/06/20 02:18

A 回答 (2件)

追加したってことはつけてなかったのですよね?


内部でプルアップされているみたいなのでつけないほうがいいみたいです。

電源は、ラズパイではなく液晶のほうを入れな直したほうがいいみたいです。
http://avr.gawakaru.jp/archives/735

また、他のI2Cの機器(センサー)など持っていたらちゃんと通信できているかなど確認するといいかもしれません
    • good
    • 0

i2cdetectなどのコマンドでreadしてませんか?


内臓のEEPROMのアドレスとかぶってしまうため動作しなくなるそうです。
http://qiita.com/wtakuo/items/e7b4cc14ca55125eacf0

あと、プルアップ抵抗の値が適切でないと通信がうまくいかないこともあるみたいです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!