学習へドリブン開発アプローチ:フレーム--->流れ--->プログラミング
IICのハードウェア(低速バス)
2本の信号線:SCL、SDAの
バス速度:標準最高100kbps、最大400kbpsの高速モード、3.4Mbpsの高速モードは
特徴:半二重通信を、2つだけの行(これはまた、2線式バスとも呼ばれる)、転送8 ;高前後に低いと、アイドル・バス:データラインSDAは引か
IICハードウェアの動作の基本原則
起動して、信号を停止:IICは、ホストによって発行されました
データ転送フォーマット:
SDAライン上で転送される各バイトは8である必要があり、送信されたバイトの各送信ははるかに限定されるものではありません。スタート信号の後、アドレスフィールドが最初に送信されます。IICバスは、ホストの場所のアドレスで送信されたマスターは、ある場合。各フィールドの後にシーケンシャルトランスミッションの高い第一のフィールド(MSB)低級(LSB)に応じて内容(アドレス/データ)、アクノリッジビット続けなければなりません。
応答信号送信:
送信される各バイトについて、受信側は送信側に受信確認信号を送信しなければなりません。応答信号は場合9番目のクロックラインSCLクロックが生成されます。必要なマスタによって生成されたクロックパルス応答信号。9番目のクロックサイクルで、マスタはSDA、スレーブによって駆動されるSDAラインを解放します。アドレスは、受信ホスト(I2Cスレーブデバイス)が一致して送信された受信機は、9番目のクロックサイクルの間SDAラインをハイに引き上げ、すなわち、ACK応答信号場合。
IICサブシステムアーキテクチャ:
デバイスドライバ層成分(I2C-dev.c) 、コア層成分(I2C-core.c) 、バスドライバ層成分(I2C-s3c2410.c)
IICサブシステムアーキテクチャの機能
デバイスドライバ層成分(I2C-dev.c)
================================
機能:
ユーザーに提供するためのインタフェースを呼び出して
実装戦略の質問:どのようなデータを作りました
コア層アセンブリ(I2C-core.c)
==================================
機能:
I2Cバスを登録する
プログラマはプログラミング・インタフェースを提供します駆動するために
バスドライバ層接合体(I2C-s3c2410.c)
===================================
機能:
ハードウェア(I2Cコントローラ)の初期化
制御処理方法を実現する:( I2C I2Cコントローラが動作タイミング/送信データの受信に応じて)
データを送信する方法
IICサブシステムアーキテクチャの重要な構造と機能の設計
重要な機能(のLinux / i2c.h)の開発に関与IICサブシステム・デバイス・ドライバー
================================= =============================
int型 i2c_master_send(CONST 構造体 i2c_client *クライアント、CONST のchar * bufは、int型のCOUNT); int型(i2c_master_recvをCONST 構造体 i2c_client *クライアント、チャー *のBUF、int型COUNT); INT i2c_transfer(構造体 i2c_adapter * ADAP、構造体 i2c_msg *のMSG、INT NUM ); // パケットI2C送信 int型 i2c_register_board_info(int型のBusNum、構造体 i2c_board_info CONST *情報、n型符号なしの); // 登録情報ボード / *登録/ログインアダプター* / int型 i2c_add_adapter(構造体 i2c_adapter * ); int型 i2c_del_adapter(構造体 i2c_adapter * ); int型 i2c_add_numbered_adapter(構造体 i2c_adapter * ); / * 登録/ログインI2Cドライバ* / int型 i2c_register_driver(構造体モジュール*、構造体 i2c_driver * ) ; 無効 i2c_del_driver(構造体 i2c_driver * ); / * 登録/ログインI2Cデバイス* / 構造体 * i2c_clientをi2c_new_probed_device(構造体 i2c_adapterの*のADAP、構造体 i2c_board_info * 情報、 符号なしの短い CONST * addr_list、INT(*プローブ)(構造体 i2c_adapterの*、符号なしの短いADDR)); 空 i2c_unregister_device(構造体 i2c_client *)。
ソースコード解析サブシステムアーキテクチャIIC
IIC特定のデバイスドライバの開発