• ベストアンサー

PICのSPI機能について

PIC間で通信を行う場合CKP(アイドルレベル、アクティブレベル)はどちらでもいいのでしょうか?何か使い分けがあるのでしょうか? スレーブ側ではタイミングはあまり関係ないのでしょうか? 又SPI終了時の割り込みでスリープ解除になるのでしょうか?

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

  • ベストアンサー
  • bug_bug
  • ベストアンサー率78% (36/46)
回答No.1

すでにご自身で解決済みかもしれませんが, 1.CKPは利用する環境で縛り(条件)が無いならどちらでも通信できると思います. 一般的に同期回路はクロック信号の立ち上がりエッジで動作するため, アイドルLで使う事が多いかと思います. レジスタ設定値はデフォルトでそうなってませんか? 2. スレーブ側でも同期通信はタイミングこそ命です. 無視したら通信が成り立ちません. ペリフェラルの動作クロックが十分に遅ければたとえクロックエッジが逆転していたとしても セットアップ・ホールド時間が満たせてしまうため, 気づかず動いてしまうことはあります. 3. 型番の記載が無いので適当にPIC16Fのシリーズでデータシートを眺めてみましたが, スリープ解除の要因としてMSSPの受信割り込みを利用可能でした. 使用するPICのデータシートのMSSPの章をsleepで検索すれば一瞬で見つかるかと. 以下参考までに眺めたデータシートから抜粋です.引用元:PIC16F88xのdatasheet While in Sleep mode, the slave can transmit/receive data. When a byte is received, the device will wake-up from Sleep. こんな感じで記載されていますので, お使いのデバイスのデータシートを確認してみてください. データシートは公式で公開されています. PICの種類は呆れるほど多いので, せめて型番くらいは記載しないとなかなか回答する人もコメントし辛いと思います.

poyo3
質問者

お礼

回答ありがとうございます。 SPI機能は随分前に1対1で使ったことはあるのですがその時は四苦八苦しました。 今回は複数のデバイスで使うことを考え思い出しがてら見ていたらそもそもそこまで設定に意味があったのかと思い質問しました。 使う予定は一応16F877です。PICのMSSPは型番によって変わるのでしょうか。