Delen via


I2CMaster_WriteThenRead functie

Header: #include <applibs/i2c.h>

Voert een gecombineerde schrijf-dan-leesbewerking uit op een I2C-hoofdinterface. De bewerking wordt weergegeven als een transactie met één bus met de volgende stappen:

  1. beginvoorwaarde
  2. Schrijven
  3. herhaalde startvoorwaarde
  4. Lezen
  5. stopvoorwaarde
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);

Parameters

  • fd De bestandsdescriptor voor de I2C-hoofdinterface.

  • address Het adres van het doel-I2C-apparaat voor deze bewerking.

  • writeData De gegevens die moeten worden verzonden naar het doelapparaat.

  • lenWriteData De bytelengte van de gegevens die moeten worden verzonden.

  • readData De uitvoerbuffer die gegevens van het doelapparaat ontvangt. Deze buffer moet voldoende ruimte bevatten om bytes te ontvangen lenReadData .

  • lenReadData De bytelengte van de gegevens die moeten worden ontvangen.

Fouten

Retourneert -1 als er een fout optreedt en wordt ingesteld errno op de foutwaarde.

  • EBUSY: de interface is bezet of de I2C-lijn wordt laag gehouden.

  • ENXIO: de bewerking heeft geen ACK ontvangen van het onderliggende apparaat.

  • ETIMEDOUT: er is een time-out opgetreden voordat de bewerking werd voltooid; u kunt de functie I2CMaster_SetTimeout gebruiken om de time-outduur aan te passen.

errno Andere fouten kunnen ook worden opgegeven; dergelijke fouten zijn niet deterministisch en hetzelfde gedrag wordt mogelijk niet bewaard via systeemupdates.

Retourwaarde

Retourneert het gecombineerde aantal bytes dat is geschreven en gelezen, of -1 voor fout, in welk geval errno is ingesteld op de foutwaarde. Een gedeeltelijk resultaat, inclusief een overdracht van 0 bytes, wordt beschouwd als geslaagd.

Vereisten voor toepassingsmanifest

Voor toegang tot een I2c-interface moet uw toepassing deze identificeren in het veld I2cMaster van het toepassingsmanifest.