Partilhar via


Função I2CMaster_Read

Cabeçalho: #include <applibs/i2c.h>

Efetua uma operação de leitura numa interface mestra I2C. Esta função fornece a mesma funcionalidade que a função POSIX read(2), exceto que especifica o endereço do dispositivo I2C subordinado que é o destino da operação.

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

Parâmetros

  • fd O descritor de ficheiros da interface mestra I2C.

  • address O endereço do dispositivo I2C subordinado que é a origem da operação de leitura.

  • buffer A memória intermédia de saída que recebe dados do dispositivo subordinado. Esta memória intermédia tem de conter espaço suficiente para receber maxLength bytes. Pode ser NULO se maxLength for 0.

  • maxLength O número máximo de bytes a receber. O valor pode ser 0.

Erros

Devolve -1 se for encontrado um erro e define errno para o valor de erro.

  • EBUSY: a interface está ocupada ou a linha do relógio I2C (SCL) está a ser mantida baixa.

  • ENXIO: a operação não recebeu uma ACK do dispositivo subordinado.

  • ETIMEDOUT: a operação excedeu o limite de tempo antes de ser concluída; pode utilizar a função I2CMaster_SetTimeout para ajustar a duração do tempo limite.

Também pode ser especificado qualquer outro errno ; esses erros não são deterministas e o mesmo comportamento pode não ser retido através de atualizações do sistema.

Valor devolvido

Devolve o número de bytes lidos com êxito; ou -1 para a falha, caso errno em que será definido como o valor de erro. Uma operação de leitura parcial, incluindo uma leitura de 0 bytes, é considerada um sucesso.

Requisitos do manifesto de aplicação

Para aceder a uma interface I2c, a sua aplicação tem de identificá-la no campo I2cMaster do manifesto da aplicação.