Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> I2Cシリアルバス学習の概要

I2Cシリアルバス学習の概要

  

開始信号(クロックラインがHigh、データラインがHighからLowに変更されます):void AT24C04_Start(){SDA = 1; //データラインSCL = 1をプルアップ。クロックラインDelay5us(); //SDA = 0を遅らせる; //立ち下がりエッジを発生させるDelay5us(); //SCL = 0を遅らせる; //クロックラインを引き下げる}終了信号:(クロックラインがハイ、データラインがハイAT24C04_Stop(){SDA = 0; //ローレベルのデータラインをプルSCL = 1; //ハイレベルのクロックラインをプルDelay5us(); //遅延SDA = 1; //立ち上がりエッジを生成Delay5us(); //1バイトあたり8ビット、対応するビットを含む1バイト)送信データ:void AT24C04_SendByte(BYTE dat){BYTE i; for(i = 0; i <8; i ++) //8ビットカウンタ{dat <;< = 1; //データの最上位ビットを削除SDA = CY; //送信データポートSCL = 1; //ハイクロックラインDelay5us(); //時間遅延SCL = 0; //クロックラインを引き下げるDelay5us(); //delay} AT24C04_RecvACK();}データを受信:BYTE AT24C04_RecvByte(){BYTE i; BYTE dat = 0; SDA = 1; //内部プルアップを有効にする(i = 0; i <8; i ++)//8ビットカウンタ{dat << = 1; SCL = 1; //クロックラインを引くDelay5u s(); //遅延データ = SDA; //データ読み取りSCL = 0; //クロックラインDelay5us(); //delay} return dat;}データ応答:データ送信が成功するたびに、受信側デバイスは応答信号を送信します。信号生成は、確認応答信号を生成するデバイスがSDAをローに引き下げることです。スタートコンディションとスレーブアドレスを受け取った後、読み書き動作に答えて選択します。書き込み操作の場合、バイトが受信されるたびに、24c02は確認応答信号を送信します。バイトが送信された後、読み取り操作はバスを解放し、応答信号を待ちます。応答信号を受信した場合は、データの送信を継続し、送達確認信号を受信し、受信終了信号を待つ。データ読み出し時に応答信号を送信するAT24C04_SendACK(bit ack){SDA = ack; //書き込み応答信号SCL = 1; //クロックラインを引き上げるDelay5us(); //遅延SCL = 0; //クロックラインを引き下げるDelay5us(); //delay}受信応答信号ビットAT24C04_RecvACK(){SCL = 1; //ハイクロックラインDelay5us(); //遅延CY = SDA; //読み出し応答信号SCL = 0 //クロックラインを引き下げますDelay5us(); //return return CY;}プログラムの書き込みと読み取り:void AT24C04_WritePage(){BYTE i; AT24C04_Start(); //開始信号AT24C04_SendByte(0xa0); //デバイスアドレス+書き込み信号の送信AT24C04_SendByte(0x00); //(i = 0; i <16; i ++)のメモリ位置アドレスの送信{AT24C04_SendByte(TESTDATA [i]);} AT24C04_Stop(); //stop signal}

Copyright © Windowsの知識 All Rights Reserved