このQ&Aは役に立ちましたか?
PIC16F1823 SPI通信でのデータ受信に問題あり
2023/10/20 01:22
- PIC16F1823をマスターとして、スレーブデバイスからSPI通信にてデータを読み込もうとしていますが、受信しているのは0x00のデータのみです。
- PIC側のマスター受信では、SSP1BUFをダミーで読み込んだ後、SPIでコマンドを送信し、再度SSP1BUFを読み込んでいます。
- データ受信用にはダミーデータと受信を行い、読み込む前にSSP1BUF.BFを確認していますが、期待したデータが受信できません。
PIC16F1823 SPI通信
2019/03/20 10:00
PIC16F1823をマスターとして、スレーブデバイスから、SPI通信にてデータを読み込もうとしています。オシロスコープで波形を見ると、期待したデータをスレーブ側は出力しています。しかし、PICでは、0x00のデータしか受信されません。
PIC側のマスター受信では、SSP1BUFをダミーで読み込み、SPIでコマンドを送信、SSP1BUF.BFをみて、さらにSSP1BUFをダミーで読み込み、次にデータ受信用にダミーデータと受信を行い、SSP1BUF.BFをみて、SSP1BUFを読んでいます。気を付けて確認しなけらばならないレジスタ等あったら教えてください。
質問者が選んだベストアンサー
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);
}
このQ&Aは役に立ちましたか?
この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。
その他の回答 (3件中 1~3件目)
今後のことも考えると
Microchipのフォーラムで質問することを覚えるべきでしょうね。
https://www.microchip.com/forums/m1036310.aspx
https://www.microchip.com/forums/f524.aspx
お礼
2019/03/20 11:36
ありがとうございます。確認します。
開発環境は? ライブラリは?
ここらあたりの問題だったっりして
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12163939517
お礼
2019/03/20 11:38
ありがとうございます。
補足
2019/03/20 14:47
XC8コンパイラーを使用しています。PIC16F877では、受信できます。
PIC16F1823では、SSP1BUFがNULLのままです。
お礼
2019/03/21 15:55
その後、PIC16F1823は、アナログ入力も同一ピンで行われていて、デフォルトがアナログ入力なので、ANSELレジスタでデジタルIOに切替る事で、リードできるようになりました。
ありがとうございました。