2015年10月1日木曜日

シーケンサー基板とI2C LCDのAE-AQM1602Aの同時利用

自作のシーケンサー基板と秋月のI2C LCDのAE-AQM1602Aを同時に使ってみた。

最終的には動作したが、またまた、かなりハマりまくった(^q^;

ブレッドボード図
<修正: 2015.10.25> 配線が間違っていたので図を差し替えました。
</修正>


何にハマったかと言うと、I2Cの信号線のプルアップ用のRの抵抗値だ。

AE-AQM1602Aの場合、整理すると

  • 1kΩでプルアップ
    シーケンサー基板動作OK、AQM1602表示されず(I2C通信エラー)
  • 4.7kΩでプルアップ
    シーケンサー基板動作OK、AQM1602の動作もOKだが、数分後にシーケンサー基板がエラー(I2C通信エラー)
  • 10kΩでプルアップ
    シーケンサー基板動作OK、AQM1602の動作もOK。(1時間程度動作させているがまだ大丈夫そう。)

という結果になった。

オシロで波形を確認 (LCDの初期化コマンド)

1kΩでプルアップ

ch1:SDA ch2:SCL

途中でエラーになって終了しているようだ。

4.7kΩでプルアップ

10kΩでプルアップ

拡大

1kΩでプルアップ

先頭はAE-AQM1602Aのスレーブアドレスのはずなので、0111:1100(0x7c)のはずだが、なんかおかしいなぁ(^q^;

4.7kΩでプルアップ

10kΩでプルアップ

AE-AQM1602Aで動作確認済みのPSoC Creatorのプロジェクト
https://github.com/ryood/PSoC4_sequencer_master/tree/master/Sequencer_Master_AQM1602.cydsn

シーケンサー基板のAtmel Studioのプロジェクト
https://github.com/ryood/RhythmMachine/tree/master/Atmel%20Stduio/Sequencer_I2C_Slave

SPL792-I2C

AE-AQM1602Aではなんとか動かせたが、最初aitendoのSPL792-I2Cでテストしていてなかなか動かなかった。

Rをいろんな値に変えてやってみたが、


  • 4.7kΩでプルアップ 
    シーケンサー基板動作NG(I2C通信エラー)、LCD動作OK
  • 3.3kΩでプルアップ 
    シーケンサー基板動作OK、LCD表示されず(I2C通信エラー)


と、4.7kΩと3.3kΩの間でどちらかが動作しなくなる。

I2Cはかれこれ1年ぐらい格闘しているがいまだに謎が多すぎてよくわからない。