Share via


I2CMaster_WriteThenRead-Funktion

Header: #include <applibs/i2c.h>

Führt einen kombinierten Schreib-dann-Lesevorgang für eine I2C-master-Schnittstelle aus. Der Vorgang wird als einzelne Bustransaktion mit den folgenden Schritten angezeigt:

  1. Startbedingung
  2. Schreiben
  3. Bedingung für wiederholten Start
  4. Lesen
  5. Stop-Bedingung
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);

Parameter

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

  • address Die Adresse des I2C-Zielgeräts für diesen Vorgang.

  • writeData Die Daten, die an das Zielgerät übertragen werden sollen.

  • lenWriteData Die Bytelänge der zu übertragenden Daten.

  • readData Der Ausgabepuffer, der Daten vom Zielgerät empfängt. Dieser Puffer muss ausreichend Speicherplatz zum Empfangen lenReadData von Bytes enthalten.

  • lenReadData Die Bytelänge der zu empfangenden Daten.

Fehler

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

  • EBUSY: Die Schnittstelle ist ausgelastet, oder die I2C-Leitung 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 kombinierte Anzahl von Bytes zurück, die erfolgreich geschrieben und gelesen wurden, oder -1 bei Einem Fehler. In diesem Fall errno wird auf den Fehlerwert festgelegt. Ein Teilergebnis, einschließlich einer Übertragung von 0 Bytes, wird als erfolgreich angesehen.

Anforderungen an das Anwendungsmanifest

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