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ů:
- podmínka spuštění
- Zápis
- podmínka opakovaného spuštění
- Číst
- 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 datreadData
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říjemlenReadData
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.