SSブログ

PIC32MXのI2C通信が動き始めた [PIC32]

(2014.06.24)
Raspi-2とPIC32MX間のI2C通信にてこずっています。PIC18F25k50で使っていたI2CスレーブのプログラムをPIC32MXに移植しようとしたのですが、I2Cモジュールの機能の違いが大きく(<==I2CスレーブはAck/Nackをプログラムで制御できない?)、思うようには行きません。

なんとかPIC32MXのI2Cスレーブ・プログラムを書き上げ、Raspi-2(I2Cマスタ)とのI2C通信を試みましたが、READ要求には一回しか応答できません(WRITE要求の反復なら良い)。しかも、それ以後READ要求にもWRITE要求にも応答出来なくなってしまいます。データ・シートとリファレンス・マニュアルを何度も読み返したのですが、原因が掴めません。orz

あれこれ試していて、デバッガでブレークを掛けるとI2C2STATのRBFフラグがクリアされ、READ要求に(一回は)応答出来るようになることが判りました。

WRITE要求のときはI2C2RCVに入ったI2Cアドレスを読み出していた(そうしないとReceive Overflowになる)のですが、READ要求のときは関係ないと思ってI2C2RCVを読み出していませんでした。

”RBFフラグが立ったままだとアクノリッジ・シーケンスが動かない”とは何処にも書かれていませんが、どうやらそういうことのようです。(I2COVフラグも立たない)

アクノリッジ・シーケンスでI2Cアドレスを読み出すようにして、ようやくREAD要求とWRITE要求の反復が出来るようになりました。

やれやれ

にほんブログ村 IT技術ブログへ
にほんブログ村 ネットブログ コミュニティサイトへ
にほんブログ村 IT技術ブログ オープンソースへ


nice!(0)  コメント(1)  トラックバック(0) 
共通テーマ:日記・雑感

nice! 0

コメント 1

malu

こんばんは。
4年も前の記事にコメントさせて頂くので、お返事頂けないかなと思いながら、どうしても解決出来ない問題があり、藁をも掴む思い出書込させて頂きました。

記事と同じ様な環境で、RaspiをI2Cマスターとし、PIC32MX270 or PIC32MX220でI2Cスレーブのプログラムを作っています。

I2C1の方では、何の問題もなく、マスタと通信出来るのですが、その処理をそのままI2C2に変更しても、全く動作しない問題にぶつかりました。

もう2週間以上もいろいろ見直しや再確認をしているのですが、一向に解決致しませんで、途方にくれております。
試した事を列挙し出すと、かなりの量になるので書きづらいですが、何か注意する点とかございますでしょうか?

PICのI2C1では、マスタ動作もスレーブ動作もどちらも正常に動作しているので、プログラムの問題とも思えなく。

何かヒントなどあれば、ご教示お願いします。
by malu (2018-02-24 00:40) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。