Share via


I2CMaster_Read関数

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

I2C マスター インターフェイスで読み取り操作を実行します。 この関数は POSIX read(2) 関数と同じ機能を提供しますが、操作のターゲットである下位 I2C デバイスのアドレスを指定する点が異なっています。

ssize_t I2CMaster_Read(int fd, I2C_DeviceAddress address, uint8_t *buffer, size_t maxLength);

パラメーター

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

  • address 読み取り操作のソースである下位 I2C デバイスの アドレス

  • buffer 下位デバイスからデータを受信する出力バッファー。 このバッファーには、バイトを受信 maxLength するのに十分な領域が含まれている必要があります。 0 の場合 maxLength 、NULL にすることができます。

  • maxLength 受信する最大バイト数。 値は 0 にすることができます。

エラー

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

  • EBUSY: インターフェイスがビジー状態であるか、I2C クロック ライン (SCL) が低く保持されています。

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

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

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

戻り値

正常に読み取られたバイト数を返します。エラーの場合は -1。この場合 errno はエラー値に設定されます。 0 バイトの読み取りを含む部分読み取り操作は成功と見なされます。

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

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