埋め込み知識-armベアメタル - 研究ノート(11):I2Cバス通信

埋め込み知識-armベアメタル - 研究ノート(11):I2Cバス通信

A、I2Cバス

1. I2Cバスの紹介

フィリップス社によって開発されたバスのI2C(集積回路間)は、単純な2線式の双方向同期シリアルバスそれだけでバスに接続されたデバイス間で情報を伝送するために2本のワイヤを必要とします。
データ転送を開始し、オープン転送デバイスにクロックを生成するためのバス・マスタは、この時点でアドレス指定される任意のスレーブデバイスは、デバイスからであると考えられます。バス・マスタおよびスレーブ、及び受信機に関係で一定ではなく、この時点で、データ転送の方向に依存しますデータは、ホスト装置から送信される場合は、最初のアドレスからホストデバイスは、その後、スレーブデバイスにデータを送信し、ホストからのデータ転送の最後の終了;あなたが最初のデバイスは、マスタデバイスによって対処から、ホスト機器からのデータを受信したい場合は、ホスト装置は、ホスト最終的な終了手順を受信から送信されたデータを受信します。

2. I2C物理インタフェース

物理インターフェイス:SCL SDA +(複雑な通信することができる唯一の2本のワイヤを使用する)
SCL(シリアルクロック)(1):クロック線CLK信号伝送は、典型的には、チャネルI2Cマスタデバイスからのクロックを提供することを目的とします。
(2)SDA(シリアルデータ) : ラインデータ、通信データは、SDAラインを介して伝送されます。

3. I2C通信機能

I2C通信はシリアル、同期、非差動、低レート通信モード。
(1)シリアル:I2Cシリアル通信は、すべてのデータが属しビット単位でシリアルにSDAライン上で送信
(2)同期:同期通信は、両方の通信で同じクロックで作業典型的には信号CLK A自身のクロック、ワークB Aの送信クロックを送信するための通信回線を介してAパーティBへ、。したがって、同期通信の重要な特徴です。そこ通信回線CLK
(3)非差分:I2C通信速度が高くなく、両側に通信距離の近いので、通信信号レベルを用いているからです。
(4)低速度:一般的に使用されるI2C同じIC上の2つのボード間の通信送信用データの量は、通信速度自体は低い(典型的には数百kHzの異なるチップI2C通信速度が異なっていてもよく、これらはデバイスを使用していることは、最も高い通信をプログラムで許可された時間に依存するI2C率)はこのレートを超えることはできません。

+マスタデバイスから
I2C通信は、通信当事者が等しくない状況であるが、サブマスターとスレーブ。通信は、マスタ・デバイス、ドミナントによってマスタデバイスによって開始されるが、デバイスは、マスタ・デバイスとの通信の受動受け入れ、かつタイムリーな応答からI2Cプロトコルに従って。
一般的には、(必要とされていないI2Cプロトコル)与えられた当事者を通信することにより、デバイスからであるマスターは、誰が、チップデバイスが唯一のあなただけのデバイスから行うことができ、ショットを呼び出すことができ、それが可能である場合のみならず、メインデバイスとときデバイスからのエネルギー(しかし同時にではないときに、2つ)。

(デバイスアドレスから)バス上の複数のデバイスとすることができる
I2C通信がオン(デバイスから1つのマスタデバイス)とすることができる、それがあってもよい多くの1つ(マスタデバイスに複数のスレーブデバイス)。
スケジューリングバスマスタを担当する、通信時間ということと、どのデバイスから決定します。注:I2Cバス上のデバイスを送信する通信情報のみペアが、同じ時間で、同時に通信装置からの唯一のマスタデバイスの他の装置が「休止」状態にあり、それは面倒ではない、そうでなければ通信なります地獄が緩んで破りました。
各I2Cスレーブデバイスは、通信I2Cスレーブアドレス有し、その後、固有の特性から、デバイスのデバイスアドレスを主要通信機器は、彼らは、デバイスからの通信に対処するつもりだったことを知っておく必要がある場合、そして、アドレスは、彼らが求めていること、デバイスからの通信でない場合。(このアドレスは、グローバルにユニークなだけでなく、回路基板です)。

4. I2Cバス通信タイミング

