I2CMaster_WriteThenRead İşlevi
Üst bilgi: #include <applibs/i2c.h>
I2C ana arabiriminde birleştirilmiş bir yazma ve sonra okuma işlemi gerçekleştirir. İşlem, aşağıdaki adımlarla tek bir veri yolu işlemi olarak görünür:
- başlangıç koşulu
- Yazmak
- yinelenen başlangıç koşulu
- Okuma
- durdurma koşulu
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);
Parametre
fd
I2C ana arabirimi için dosya tanımlayıcısı.address
Bu işlem için hedef I2C cihazının adresi .writeData
Hedeflenen cihaza iletecek veriler.lenWriteData
İletilecek verilerin bayt uzunluğu.readData
Hedef cihazdan veri alan çıkış arabelleği. Bu arabellek bayt almaklenReadData
için yeterli alan içermelidir.lenReadData
Alınacak verilerin bayt uzunluğu.
Hata
Hatayla karşılaşılırsa ve hata değerine ayarlanırsa errno
-1 döndürür.
EBUSY: Arabirim meşgul veya I2C hattı düşük tutuluyor.
ENXIO: İşlem, alt cihazdan bir ACK almadı.
ETIMEDOUT: İşlem tamamlanmadan önce zaman aşımına uğradı; zaman aşımı süresini ayarlamak için I2CMaster_SetTimeout işlevini kullanabilirsiniz.
Diğer errno
hatalar da belirtilebilir; bu tür hatalar belirlenimci değildir ve sistem güncelleştirmeleri aracılığıyla aynı davranış korunmayabilir.
Dönüş değeri
Başarıyla yazılan ve okunan toplam bayt sayısını veya hata değeri olarak ayarlandığı errno
hata için -1 değerini döndürür. 0 baytlık aktarım da dahil olmak üzere kısmi bir sonuç başarılı olarak kabul edilir.
Uygulama bildirimi gereksinimleri
I2c arabirimine erişmek için uygulamanızın bunu uygulama bildiriminin I2cMaster alanında tanımlaması gerekir.