다음을 통해 공유


I2CMaster_WriteThenRead 함수

헤더: #include <applibs/i2c.h>

I2C master 인터페이스에서 결합된 쓰기/읽기 작업을 수행합니다. 작업은 다음 단계를 사용하여 단일 버스 트랜잭션으로 나타납니다.

  1. 시작 조건
  2. 쓰기
  3. 반복된 시작 조건
  4. 읽기
  5. 중지 조건
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);

매개 변수

  • fdI2C master 인터페이스의 파일 설명자입니다.

  • address 이 작업에 대한 대상 I2C 디바이스의 주소 입니다.

  • writeData 대상 디바이스로 전송할 데이터입니다.

  • lenWriteData 전송할 데이터의 바이트 길이입니다.

  • readData 대상 디바이스에서 데이터를 수신하는 출력 버퍼입니다. 이 버퍼는 바이트를 받을 lenReadData 수 있는 충분한 공간을 포함해야 합니다.

  • lenReadData 받을 데이터의 바이트 길이입니다.

오류

오류가 발생하고 를 오류 값으로 설정 errno 하면 -1을 반환합니다.

  • EBUSY: 인터페이스가 사용 중이거나 I2C 줄이 낮게 유지되고 있습니다.

  • ENXIO: 작업이 하위 디바이스에서 ACK를 받지 못했습니다.

  • ETIMEDOUT: 작업이 완료되기 전에 시간이 초과되었습니다. I2CMaster_SetTimeout 함수를 사용하여 시간 제한 기간을 조정할 수 있습니다.

다른 errno 모든 오류도 지정할 수 있습니다. 이러한 오류는 결정적이지 않으며 시스템 업데이트를 통해 동일한 동작이 유지되지 않을 수 있습니다.

반환 값

성공적으로 작성 및 읽은 바이트 수를 반환하거나 실패의 경우 -1을 반환합니다. 이 경우 errno 오류 값으로 설정됩니다. 0바이트 전송을 포함한 부분 결과는 성공으로 간주됩니다.

애플리케이션 매니페스트 요구 사항

I2c 인터페이스에 액세스하려면 애플리케이션 매니페스트의 I2cMaster 필드에서 해당 인터페이스를 식별해야 합니다.