質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

2回答

14826閲覧

ラズベリーパイでI2C対応のLCDモジュールが認識できない

IzuShin

総合スコア68

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2017/05/16 08:59

ラズベリーパイ3でI2C対応のLCDモジュール(ACM1602N1-FLW-FBW)に接続しております。

電源(3.3V)、GND、SCL、SDAの結線は誤っておりません。
ですが、i2cdetectコマンドを打ってもLCDモジュールが表示されません。
※本当なら0x50と表示されると思うのですが…。
ちなみに同様に温度センサモジュールを接続したところ、i2cdetectコマンドでデバイスの認識が確認できました。

ネットの情報でI2Cの通信速度が疑わしいとの記述がありましたので、50kHzに設定して再起動しましたが認識されないままでした。

このような場合は何を調べるのがよろしいでしょうか?
ご存知の方がおられましたら教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

まずはLCDモジュールに十分な電源が供給できているか、SCLとSDAを逆に繋いでいないか、通信ラインのプルアップ電圧や容量や抵抗の制約を守れる回路になっているかを確認します。

回路が大丈夫なら、今度はオシロスコープをSCLとSDAに繋いでみて、i2cdetectの実行によってちゃんと物理的に通信波形が出ているか、波形から通信バイト列を逆算してみてLCDモジュールのデバイスアドレスやコマンドが仕様にあったものになっているか、LCDモジュールから応答として何らかの波形が返ってきているか等を確認します。

オシロで波形からコマンドを逆算するという経験は1回はやっておいた方が後々役に立つのですが面倒な作業なので、2回め以降はオシロのI2Cデコード機能やRATOC REX-USB62のようなI2Cバスアナライザを併用するのが現実的だと思いますが。

i2cdetectのような出来合いのツールは簡単な確認には便利ではありますが、全てのI2Cデバイスで使えるほど汎用的でも厳密でもなく、EEPROMやIOエクスパンダ程度ならいいのですが、専門的だったり独自だったりするデバイスとの通信を試みるなら、最初からC言語でI2Cそのものの動作に近いAPIを使うとか、RATOC REX-USB61mk2のようなI2Cエミュレータなどで事前に動作確認をして制御手順を確立しておいてから組み合わせるとかして、問題を切り分けていく方が良いと思います。

投稿2017/05/16 13:14

....

総合スコア102

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

IzuShin

2017/05/17 04:10

scoreさん ご回答ありがとうございます。 オシロスコープで SCLとSDAが正常かどうかわかるのですね。 今週から電子回路をはじめた初心者なもので、オシロスコープの扱いまでは考えていなかったのですが、今後のためにもやるようにします。 ありがとうございました。
guest

0

ベストアンサー

このような場合は何を調べるのがよろしいでしょうか?

データシートを見てください。

LCDモジュールは秋月で売ってるものだと思いますが、データシートによると

It just only could write Data or Instruction to LCM by the IIC Interface.

It could not read Data or Instruction from LCM (except Acknowledge signal).

だそうです。「ACM1602NI-FLW-FBW-M01 i2cdetect」でググると同じ件が出てきます。こういう書き込み専用のデバイスはi2cdetectで一覧表示できないようです。一覧で出ないだけなので、とりあえず0x50にDISPLAY INSTRUCTIONを送ってみてはどうでしょうか。

参考:

投稿2017/05/17 02:01

sharow

総合スコア1149

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

IzuShin

2017/05/17 04:21

sharowさん ご回答ありがとうございます。 i2cdetectで一覧表示されないのが正常なのですか…。 ですが、ディスプレイに「A」と出力させるために以下のようなコマンドを打ってもエラーになってしまいます。 sudo /usr/sbin/i2cset -y 1 0x50 0x80 0x41 エラーは以下です。 Write failed i2Cデバイスとして認識されていたとして、他にも問題があるのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問