[[ファームウェア関数一覧>ファームウェア関数一覧#u5cbf254]]
*I2C_StretchClockCmd [#ff21f219]
#contents
**ヘッダ宣言 [#p3996fcd]

**関数プロトタイプ [#p06bfad7]
 void I2C_StretchClockCmd(I2C_TypeDef* I2Cx, FunctionalState NewState)
**動作 [#tb029ffb]
-I2Cx周辺回路のを有効・無効化します。&br;
I2Cx周辺回路のクロックストレッチ機能を有効・無効化します。&br;

スレーブ側から送信するとき処理時間が間に合わない時、クロックラインをLow
に強制的にする事で、マスタ側がクロックを送信するのを待たせる事が出来ます。これをクロックストレッチといいます。

本来は、いつでもクロックストレッチは可能であり、スレーブ側がSCLラインをLowにすればマスタ側からのクロックの送信を抑制することが出来る。さらに、速度の異なるデバイスが同じラインに接続されている場合には、デバイスが特定されるまでは、クロックストレッチにより、もっとも遅いデバイスの速度に全体が抑制される。

デバイスがアドレスにより特定されたあとは、そのデバイスの速度で通信する事が出来る。これは、ラインがワイアードANDになっているため、すべてのデバイスがSCLラインをアイドルにしないとレベルがHighにならないためである。

#ref(i2cStretchClock.PNG)

**引数 [#kb82cddd]
-I2Cx&br;
I2C1又はI2C2を指定します。&br;
&br;
-NewState&br;
&br;
|CENTER:NewState|CENTER:説明|h
|ENABLE|有効にします|
|DISABLE|無効にします|
#include(Macro/NewState,notitle)
&br;
**出力値 [#ldc7b68b]
-無し
**戻り値 [#m45412b6]
-無し
**呼び出し関数 [#f9fe7e5a]
-無し
**サンプル [#w905769a]
 /* Enable the I2C2 clock stretching */
 I2C_StretchClockCmd(I2C2, ENABLE);
**参照 [#s135ccf2]
-

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS