次の方法で共有


I2CMaster_WriteThenRead関数

ヘッダー: applibs </i2c.h #include>

I2C マスター インターフェイスに対して、書き込み後の読み取り操作を組み合わせて実行します。 操作は、次の手順で 1 つのバス トランザクションとして表示されます。

  1. 開始条件
  2. 書き込み
  3. 繰り返し開始条件
  4. 読む
  5. stop 条件
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);

パラメーター

  • fd I2C マスター インターフェイスのファイル記述子。

  • address この操作のターゲット I2C デバイスの アドレス

  • writeData ターゲット デバイスに送信するデータ。

  • lenWriteData 送信するデータのバイト長。

  • readData ターゲット デバイスからデータを受信する出力バッファー。 このバッファーには、バイトを受信 lenReadData するのに十分な領域が含まれている必要があります。

  • lenReadData 受信するデータのバイト長。

エラー

エラーが発生した場合は -1 を返し、エラー値に設定します errno

  • EBUSY: インターフェイスがビジーであるか、I2C 回線が低く保持されています。

  • ENXIO: 操作が下位デバイスから ACK を受信しませんでした。

  • ETIMEDOUT: 操作が完了する前にタイムアウトしました。 I2CMaster_SetTimeout 関数を使用してタイムアウト期間を調整できます。

その他 errno のエラーも指定できます。このようなエラーは決定的ではなく、同じ動作はシステム更新によって保持されない可能性があります。

戻り値

正常に書き込まれ、読み取られた合計バイト数を返します。エラーの場合は -1 を返します。この場合 errno はエラー値に設定されます。 0 バイトの転送を含む部分的な結果は成功と見なされます。

アプリケーション マニフェストの要件

I2c インターフェイスにアクセスするには、アプリケーション マニフェストの I2cMaster フィールドで 識別する必要があります。