
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ランキング
-
画像生成AIのプロンプトの作り...
-
vba 正規表現について教えてく...
-
プログラム言語
-
pythonでのローカルファイルか...
-
vba クリップボードクリアにつ...
-
今のプログラミング言語
-
itエンジニアに就職希望で未経...
-
if関数とは?
-
自作scratch アニメの商用利用
-
数学、プログラミング、物理、...
-
趣味がプログラミングだと言っ...
-
COPYコマンドで、最後に1文字...
-
著作権法について
-
CSVファイルの複数行削除
-
プログラム上での行のマージ方法
-
uwscでPauseキーが押されたら、...
-
数行削除してコピーするbatファ...
-
Pythonのエラーメッセージをコ...
-
プログラミングについて
-
Geminiフォーム 画像生成で 人...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# try-catch でcatchに飛ばす方法
-
CreateObject("Excel.Applicati...
-
winsock通信時エラーの回避
-
【C#】アップロード時に「アプ...
-
インクルードしたファイルの関...
-
FileCopy時のエラー
-
イベントID 2002について
-
fopenでエラーとなる
-
IIS7.5の設定の仕方
-
オーバーフローが発生します
-
このページの状態情報は無効で...
-
VBA RemoveDuplicatesで「アプ...
-
SQLサーバーへの接続に 接...
-
エラー内容について
-
オブジェクト生成エラー
-
ASP.NETで使用しているJavascri...
-
エラー 'ASP 0115' について
-
oracleを利用できません。(glob...
-
Excelの配列について
-
EXECLマクロでshapeがグルーフ...
おすすめ情報