- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PIC16F1823 SPI通信)
PIC16F1823 SPI通信でのデータ受信に問題あり
このQ&Aのポイント
- PIC16F1823をマスターとして、スレーブデバイスからSPI通信にてデータを読み込もうとしていますが、受信しているのは0x00のデータのみです。
- PIC側のマスター受信では、SSP1BUFをダミーで読み込んだ後、SPIでコマンドを送信し、再度SSP1BUFを読み込んでいます。
- データ受信用にはダミーデータと受信を行い、読み込む前にSSP1BUF.BFを確認していますが、期待したデータが受信できません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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); }
その他の回答 (2)
- TIGANS
- ベストアンサー率35% (245/681)
回答No.2
今後のことも考えると Microchipのフォーラムで質問することを覚えるべきでしょうね。 https://www.microchip.com/forums/m1036310.aspx https://www.microchip.com/forums/f524.aspx
質問者
お礼
ありがとうございます。確認します。
- TIGANS
- ベストアンサー率35% (245/681)
回答No.1
開発環境は? ライブラリは? ここらあたりの問題だったっりして https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12163939517
質問者
お礼
ありがとうございます。
質問者
補足
XC8コンパイラーを使用しています。PIC16F877では、受信できます。 PIC16F1823では、SSP1BUFがNULLのままです。
お礼
その後、PIC16F1823は、アナログ入力も同一ピンで行われていて、デフォルトがアナログ入力なので、ANSELレジスタでデジタルIOに切替る事で、リードできるようになりました。 ありがとうございました。