Share via


I2CMaster_Read-Funktion

Header: #include <applibs/i2c.h>

Führt einen Lesevorgang für eine I2C-master-Schnittstelle aus. Diese Funktion bietet die gleiche Funktionalität wie die POSIX read(2)-Funktion, mit der Ausnahme, dass sie die Adresse des untergeordneten I2C-Geräts angibt, das das Ziel des Vorgangs ist.

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

Parameter

  • fdDer Dateideskriptor für die I2C-master-Schnittstelle.

  • address Die Adresse des untergeordneten I2C-Geräts, das die Quelle für den Lesevorgang ist.

  • buffer Der Ausgabepuffer, der Daten vom untergeordneten Gerät empfängt. Dieser Puffer muss genügend Speicherplatz zum Empfangen maxLength von Bytes enthalten. Dies kann NULL sein, wenn maxLength 0 ist.

  • maxLength Die maximale Anzahl der zu empfangenden Bytes. Der Wert kann 0 sein.

Fehler

Gibt -1 zurück, wenn ein Fehler auftritt, und legt auf den Fehlerwert fest errno .

  • EBUSY: Die Schnittstelle ist ausgelastet, oder die I2C-Taktlinie (SCL) wird niedrig gehalten.

  • ENXIO: Der Vorgang hat keine ACK vom untergeordneten Gerät empfangen.

  • ETIMEDOUT: Zeitüberschreitung des Vorgangs vor Abschluss; Sie können die I2CMaster_SetTimeout-Funktion verwenden, um die Timeoutdauer anzupassen.

Auch andere errno Fehler können angegeben werden. Solche Fehler sind nicht deterministisch, und dasselbe Verhalten wird möglicherweise nicht durch Systemupdates beibehalten.

Rückgabewert

Gibt die Anzahl der Bytes zurück, die erfolgreich gelesen wurden. oder -1 für Fehler, in diesem Fall errno wird auf den Fehlerwert festgelegt. Ein partieller Lesevorgang, einschließlich eines Lesevorgangs von 0 Bytes, wird als erfolgreich betrachtet.

Anforderungen an das Anwendungsmanifest

Um auf eine I2c-Schnittstelle zugreifen zu können, muss Ihre Anwendung diese im Feld I2cMaster des Anwendungsmanifests identifizieren.