[[ファームウェア関数一覧>ファームウェア関数一覧#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] -