● 実験テーマ6

「ソフト記述による、I2C検討計画2(EEPROM)」の顛末記

■ 2010.09.08
  ・スレーブ側の素子を、RTCからEEPROMに変え動作確認することにした。
  ・RTCとの違いは?
   @ スレーブアドレスが、RTCと当然異なる。
   A デバイスアドレス指定が、AT24C256を使用した場合、0〜32767(0x7FFF)を上位8bit、下位8bitに
      分けて送出する必要がある。
  ・違いを踏まえて、チェックプログラムを作成した。
   チェックプログラムの内容は、EEPROMの1234番地に、0x55を、1235番地に、0xAAを書込んだ後、それを
   読出し、その内容をLCDに表示するという簡単なものにした。

 

 

 

 

 

 

 

 

 

 

 


■ 2010.09.09
  ・デバッグ開始
  ・何回やっても、EEPROMの1234番地へのデータ書込み時、スレーブからのACK受信が出来ない状態が
   続いた。


■ 2010.09.10
  ・何故、ACK受信できないかの原因を探った。
  ・EEPROM自体が悪いのかと思い、EEPROMをソケットから外し、スレーブからのACKをプログラム上で
   無視するようにすれば、ACKサーチのところで永久ループしなくなるので、プログラムが最後まで走る
   はずである?
  → 結果最後まで走ったが、EEPROMを外してあるので、0xFFしか読み出せない。
    逆に、EEPROMが正常でACKが正しく受信できれば後は問題ないように思える。

  ・現在タイミング測定をするためにSCLラインにソフト・オシロ2の簡易プローブを接続しっぱなしにしてあ
   るが、ひょっとしたら、そのプローブ容量の影響でSDAとのタイミングがズレ、ACKが受信できなく
   書込み・読込みに失敗していると想定し、プローブを外してみたら、見事その想定は正解で指定番地
   に書込んだデータがLCDに正しく表示できた。

  ・本番は、SCLを約100kHzに戻すが、SCLラインにプローブを接続しなければ正しく動くので今回は、
   高速オシロ+正規のプローブを持ち合わせてないこともあり、これ以上追求できないので、これで本件
   は一旦クローズすることにした。

  ・以下にこれまでの結果を示します。


 

 

 


<最終回路図>
 ・ この時点では、回路図CADを持ち合わせてなかったので、画像の貼り合わせと、オートシェープで作成してました。
   尚、dsPIC(トレーニングボード)側の回路は、主要な部品のみの接続を示しています。

<最終ソース・ファイル>
 ・こちらから、どうぞ→ soft_i2c_eeprom_check_4013.c


← 実験テーマ1に戻る   TOP PAGEに戻る   実験テーマ7へ →