Partage via


I2CMaster_WriteThenRead, fonction

En-tête : #include <applibs/i2c.h>

Effectue une opération combinée d’écriture, puis de lecture sur une interface de master I2C. L’opération s’affiche sous la forme d’une transaction de bus unique avec les étapes suivantes :

  1. condition de démarrage
  2. Écrire
  3. condition de démarrage répétée
  4. Lire
  5. condition d’arrêt
ssize_t I2CMaster_WriteThenRead(int fd, I2C_DeviceAddress address, const uint8_t *writeData, size_t lenWriteData, uint8_t *readData, size_t lenReadData);

Paramètres

  • fdDescripteur de fichier pour l’interface de master I2C.

  • addressAdresse de l’appareil I2C cible pour cette opération.

  • writeData Données à transmettre à l’appareil ciblé.

  • lenWriteData Longueur en octets des données à transmettre.

  • readData Mémoire tampon de sortie qui reçoit les données de l’appareil cible. Cette mémoire tampon doit contenir suffisamment d’espace pour recevoir des lenReadData octets.

  • lenReadData Longueur d’octet des données à recevoir.

Erreurs

Retourne -1 si une erreur est rencontrée et définit errno sur la valeur d’erreur.

  • EBUSY : l’interface est occupée ou la ligne I2C est maintenue bas.

  • ENXIO : l’opération n’a pas reçu d’ACK de l’appareil subordonné.

  • ETIMEDOUT : l’opération a expiré avant de se terminer; vous pouvez utiliser la fonction I2CMaster_SetTimeout pour ajuster la durée du délai d’expiration.

Toutes les autres errno peuvent également être spécifiées ; ces erreurs ne sont pas déterministes et le même comportement peut ne pas être conservé par le biais des mises à jour système.

Valeur de retour

Retourne le nombre combiné d’octets correctement écrits et lus, ou -1 en cas d’échec, auquel cas errno est défini sur la valeur d’erreur. Un résultat partiel, y compris un transfert de 0 octet, est considéré comme un succès.

Exigences du manifeste d’application

Pour accéder à une interface I2c, votre application doit l’identifier dans le champ I2cMaster du manifeste de l’application.