- ベストアンサー
EEPROMの種類を判定する方法について
H8/3052Fボード(秋月より購入)でを使用してi2cのシリアルEEPROMとインターフェースする装置を作成してデータ書き込みは出来るようになったのですが、 EEPROMの種類(512KBなのか512KBなのか)をプログラムで判定して256KBのEEPROMがセットされたらエラーを返すようにしたいのですがいい方法ありませんか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
256じゃかけないエリアにEEPROMのデータが消えてないかを確認するフラグを立てておいて、そのフラグが読めれば512、読めなければ256未満もしくは新品 と言う事にしてはどうでしょう? 例えば、 電源投入時にアドレス510を読み出して、中身が0x5050じゃなかったらエラーを表示しつつ、アドレス510に0x5050を書き込む。 電源投入時にアドレス510を読み出して、中身が0x5050だったら正常と判断。 これをつけるとEEPROMの破損(ノイズで誤動作消去等)も判定できるので、いいかな?と思います。
その他の回答 (1)
- usami33
- ベストアンサー率36% (808/2210)
EEPROMって基板作成時に貼り付けてしまいますよね。 部品の混入等を懸念してのガード処理なのかな? ソフト的にはPortをパタパタさせるだけなので、 アクセスエラー等でサイズ判定は難しい(無理)ので、 アドレスの読み出し機能を使いましょう 24XXシリーズ等はアドレスの読み出し機能があるので、 (※ 読み出すと、アクセスしたアドレスの次のアドレスが返ってきます) 256Byte目のデータを読み出して(最初は初期値の0xFFが返ってくるはず)、 アドレスを255に進めて、アドレスの読み出しを行うと255+1が返ってきます。 (※詳細はご使用のEEPROMのData Sheet参照してください) このとき正常に256が返ってくれば512KのEEPROMだと判断できるはずです。 256Kの場合は、アドレスカウンタが戻って0が返ると思います。 ※ ここまで書いておいて申し訳ないけど、部品混入を前提にこのような機能を盛り込んだことがないので、 256Kでカウンタが本当に戻るか保障できません。 Data Sheetにも記載がないですが、理論的には上記のようになるはずですので、一度試してみてください。
お礼
ご回答ありがとうございました。
補足
早急なご回答ありがとうございました。 この質問を書いた後に、自分で考えて見たのですが方法として問題ないか知っていたら教えてください。 (1)EEPROMに128バイトのデータを書き込む(ページ書き込み) ※出たは0番地を0x01でそれ以外は0xffとする。 (2)EEOPROMの0番地の値を取得する。 結果:512KBのEEPROMなら0x01が書かれている。 それ以外のEEPROMなら0xffが書かれている。 (3)0番地の値に0xffを書き込む。 ページ書き込みを行うと各EEPROMのページサイズを超えた場合、先頭から保存するという注意書きをデータシートから発見したのでこれがつかえるのでは?と思いやってみたらとり512KBのものとそれ以外のものの判断は出来ました。それが本当にいいのか分かりません・・・。