• ベストアンサー

cpuとeeprom間のi2cバス通信の信頼性について教えてください

I2Cバス通信の信頼性について教えてください。 cpuとeeprom間をI2Cバス通信で制御したく考えています。 その際、送受信のアドレスやデータのbitがこけたりして、データが書き換わってしまうことはありますか? 通常制御、あるいはノイズ環境での信頼性について分かる方がいましたら教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

私がEEPROMを使用してシステム設計する場合は、EEPROMの全容量を 2つに分割しミラーリング制御させています。 もしREAD時にサムチェックエラーが出た場合、バックアップ領域から リカバリーさせて使用するという方法を用いています。 I2Cは外来ノイズやクロストークに非常に弱いです。 その割にはシステムのConfigration等、重要な用途に多用される事が 多いですね。ソフト的に何らか冗長性を持たせる事が必須に思います。  

k-design
質問者

お礼

回答ありがとうございます。 回答いただいた制御は知らなかったので、参考になりました。

その他の回答 (1)

  • arain
  • ベストアンサー率27% (292/1049)
回答No.1

>その際、送受信のアドレスやデータのbitがこけたりして、データが書き換わってしまうことはありますか? どんな通信システムでもデータの書き変わりの可能性はあります。 そのため、「チェックサム」等を使用しデータの整合性を確認する必要があります。 >通常制御、あるいはノイズ環境での信頼性について分かる方がいましたら教えてください。 「通常制御」とはどのような制御のことですか? 「ノイズ環境の信頼性」とは、ぞのようなノイズが発生し、デバイス間のラインはどのような状態ですか? 少なくとも、I2Cはノイズ耐性は非常に脆弱です。

k-design
質問者

補足

回答どうもありあがとうございます。 > そのため、「チェックサム」等を使用しデータの整合性を確認する必要があります。 チェックサムをデータにつけて送信するという認識でよいでしょうか? それにより異常検出できるから保障できるということですね。 通常制御とはEEPROMへのリード・ライト処理です。 EEPROM自身にハード的なエラー検出の機能などはあるのでしょうか? またチェックサム以外に整合性を取る方法を教えてください。 いろいろ質問してすみませんが、よろしくお願いしまうす。

