Sdílet prostřednictvím


funkce I2CMaster_WriteThenRead

Záhlaví: #include <applibs/i2c.h>

Provádí kombinovanou operaci zápisu a čtení na hlavním rozhraní I2C. Operace se zobrazí jako transakce s jednou sběrnice pomocí následujících kroků:

  1. podmínka spuštění
  2. Zápis
  3. podmínka opakovaného spuštění
  4. Číst
  5. podmínka zastavení
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);

Parametry

  • fd Popisovač souboru pro hlavní rozhraní I2C.

  • address Adresa cílového zařízení I2C pro tuto operaci.

  • writeData Data, která se mají přenést do cílového zařízení.

  • lenWriteData Délka bajtů přenášených dat

  • readData Výstupní vyrovnávací paměť, která přijímá data z cílového zařízení. Tato vyrovnávací paměť musí obsahovat dostatek místa pro příjem lenReadData bajtů.

  • lenReadData Bajtová délka dat, která se mají přijmout.

Chyby

Vrátí hodnotu -1, pokud dojde k chybě, a nastaví errno se na chybovou hodnotu.

  • EBUSY: Rozhraní je zaneprázdněno nebo je řádek I2C přidržován nízko.

  • ENXIO: Operace neobdržela ACK z podřízeného zařízení.

  • ETIMEDOUT: časový limit operace vypršel před dokončením; k úpravě doby trvání časového limitu můžete použít funkci I2CMaster_SetTimeout .

Je také možné zadat všechny ostatní errno chyby. Tyto chyby nejsou deterministické a stejné chování nemusí být zachováno prostřednictvím aktualizací systému.

Vrácená hodnota

Vrátí kombinovaný počet bajtů, které byly úspěšně zapsány a přečteny, nebo -1 pro selhání. V tomto případě errno je nastavena na chybovou hodnotu. Částečný výsledek, včetně přenosu 0 bajtů, se považuje za úspěch.

Požadavky manifestu aplikace

Pokud chcete získat přístup k rozhraní I2c, vaše aplikace ho musí identifikovat v poli I2cMaster manifestu aplikace.