- 締切済み
PCA9564の使用方法
PCA9564を用いて、PCのパラレルポートでI2Cのコントロールを行おうと考えています。PCA9564にスレーブとして、アドレスが0101111のICを接続して、SDA,SCLラインに接続しています。START CONDITIONを制御して、SDAがLowになり、SCLもLowになることを確認してから、SLA+W(アドレス指定と書き込み指定)を送るために、01011110(8bit目はWriteを示す0)を添付のように送っています。最後の9bit目にはACKがスレーブの端末から帰ってくるため、本来は0が返ってくるはずですが、1が返ってきておりNACKを示し、正しく制御できていません。以下に制御方法を記載しますので、ご存じある方はご指導のほどよろしくお願いします。 1.17番端子のResetを1⇒0⇒1にして実行 2.A1A0を11にして、I2CCON状態にして、ENSIOとSTAを1にする(01100100)。 WRを1⇒0⇒1にして実行。このときにSCLとSDAはLowになる 3.A1A0を01にして、I2CDATにして、D7:D0を01011110にして、WRを1⇒0⇒1にして実行。 このときは何も出力されない 4.A1A0を11にして、I2CCON状態にして、STAを0にする(01000100)。 WRを1⇒0⇒1にして実行。このときに添付のクロックが見える。最後の9bit目のSDAが Highになるため、おかしい。 疑問点として、3の時に実行してもSDAとSCLラインには何も出力されませんが、 これは正しい動作なのでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
>3の時に実行してもSDAとSCLラインには何も出力されませんが、 これは正しい動作なのでしょうか? PCA9564が動き出す条件から外れてるのだから当然。 複数のPCA9564 を異アドレスに配置する設計で、 あるデバイスへの書き込みに他のデバイスが反応したらまずいでしょ。 3 の例はそういうことです。
昔I2Cバスの勉強を少しだけした者です。 PCA9564 を使った事はありません。 Start Condition は波形に現れてないし、SCL がパタパタ変化する前の Low な時間が 長いようですね、 普通は直前あたりに Start Condision があると思いますが何故こんなに長いのでしょう。 もしかしたら SCL =Low が長くてバスエラーとかタイムアウトが発生し、 以後の動作をおかしくしてるんじゃないでしょうか。 PCA9564 データシート http://www.nxp.com/documents/data_sheet/PCA9564.pdf