Compartilhar via


Função I2CMaster_WriteThenRead

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

Executa uma operação combinada de gravação e leitura em uma interface de master I2C. A operação é exibida como uma única transação de barramento com as seguintes etapas:

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

Parâmetros

  • fdO descritor de arquivo para a interface do master I2C.

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

  • writeData Os dados a serem transmitidos para o dispositivo de destino.

  • lenWriteData O comprimento de bytes dos dados a serem transmitidos.

  • readData O buffer de saída que recebe dados do dispositivo de destino. Esse buffer deve conter espaço suficiente para receber lenReadData bytes.

  • lenReadData O comprimento do byte dos dados a receber.

Erros

Retorna -1 se um erro for encontrado e definir errno como o valor do erro.

  • EBUSY: a interface está ocupada ou a linha I2C está sendo mantida baixa.

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

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

Qualquer outro errno também pode ser especificado; esses erros não são determinísticos e o mesmo comportamento pode não ser mantido por meio de atualizações do sistema.

Valor retornado

Retorna o número combinado de bytes gravados e lidos com êxito ou -1 para falha, nesse caso errno , é definido como o valor do erro. Um resultado parcial, incluindo uma transferência de 0 bytes, é considerado um sucesso.

Requisitos de manifesto do aplicativo

Para acessar uma interface I2c, seu aplicativo deve identificá-la no campo I2cMaster do manifesto do aplicativo.