Dela via


funktionen I2CMaster_WriteThenRead

Sidhuvud: #include <applibs/i2c.h>

Utför en kombinerad skriv- och läsåtgärd i ett I2C-huvudgränssnitt. Åtgärden visas som en enda busstransaktion med följande steg:

  1. startvillkor
  2. Skriva
  3. upprepat starttillstånd
  4. Läsa
  5. stoppvillkor
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);

Parametrar

  • fd Filbeskrivning för I2C-huvudgränssnittet.

  • addressAdressen till mål-I2C-enheten för den här åtgärden.

  • writeData De data som ska överföras till den riktade enheten.

  • lenWriteData Bytelängden för de data som ska överföras.

  • readData Utdatabufferten som tar emot data från målenheten. Bufferten måste innehålla tillräckligt med utrymme för att ta emot lenReadData byte.

  • lenReadData Bytelängden för de data som ska skickas.

Fel

Returnerar -1 om ett fel uppstår och anger errno felvärdet.

  • EBUSY: gränssnittet är upptaget eller I2C-linjen hålls låg.

  • ENXIO: åtgärden fick ingen ACK från den underordnade enheten.

  • ETIMEDOUT: åtgärden avslutades innan den slutfördes. kan du använda funktionen I2CMaster_SetTimeout för att justera timeoutvaraktigheten.

errno Andra kan också anges, sådana fel är inte deterministiska och samma beteende kanske inte behålls via systemuppdateringar.

Returvärde

Returnerar det kombinerade antalet byte som skrivits och lästs, eller -1 för fel, i vilket fall errno felvärdet är inställt. Ett partiellt resultat, inklusive en överföring av 0 byte, anses vara en framgång.

Krav för programmanifest

För att få åtkomst till ett I2c-gränssnitt måste programmet identifiera det i fältet I2cMaster i programmanifestet.