Udostępnij za pośrednictwem


Funkcja I2CMaster_Read

Nagłówek: #include <applibs/i2c.h>

Wykonuje operację odczytu na interfejsie głównym I2C. Ta funkcja zapewnia taką samą funkcjonalność jak funkcja POSIX read(2), z wyjątkiem tego, że określa adres podrzędnego urządzenia I2C, które jest obiektem docelowym operacji.

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

Parametry

  • fd Deskryptor plików interfejsu głównego I2C.

  • address Adres podrzędnego urządzenia I2C, które jest źródłem operacji odczytu.

  • buffer Bufor wyjściowy, który odbiera dane z urządzenia podrzędnego. Ten bufor musi zawierać wystarczającą ilość miejsca do odbierania maxLength bajtów. Może to być wartość NULL, jeśli maxLength jest równa 0.

  • maxLength Maksymalna liczba bajtów do odebrania. Wartość może wynosić 0.

Błędy

Zwraca wartość -1 w przypadku napotkania błędu i ustawia errno wartość błędu.

  • EBUSY: interfejs jest zajęty lub linia zegara I2C (SCL) jest utrzymywana na niskim poziomie.

  • ENXIO: operacja nie otrzymała ACK z urządzenia podrzędnego.

  • ETIMEDOUT: przekroczona została przekroczona limit czasu operacji przed ukończeniem operacji; możesz użyć funkcji I2CMaster_SetTimeout , aby dostosować czas trwania limitu czasu.

Mogą być również określone inne errno błędy; takie błędy nie są deterministyczne i to samo zachowanie może nie być zachowane za pośrednictwem aktualizacji systemu.

Zwracana wartość

Zwraca liczbę bajtów pomyślnie przeczytanych. lub -1 dla niepowodzenia, w którym to przypadku errno zostanie ustawiona wartość błędu. Operacja częściowego odczytu, w tym odczyt 0 bajtów, jest uważana za sukces.

Wymagania dotyczące manifestu aplikacji

Aby uzyskać dostęp do interfejsu I2c, aplikacja musi zidentyfikować go w polu I2cMaster manifestu aplikacji.