関連するQ&A

  • PICのI2C通信を行っているときにタイマ割り込みはできますか?

    私はC言語(CCS-Cコンパイラを使用)でPICのプログラミングをしています。使用しているPICは16F877Aです。 いま学習リモコンを製作中なのですが、赤外線信号の学習方法としてベタ読みを(1kByte分)行うつもりです。その際、16F877AではデータメモリがEEPROMを合わせても1kByteには足りません。ということは、赤外線信号を39kHz毎にチェックしながら、1ページ分(64byte)信号データがたまったらI2C通信で外部EEPROMにページ書き込みをしなくてはいけない、と考えています。 そこで、「I2C用組み込み関数を使用して外部EEPROM(24LC256)にページ書き込みを行っている最中に、タイマ割り込みは使用できるのか?」また、「タイマ割り込みが使える場合、正確にI2C通信が行えるのか(データが欠けたりしないか)?」を教えてほしいんです。 もちろん、18F452を使用すればデータメモリだけで1kByteを超えるので、この問題は解決できます。しかし、できれば現在手元にあるものを使って作りたいので、どなたか分かる方がみえましたら、教えてください!

  • CPU I/Oポート 通信 モニタ

    CPUのI/Oポートで9600bpsの通信をすることは可能でしょうか? 通信が3ch必要なのですが、8bit/64pin程度の安いCPUを使用したいです。 通信するといっても不定期の通信の通信ラインのデータをモニタしたいだけです。 ご助言をお願いします。

  • I2C通信について

    マイコンにI2C通信対応ICを5個接続して使用しようとしています. 基板上で5個のICのI2Cバスを接続して通信したところ,1個だけ(型番 : INA231)データが正常に返ってきませんでした. オシロで波形を確認すると,INA231と通信する時のみ,SDA/SCLともに波形の電圧が正常時の半分程度でした.他の4個のICとの通信時は正常な電圧(highが電源電圧)でした. 試しに,マイコンとINA231を1:1で接続してI2C通信すると問題なくデータを取得できたため,プログラムは問題ないことが確認できました. 上記のような現象の発生原因と,対策など,お分かりになられる方がいらっしゃいましたら何卒ご教授よろしくお願い致します.

  • I2C通信のスレーブアドレスについて

    電子回路初学者です。 I2C通信は、まず自分が (例としてマイコンが) マスターになる宣言をし、バスの所有権を得て、次に通信相手となるスレーブアドレスを指定し、データを送受信するものだと理解しています。そこで質問があります。 このスレーブアドレスとは製品固有のものなのでしょうか。 例えば、X社製のXというセンサーはスレーブアドレスが0x74である、といった具合です。 それとも、マイコンのポートxのyビット目 (SDAまたはSCL) にぶら下がっているスレーブにスレーブアドレス0x74を持たせる、といった具合に任意に決定できるのでしょうか。 実際に使用する場合の解説が見当たらず悩んでおりました。 よろしくお願い致します。

  • N504iの赤外線通信について

    N503iからN504iに乗り換えようとおもいます。 そのさい、赤外線通信をすれば、アドレス帳や送受信メールはN504iにコピーできるとききました。 ただ疑問におもったことが1つ。 そのさい、N503iのデータは移動扱いとなりきえてしまうのでしょうか? ちなみにNからDなど違うメーカーに変更の場合も赤外線通信は可能ですか?

  • RT58iで店舗間通信の設定

    あほな質問させてください。 現在、A本部とB店、C店で、通信を行っていて、 A本部からB、Cへ配信を行い、データを送受信しています。 AもBもCもRT58iはCTUに繋がっており、固定IPアドレス(172.16.x.x)が割り振られています。 どのRT58iも WAN側:172.16.1.x~3.x LAN側:192.168.1.x~3.x のように割りついていて、 現状では、RT58iに入り込み、pingを打つと、 WAN側のIPアドレスに対しては応答があり、 LAN側のIPアドレスに対しては応答がない状態です。 この状態で、B店のファイルサーバーに対してC店からデータを取りに行ったり、 C店のファイルサーバーにデータをB店から取りに行ったりするようにするには、 どのようなコマンドを追加してやればいいのでしょうか。 あほな質問ですが、急遽必要になったので、どうぞよろしくお願いします。。 OSはXPです。

  • I2Cのノイズについて

    I2Cはなぜノイズに弱いのでしょうか? 自分でも一応調べてみたのですが、ワイヤードORだからとかインピーダンスが高いからとかまでは書いてあったのですが、それらがなぜノイズに弱いのかが分かりません。 インピーダンスに関しては、そもそもプルアップされているので、ハイインピーダンスではなくなっていると思いますし、通信速度を早くするためそこまで大きな抵抗は入れないと思うのですが・・・。

  • aitendoの「kt0911」のラジオ製作

    今「aitendo」という電子部品のお店から買った、「kt0911」と言うラジオのICを作っています。 このICは「I2C」の通信でeeprom「24LC02」と繋いで、ラジオのBAND等の各設定をする様な システムに成っているようです。 「eeprom「24LC02」に書き込むデーターに付いては」 「kt0911」の初期設定の各データーは「16bit」構成で「0000」とHexの4桁で表わされています。 しかし「24LC02」は、メモリー格納アドレスの例えば、0x00のbit数は「00」で8bitでHexの2桁で表わされています。 eeprom(24LC02)   ----> 0x00 FF KT0911 のデーター ----> 0x00 FFFF これでは、残りの8bitは書き込めません、次のアドレスへ書き込む事になるのでしょうか そうすると、少しづつAddがずれて行きますので、これはダメですね。  「aitendoのお店」のURL http://www.aitendo.com/product/5436 「kt0911」のdata sheetのURL http://aitendo3.sakura.ne.jp/aitendo_data/product_img/ic/radio/KT0911/KT0911.pdf もしかしたら、私はとんでも無い間違いをしているのではないでしょうか。 このラジオ製作に当たってソフトなどお分かりでしたら、色々と教えて下さい。 困っています。

  • PICマイコンによるI2C通信について

    私は高専の学生で、マイコンを使う部活に所属しております。 今回の活動で、複数のPICを使用することになり、I2C通信を使おうと思っています。 そこで、ある問題が発生しました。 PICによるI2C通信の解説を行っているとある方のサイトには、 「I2Cの通信方式は+5VにプルアップされたSDAとSCLの各信号線を、それぞれのデバイスがオープンドレイン等によるワイヤードオア接続で信号の操作と共有を行っている関係から、 電気的にはあまり強い環境ではありません。 なので、沢山のデバイスを接続したり、通信距離を長くしたりといったことには不向きなので、 ハードウエアの構築には細心の注意が必要でしょう。」 とあります。 今回の活動で使うPICは、事情により700~800mm程度離れた状態になると思われます。 距離が長い通信には不向きとありますが、この場合は大丈夫なのでしょうか。 また、I2C通信が不可能な場合はどのような通信手段を使えばよいのでしょうか。 知っている方がいらっしゃったら、御回答をよろしくお願いいたします。

  • RTCの通信方法について

    RTCの通信方法について マイコンにて外付けのEEPROM(SPI通信)とRTCを制御しようと思っているのですが、RTCの通信方法をSPIかI2Cかで迷っています。 仕様的には、1分間隔のRTCからの信号で割込みを掛け、時刻を読み込むとなります。 1分間隔の割込みで毎回SPIの通信速度の変更を行う(SPIのEEPROMのクロックの方がSPIのRTCに比べて相当早い)であれば、I2Cで制御した方がよろしいのでしょうか? よろしくお願い致します。