Dela via


funktionen I2CMaster_Read

Sidhuvud: #include <applibs/i2c.h>

Utför en läsåtgärd i ett I2C-huvudgränssnitt. Den här funktionen har samma funktioner som funktionen POSIX read(2), förutom att den anger adressen till den underordnade I2C-enheten som är målet för åtgärden.

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

Parametrar

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

  • address Adressen till den underordnade I2C-enheten som är källan för läsåtgärden.

  • buffer Utdatabufferten som tar emot data från den underordnade enheten. Den här bufferten måste innehålla tillräckligt med utrymme för att ta emot maxLength byte. Det kan vara NULL om maxLength det är 0.

  • maxLength Maximalt antal byte att ta emot. Värdet kan vara 0.

Fel

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

  • EBUSY: gränssnittet är upptagen eller I2C klocka linje (SCL) hålls låg.

  • ENXIO: Åtgärden fick inget 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 antalet byte som lästs. eller -1 för fel, i vilket fall errno anges till felvärdet. En partiell läsning, inklusive en läsning på 0 byte, anses vara en lyckad åtgärd.

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.