文字通り解釈、タイミングが時系列であり、タイミングは、通信ラインレベルの変動が時系列に起こる実際には、これらの変化の有意性は、通信の通信シーケンスと呼ばれます。

I2Cバスのアイドル状態、スタートビット、エンドビット

I2Cバス上のホストデバイス、N(N> = 1)スレーブがあります。; I2Cバスは、2つの状態があり、アイドル状態(バスがアイドル状態のとき、通信マスタ装置からすべてのデバイスのいずれも)とビジーと通信デバイスがマスタデバイスから、バスにこの時点で占有されている他、(我々は)デバイスから回復しなければなりません。通信サイクルは、全サイクル、隣接する二つの通信サイクルに分割されているアイドル状態各通信サイクルは、開始ビット、終了ビットの終了、この通信サイクルにおける中間データで始まります

ここに画像を挿入説明
スタートビット、時間のポイントではありませんスタートビットは一定の期間で、この期間中にバスの状態を変更し、されています。CLKラインはハイレベルを維持して、SDAラインがローになるエッジに高いです

スタートビットと同様に、エンドビットは、時間の期間ですこの間のバス状態の変化は、以下のとおりです。SCLラインがハイレベル、ローからハイAとSDAラインの立ち上がりエッジを維持します

データ送信の開始ビットが発生することがクロックの次の立ち上がりエッジこれは、立ち上がりエッジが来る前に安定化されなければなりません。データ伝送、0から1までのデータラインは、次の立ち上がりエッジの前に完了しなければなりません。

前記I2Cデータ転送フォーマット

それぞれが開始し、通信サイクルの終わりには、実行するマスタによるものである、とだけ自発的に何か自体を行うことができない、パッシブからマスタ装置に応答します。出発各通信期間におけるマスタデバイス8ビットのスレーブアドレスをバスには(実際には、わずか8スレーブアドレスが7であり、デバイス以下フロントつ読み書きする)(ホスト装置であります)限り、バス上のすべてのデバイスが実際にこの情報を受け取ることができるよう、ブロードキャストとして送信されます。その後、デバイスはこのアドレスから受信することができ、かつそれぞれのアドレスは、バス上で受信し、そのデバイスのアドレス比較平等のために。彼らはあなたがこれを説明したくないと他の通信は、私とは何の関係も持っていない場合、この通信のマスターは、私には話にある説明等しくされている場合は、関係なく、聞いたことがありません。
送信者は受信者のニーズ、データの一部を送信しACK aに応答しますこの応答自体は、2の平均を表し、有用な情報を運ばない、ただ1つのビット位置である(すなわち有効な応答、のいずれかで受信したデータにより表される;いずれかの受信していないデータ、無効な応答を示します)。
特定の瞬間に通信、マスタ装置とスレーブ装置は、後に一つだけを持つことができる(バス占有バスへの書き込みすなわち、)、閉鎖中の他の(バスリードからの)。いくつかの時点で、マスタとスレーブは、それが終わっバスへの書き込みをしようとしている場合は、通信が間違っていました。

番組以下、出力伝送フォーマット:
ここに画像を挿入説明
前記グレーからマスタ装置に装置からの白色系装置、
場合ライトモード時:第1の一時アドレスの次の立上りクロックエッジに続いて、マスタからのスタート信号を送信し、(7アドレスデータは、書き込みモードを示す)バスを介してデバイスから送信されます対応が選択された場合に自身のアドレスコントラストからバス上の各デバイスのアドレスを受信した後、次いで、ACK信号が装置から送信されたマスタ・デバイスの準備ができている伝え、マスタへのデバイスから受信した8ビットデータを送信します停止信号は、転送が完了していることを示した後には、マスタデバイスによって送信されたデータに対してACK信号を送信します。
ときに読み出しモード状況:(アドレスデータを読み出しモードを示す請求項7)第一マスタから開始信号を送信し、一時的なアドレスの次の立上りクロックエッジに続いては、バスを介してデバイスから送信されます対応を選択した場合、自身のアドレス相対比で受信したアドレスの後にバス上の各デバイスから、次いで、ACK信号が装置から送信されたマスタ・デバイスの準備ができ伝え、その後、8ビットデータの送信を開始するために、マスタデバイスは、受信しましたACKの後に信号を送り、その後、停止信号マークに終わりを送信します。

