Partilhar via


Função I2CMaster_WriteThenRead

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

Efetua uma operação de escrita e leitura combinada numa interface mestra I2C. A operação aparece como uma única transação de barramento com os seguintes passos:

  1. condição de início
  2. escrever
  3. condição de início repetida
  4. ler
  5. condição de paragem
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);

Parâmetros

  • fd O descritor de ficheiros da interface mestra I2C.

  • address O endereço do dispositivo I2C de destino para esta operação.

  • writeData Os dados a transmitir para o dispositivo de destino.

  • lenWriteData O comprimento de byte dos dados a transmitir.

  • readData A memória intermédia de saída que recebe dados do dispositivo de destino. Esta memória intermédia tem de conter espaço suficiente para receber lenReadData bytes.

  • lenReadData O comprimento de byte dos dados a receber.

Erros

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

  • EBUSY: a interface está ocupada ou a linha I2C 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 combinado de bytes escritos e lidos com êxito ou -1 para a falha, caso errno em que está definido como o valor de erro. Um resultado parcial, incluindo uma transferência de 0 bytes, é considerado 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.