解決済み

PIC16F1823 SPI通信

  • 困ってます
  • 質問No.9598633
  • 閲覧数228
  • ありがとう数3
  • 気になる数1
  • 回答数3
  • コメント数0

お礼率 68% (15/22)

PIC16F1823をマスターとして、スレーブデバイスから、SPI通信にてデータを読み込もうとしています。オシロスコープで波形を見ると、期待したデータをスレーブ側は出力しています。しかし、PICでは、0x00のデータしか受信されません。
PIC側のマスター受信では、SSP1BUFをダミーで読み込み、SPIでコマンドを送信、SSP1BUF.BFをみて、さらにSSP1BUFをダミーで読み込み、次にデータ受信用にダミーデータと受信を行い、SSP1BUF.BFをみて、SSP1BUFを読んでいます。気を付けて確認しなけらばならないレジスタ等あったら教えてください。

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

  • 回答No.3

ベストアンサー率 42% (411/967)

SPI モード ( CKP , CKE ) 設定は合ってますか?
スレーブデバイス がマイコンの場合 WAIT が必要になる時もあります

参考 MCC SPI ライブラリ
#define SPI_RX_IN_PROGRESS 0x0
uint8_t SPI_Exchange8bit(uint8_t data)
{
// Clear the Write Collision flag, to allow writing
SSP1CON1bits.WCOL = 0;

SSP1BUF = data;

while(SSP1STATbits.BF == SPI_RX_IN_PROGRESS)
{
}

return (SSP1BUF);
}
お礼コメント
reset_sw

お礼率 68% (15/22)

その後、PIC16F1823は、アナログ入力も同一ピンで行われていて、デフォルトがアナログ入力なので、ANSELレジスタでデジタルIOに切替る事で、リードできるようになりました。
ありがとうございました。
投稿日時 - 2019-03-21 15:55:34

その他の回答 (全2件)

  • 回答No.2

ベストアンサー率 35% (79/220)

今後のことも考えると
Microchipのフォーラムで質問することを覚えるべきでしょうね。
https://www.microchip.com/forums/m1036310.aspx
https://www.microchip.com/forums/f524.aspx
お礼コメント
reset_sw

お礼率 68% (15/22)

ありがとうございます。確認します。
投稿日時 - 2019-03-20 11:36:28
  • 回答No.1

ベストアンサー率 35% (79/220)

開発環境は? ライブラリは?

ここらあたりの問題だったっりして
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12163939517
補足コメント
reset_sw

お礼率 68% (15/22)

XC8コンパイラーを使用しています。PIC16F877では、受信できます。
PIC16F1823では、SSP1BUFがNULLのままです。
投稿日時 - 2019-03-20 14:47:41
お礼コメント
reset_sw

お礼率 68% (15/22)

ありがとうございます。
投稿日時 - 2019-03-20 11:38:45
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