
SPI通信をサポートするデバイス(SPI-Flash、EEPROMやADC・・・など)のデータシートをいくつか見ているのですが、ふと不思議に感じることがあり質問させて頂きました。
私が見た範囲では、各デバイスの通信プロトコル(コマンドフォーマットや、レスポンスフォーマット)にはCRCやCheck Sumなどの、いわゆる"データ誤り検出の仕組み"が無いものばかりでした。
基本的に、各デバイス間の物理的な距離が近いことが想定されているためか、ノイズなどの影響は受けにくいのかもしれないですが、安全を期すには"データ誤り検出の仕組み"が必要だと感じました。
※TCP/IP通信などではCRCがありますし、RS-232Cなどでもパリティがあります。
通信プロトコルはメーカーの設計思想依存なので、「正しい」とか「間違っている」ということは無いと思いますが、皆さんの考えをお聞かせ頂けないでしょうか?
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
SPI通信は通常オンボードの回路で使用されます。
オンボードのSPIでエラーが起こるようであれば、設計がちゃんとしていない為で、その他の機能でもエラーが発生する恐れが高いでしょう。
エラーが発生するような通信経路で有れば、それなりの対策が必要となるでしょうし、それは設計者が対応するべきです。
私は、EEPROMやFlashにデータを書き込むときはチェックサムやCRCを追加する事が有ります。
それは主に、チップが書き込みをしている間に電源が落ちた時の対策としてです。
(停電時に書き込みをする必要がある為)
コメントありがとうございます。
> 私は、EEPROMやFlashにデータを書き込むときはチェックサムやCRCを追加する事が有ります。
> それは主に、チップが書き込みをしている間に電源が落ちた時の対策としてです。
これは、EEPROMやFlash内のメモリ内にチェックサムを設けている・・・ということですよね?
組み込み機器の開発をしていますが、どこまで信頼性を考慮しておくべきか・・・いつも悩みます。
今、数十MHzのSPI通信を検討しているところで、信頼性が心配でした。
コメントありがとうございました。
No.1
- 回答日時:
SPIは元々少ないICピンである程度のデータをやり取りするために、8ビット以上のデータをシフトレジスタを通して2-3本のピンから入出力するために考えられたものです。
オンボード内で、簡単にデータ転送をするために考えられた方式です。
通信プロトコルなんていうほど、大げさなものではありません。
オンボード内ではまずデータエラーなんて考える必要はありません。そこまで必要なら、2~30年前(SSI,MSIの時代)までロジックなんて作ることはできませんでした。
だから、エラーチェックなんて必要有りません。
RS-232で、実際一番多く使われているデータ方式は御存知ですか?
2 stop bits - non parity です。
あの程度のスピードで数m程度の距離なら、エラーなんてありえないと考えての実際の話です。
もちろん、TCP/IP通信など何百m、何百Kmなんていう距離でデータ転送するのなら、パリティなんて初歩的なエラーチェックではなく、CRCやより高度なエラーチェック機能は必要にはなりますが。
オンボードと、何百mどころではない、何百Kmに渡るデータ転送と全く状況は違うということは、コストパーフォマンスからいって認識しなければならないことでしう。
なるほど。大変参考になりました。
基板上の通信レベルでは通信エラーをあまり気にすることもないんですね。
最近のSPIは高速化しているから、案外ノイズに弱いのかと気にしていました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
winsock通信時エラーの回避
-
ASP.net の OnClientClick
-
ASP 0x80004005 クライアント...
-
CreateObject("Excel.Applicati...
-
EXECLマクロでshapeがグルーフ...
-
VB6でRDOに接続できない
-
SQLサーバーへの接続に 接...
-
CAsyncSocket::Create()がエラ
-
CreateProcessでアプリケーショ...
-
【C#】アップロード時に「アプ...
-
C# try-catch でcatchに飛ばす方法
-
C++でSQLServer2008に接続
-
名前が二重に定義されています
-
ネットワーク上のPCのIPとホス...
-
エクセルVBA 宣言Dimの場所
-
GridView表示の高速化
-
VBSにてサーバー中のエクセルフ...
-
WindowsでS.M.A.R.Tの情報取得...
-
式はメソッドではありませんと...
-
隠しフィールドをVBScriptでの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# try-catch でcatchに飛ばす方法
-
EXECLマクロでshapeがグルーフ...
-
FileCopy時のエラー
-
CreateObject("Excel.Applicati...
-
ASP 0x80004005 クライアント...
-
このページの状態情報は無効で...
-
オラクル接続をopenしようとす...
-
VB6でRDOに接続できない
-
オーバーフローが発生します
-
fopenでエラーとなる
-
インストールエラーが解決できない
-
内部関数のエラーを外部に
-
エラー 'ASP 0115'
-
エラー内容について
-
IIS7.5の設定の仕方
-
ADSIについて
-
Outlookで添付ファイルの有無を...
-
winsock通信時エラーの回避
-
インクルードしたファイルの関...
-
ペ-ジでエラ-が発生しました
おすすめ情報