ここに画像を挿入説明
I2C通信ユニット基本データであるバイト各有効データが1バイト(8ビット)
8 CLKとスタートビットの後には、マスタ・デバイス(装置、制御バス)で送信され、この時のバス情報は、バスを介して、読取装置から送信されたことをマスタ・デバイスにデバイスから読み出すことができ、その後にマスタにACKを送信するデバイスのニーズから所定のプロトコルに従って、9サイクル目、ので、この場合には、マスタ装置がなければならないバスを解放する(バスマスター装置がハイレベルに設定され、バスのアイドル状態と同様、実際には、移動しない)、一方ACKはバスをプルダウンするデバイスの試行から送られましたバス機器の故障からのダウン、または単にバスの下の機器を持っていない場合は、マスタデバイスがマスターである9サイクルで高いままな現象はまだ、それは私がACKを受信しなかった意味を参照するバスです、ちょうど考えスレーブ装置にマスタデバイスが間違った(受信失敗)バイト8を送信します

二、S5PV210 I2Cバス

1. I2Cコントローラ

メイン通信装置から作業タイミングによって、本質的に2つの側面が、タイミングは、より複雑なSoCソフトウェアあろう完了を助長されていないので、溶液であるSoCの内蔵内部ハードウェア・コントローラの通信タイミングを生成します我々は唯一のコントローラのレジスタに書き込むことができる書き込みソフトウェア構成値を必要とする、制御装置は、通信回線や他の通信に適切なタイミングを生成します。

ここに画像を挿入説明
(1)クロックソースがあるPCLK_PSYS(65MHzの)内部分割レベル2最終的に得られたCLK I2Cコントローラを介して、。最初の画分はI2CCONのビット6の周波数であり、中間クロックI2CCLK(等しいPCLK / 16またはPCLK / 512)であってもよい。第二の画分は、最終的な周波数クロックI2Cコントローラは、中間クロックソースをI2CCLKように作用し、周波数分割ファクタ[1,16]、4ビットは(1〜15のプラス0に対応する)からです。クロックが2つのクロックで除算した後の最終段を得るために、そのような設定が利用可能である:65000KHz / 4分の512 = 31KHz通信CLKは、SCLラインを介してデバイスから渡されます
(2)I2Cバス制御ロジック(フロント代表であるI2CCON、I2CSTAT両レジスタ)、I2C通信シーケンスの主な原因です。等、スタートビット、ストップビットを、送信する実際のプログラミングを実現する(回路モジュールの背後に示される)は、2個のACKレジスタを介して受信されます。
(3)シフトレジスタ(シフトレジスタ)、バイトコードデータを1ビットのシフトレジスタにより1ビットに送信される送信/受信にSDAライン投げました
+レジスタアドレスコンパレータ。I2Cコントローラは、デバイスから現在の時間とすることができません。
(4)I2CADD:自分のスレーブアドレスを書き込むように。
(5)I2CDS:送信/受信されたデータはここに配置されています。

2.プロセスバス通信

マスター/モードが受け取る
ここに画像を挿入説明
ここに画像を挿入説明
ことをここに追加します。それは、あるとき、8ビットのアドレスデータ伝送、実際には、+ 1ビット7ビットアドレスの方向です。
例えば:
KXTE9 I2Cアドレスは、I2Cスレーブアドレス自体は7ビットであるが、スレーブアドレスが8ビット、8ビット、7ビット(ビット7、ビット1である場合、実際に送信されたI2C通信I2Cを送信し、0b0001111固定しました)デバイス7のI2Cスレーブアドレスに対応する、最も低い(LSB)は、次のデータを言うことである(R / W情報に格納されていますマスター装置(0に対応)から読み出すための書き込み装置は、マスタ装置から又は書き込み装置(1に相当する)を読み出し)。したがって、KXTE9で、マスタデバイス(SOC)が発行gsensor情報に対して、SADがなければならない:0b00011110(0x1Eを)、マスタはgsensor情報を読み取りながら、それが0b00011111(0x1Fの)であるべきです。

公開された65元の記事 ウォン称賛83 ビュー60000 +

おすすめ

転載: blog.csdn.net/qq_42826337/article/details/104779847