迅速I2C通信プロトコルを理解します
I2Cは何ですか?
データ線(SDA)、クロックライン(SCL):単純に、それは2ライン分の送信データがあります。
I2Cどのように転送?
- 基本的なプロセス
(1)ホストは、開始信号を送信し、
(2)ホストは、次に、スレーブアドレスバイトの情報、(読み取るため1、書込み0)、前記最下位ビットの制御コードリーダ、7高いスレーブデバイスを発行します。アドレス;
(3)確認応答信号は、コンピュータから送られてきた;
(4)マスタがそれぞれ完成し、送信ホストコンピュータから送信されたバイトの肯定応答信号の後に、送信信号を開始する;
(5)マスター発行停止信号。 - :信号は、具体的に上述した
(1)信号が開始:クロックラインがハイである時、データ線ハイからローに、開始信号が生成される;
(2)停止信号:クロックがライン中高く、ローからハイへのデータ線、停止信号を生成する;
(3)応答信号:肯定応答信号、ホスト書き込みスレーブ、各バイトが書き込まれ、正しく機械次のクロックサイクルのデータ線低い場合ホストオペレーティングを伝えるために有効な。マスターマシン、正しい読み1バイトから読み込む場合、次のクロックサイクルマスタは、同じデータラインをローである必要があり、確認応答信号は、データの受信(ノートから発行されたマシンを伝える送ら:マシンが読み出されますホスト最後のバイトが受信され、それは肯定応答を送信しない、停止信号を直接送信);
注:クロック線のいずれかのレベルの変化は、データ線のハイレベルの期間では、スタートおよびストップ信号であると考えられていますクロックが低い場合には、データの変更を変更する必要があります。 - データ形式:
I2Cサポート二つのデータ形式:
(1)7ビット/ 10ビット形式のアドレスデータ、
(2)フォーマット7ビット/ 10ビットのアドレッシング・アンド・リピート開始信号。 - デバイスのアドレスから:
各デバイスは、バス上の独自のaddrは、7ビットの合計、ブロードキャストアドレスすべてゼロを持っています。
システムは、固定部とプログラマブル部分に分割addrには、チップセットの詳細に応じて、データシートを参照して、複数のアイソフォームチップを有していてもよいです。 - ハードウェア構成:
各デバイスの内部バスI2C SDA、SCLピンは同一の回路構成は、出力ピンと一緒に駆動される入力バッファです。前記出力はオープンドレインFET、相の高入力インピーダンスの入力バッファです。この回路は、2つの特徴を有する:
SDAので、(1)、SCL信号「行及び」ロジックの外部プルアップ抵抗により、オープンドレインである;
(2)ピンの意志の出力信号ながら出力はちょうど同じかどうか、テストをテストするためのピンのレベル。「クロック同期」とのハードウェア基盤を提供する「バスアービトレーション。」
I2Cいくつかの質問
- 違いは何シミュレーションI2C I2Cハードウェア
(1)原理:システムクロックによって生成される(SDA、SCLポートを提供する専用)I2Cハードウェアは、典型的には、結晶を分割することによって生成されます。シミュレーションI2Cはアナログ時計とデータラインをプログラムします。
(2)コントロール:I2Cハードウェアは、ハードウェア割り込みを介して各種動作を実現します。中断することなくI2Cアナログ概念は、IOポートセットの低通じセットのレベルが高い書き込み、読み出しを実現しています。
(3)パフォーマンス:ハードウェアより効率的かつ安定的なモード。 - MPU6050とMPU9250、I2C
前にそのような次に、加速度計、最初の送信開始信号は、スレーブアドレスを送信する(I2Cデバイスアドレス)の元の値を取得するようにI2Cアドレスビット厄介な操作を介して2つのチップ用送信アドレスレジスタ(多くの人が台無しになります、あなたは二回アドレスを送信したいので、最初の時間は、I2Cデバイスのアドレスである、第二は、加速度計のアドレスである)、その後、順番に元のデータを取得します。
I2Cを達成するためにどのように?
すべての寝具は、前の実装はまた、コードの問題の特に重要であるので、どのように、I2C通信を実現することです。
以下は、読み取りと書き込みのプロセスであるI2Cです。
- ライト標準的なプロセスであるレジスタ:
(1)STARTマスターが開始
(2)マスタ送信I2C ADDR(7ビット)と動作0(1ビット)wは、ACKを待つ
(3)スレーブがACKを送信する
(4)マスター送信REG ADDR(8ビット)、 ACKを待っている
(5)スレーブはACK送信
ACKを待って、レジスタに書き込まれる、すなわち、データを(6)マスタ送信データ(8ビット)を
スレーブがACKを送信する(7)
(8)ステップ6とステップ7を繰り返すことができ、すなわち、シーケンシャルライト複数のレジスタ
(9)マスターが開始STOP - 標準プロセスを登録読むある:
マスター送信I2C ADDR(7ビット)と動作1(1ビット)wは、ACKを待つ(1)
(2)スレーブが送信するACK
(3)マスター送信REG ADDR(8ビット)、ACKを待つ
(4)スレーブACKを送信する
(5)マスターが開始START
(6)マスター送信I2C ADDR(7ビット)とr 1(1ビット)操作、ACKを待っている
(7)スレーブがACKを送信する
(8)スレーブ送信データ(8ビット)は、すなわち、レジスタ値
( 9)マスターは、ACK送信する
(10)ステップ8とステップ9を順次複数のレジスタを読み取る、つまり、複数回繰り返してもよいです