Funzione I2CMaster_WriteThenRead

Intestazione: #include <applicazioni/i2c.h>

Esegue un'operazione combinata di scrittura e lettura su un'interfaccia master I2C. L'operazione viene visualizzata come una singola transazione bus con i seguenti passaggi:

  1. condizione di inizio
  2. Scrivere
  3. condizione di inizio ripetuta
  4. Leggere
  5. condizione di interruzione
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);

Parametri

  • fd Descrittore di file per l'interfaccia master I2C.

  • addressIndirizzo del dispositivo I2C di destinazione per questa operazione.

  • writeData I dati da trasmettere al dispositivo di destinazione.

  • lenWriteData Lunghezza dei dati da trasmettere.

  • readData Buffer di output che riceve i dati dal dispositivo di destinazione. Questo buffer deve contenere spazio sufficiente per ricevere lenReadData byte.

  • lenReadData Lunghezza dei dati da ricevere.

Errori

Restituisce -1 se si verifica un errore e imposta errno il valore di errore.

  • EBUSY: l'interfaccia è occupata o la linea I2C è bassa.

  • ENXIO: l'operazione non ha ricevuto un ACK dal dispositivo subordinato.

  • ETIMEDOUT: timeout dell'operazione prima del completamento; è possibile usare la funzione I2CMaster_SetTimeout per modificare la durata del timeout.

Potrebbero anche essere specificati altri errno errori. Tali errori non sono deterministici e lo stesso comportamento potrebbe non essere mantenuto tramite gli aggiornamenti di sistema.

Valore restituito

Restituisce il numero combinato di byte scritti e letti correttamente oppure -1 per errore, nel qual caso errno è impostato sul valore di errore. Un risultato parziale, compreso il trasferimento di 0 byte, è considerato un successo.

Requisiti del manifesto dell'applicazione

Per accedere a un'interfaccia I2c, l'applicazione deve identificarla nel campo I2cMaster del manifesto dell'applicazione.