Aracılığıyla paylaş


I2CMaster_Read İşlevi

Üst bilgi: #include <applibs/i2c.h>

I2C ana arabiriminde okuma işlemi gerçekleştirir. Bu işlev, işlemin hedefi olan alt I2C cihazının adresini belirtmesi dışında POSIX read(2) işleviyle aynı işlevi sağlar.

ssize_t I2CMaster_Read(int fd, I2C_DeviceAddress address, uint8_t *buffer, size_t maxLength);

Parametre

  • fd I2C ana arabirimi için dosya tanımlayıcısı.

  • address Okuma işleminin kaynağı olan alt I2C cihazının adresi .

  • buffer Alt cihazdan veri alan çıkış arabelleği. Bu arabellek bayt almak maxLength için yeterli alan içermelidir. 0 ise maxLength bu NULL olabilir.

  • maxLength Alınacak bayt sayısı üst sınırı. Değer 0 olabilir.

Hata

Hatayla karşılaşılırsa ve hata değerine ayarlanırsa errno -1 döndürür.

  • EBUSY: Arabirim meşgul veya I2C saat çizgisi (SCL) 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 okunan bayt sayısını verir; veya hata için -1, bu durumda errno hata değerine ayarlanır. 0 bayt okuma da dahil olmak üzere kısmi okuma işlemi 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.