Share via


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:

  1. başlangıç koşulu
  2. Yazmak
  3. yinelenen başlangıç koşulu
  4. Okuma
  5. 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 almak lenReadData 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.