AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR

Description détaillée

Ce module permet de transmettre ou reçevoir des informations sur le bus I2C en tant que maître.
La macro TWI_MASTER_ENABLE dans avrio-board-twi.h pour valider ce module.
Les conflits de bus sont gérés (arbitrage).

Dépendances:

Graphe de collaboration de Bus I2C en mode maître:

Fonctions

eTwiStatus eTwiGetRxFrame (xTwiFrame *pxFrame)
 Lecture d'une trame reçue. Plus de détails...
 
eTwiStatus eTwiGetStatus (xTwiId xFrameId, xTwiLength *pxLength)
 Lecture de l'état du module maître. Plus de détails...
 
eTwiStatus eTwiMem16Read (uint16_t usMemAddr, xTwiFrame *pxFrame)
 Lecture dans une mémoire I2C (Adresse mémoire 16 bits) Plus de détails...
 
eTwiStatus eTwiMem16Write (uint16_t usMemAddr, xTwiFrame *pxFrame)
 Ecriture dans une mémoire I2C (Adresse mémoire 16 bits) Plus de détails...
 
eTwiStatus eTwiMem8Read (uint8_t ucFisrtByte, xTwiFrame *pxFrame)
 Lecture dans une mémoire I2C (Adresse mémoire 8 bits) Plus de détails...
 
eTwiStatus eTwiMem8Write (uint8_t ucFisrtByte, xTwiFrame *pxFrame)
 Ecriture dans une mémoire I2C (Adresse mémoire 8 bits) Plus de détails...
 
eTwiStatus eTwiRead (xTwiDeviceAddr xDeviceAddr, uint8_t *pucByte)
 Réception d'un octet en mode maître. Plus de détails...
 
eTwiStatus eTwiReceive (xTwiFrame *pxFrame)
 Réception d'un message en mode maître. Plus de détails...
 
eTwiStatus eTwiSend (xTwiFrame *pxFrame)
 Emission d'un message en mode maître. Plus de détails...
 
eTwiStatus eTwiSetSpeed (uint16_t usSpeed)
 Modifie la vitesse d'horloge du bus en mode maître. Plus de détails...
 
eTwiStatus eTwiWrite (xTwiDeviceAddr xDeviceAddr, uint8_t ucByte)
 Envoi d'un octet en mode maître. Plus de détails...
 
xTwiId xTwiTryReceive (xTwiFrame *pxFrame)
 Réception non bloquante d'un message en mode maître. Plus de détails...
 
xTwiId xTwiTrySend (const xTwiFrame *pxFrame)
 Emission non bloquante d'un message en mode maître. Plus de détails...
 

Macros

#define TWI_ID_SIZEOF   1
 

Définitions de type

typedef int8_t xTwiId
 Identifiant d'une trame.
 

Documentation des fonctions

eTwiStatus eTwiGetRxFrame ( xTwiFrame pxFrame)

Lecture d'une trame reçue.

Paramètres
pxFramePointeur sur la trame où sont stockés les octets à envoyer.
Renvoie
  • TWI_SUCCESS si la trame a été totalement lue.
  • Un code négatif en cas d'erreur
eTwiStatus eTwiGetStatus ( xTwiId  xFrameId,
xTwiLength pxLength 
)

Lecture de l'état du module maître.

Paramètres
xFrameIdL'identifiant de la trame (renvoyé par xTwiTrySend(), xTwiTryReceive() ou xTwiTrySendReceive()).
pxLengthPointeur sur une variable qui contiendra le nombre d'octets transmis ou reçus (0 si TWI_STATUS_BUSY). Si l'utilisateur ne souhaite pas utiliser cette valeur, il suffit de passer un pointeur NULL.
Renvoie
  • TWI_SUCCESS si la trame a été totalement transmise ou reçue.
  • TWI_STATUS_BUSY si le module est occupé.
  • Un code négatif en cas d'erreur.
eTwiStatus eTwiMem16Read ( uint16_t  usMemAddr,
xTwiFrame pxFrame 
)

Lecture dans une mémoire I2C (Adresse mémoire 16 bits)

Paramètres
usMemAddrAdresse dans la mémoire
pxFramePointeur sur la trame
Renvoie
TWI_SUCCESS si une trame a été reçue, un code erreur sinon.
eTwiStatus eTwiMem16Write ( uint16_t  usMemAddr,
xTwiFrame pxFrame 
)

Ecriture dans une mémoire I2C (Adresse mémoire 16 bits)

Paramètres
usMemAddrAdresse dans la mémoire
pxFramePointeur sur la trame
Renvoie
TWI_SUCCESS si une trame a été reçue, un code erreur sinon.
eTwiStatus eTwiMem8Read ( uint8_t  ucFisrtByte,
xTwiFrame pxFrame 
)

Lecture dans une mémoire I2C (Adresse mémoire 8 bits)

Paramètres
ucFisrtByteAdresse dans la mémoire ou octet de commande à envoyer avant la lecture des octets.
pxFramePointeur sur la trame
Renvoie
TWI_SUCCESS si une trame a été reçue, un code erreur sinon.
eTwiStatus eTwiMem8Write ( uint8_t  ucFisrtByte,
xTwiFrame pxFrame 
)

Ecriture dans une mémoire I2C (Adresse mémoire 8 bits)

Paramètres
ucFisrtByteAdresse dans la mémoire ou octet de commande à envoyer avant l'écriture des octets contenu dans la trame.
pxFramePointeur sur la trame
Renvoie
TWI_SUCCESS si une trame a été reçue, un code erreur sinon.
eTwiStatus eTwiRead ( xTwiDeviceAddr  xDeviceAddr,
uint8_t *  pucByte 
)

Réception d'un octet en mode maître.

Cette fonction est bloquante, et ne retourne qu'après avoir transmis l'octet ou en cas d'erreur.
Un reset du timer chien de garde est effectué dans la boucle d'attente.
Cette fonction ne devrait pas être utilisé pour recevoir une suite d'octets car elle déclenche un START et un STOP après chaque réception (risque de conflit). Pour recevoir une suite d'octets, il est préférable d'utiliser eTwiReceive().

Paramètres
xDeviceAddrAdresse I2C du circuit
pucBytePointeur sur l'octet reçu.
Renvoie
TWI_SUCCESS si la trame a pu être transmise, le code erreur sinon.
eTwiStatus eTwiReceive ( xTwiFrame pxFrame)

Réception d'un message en mode maître.

Cette fonction est bloquante, et ne retourne qu'après avoir reçue une trame ou en cas d'erreur.
Un reset du timer chien de garde est effectué dans la boucle d'attente.

Paramètres
pxFramePointeur sur la trame où seront stockés les octets reçus
Renvoie
TWI_SUCCESS si une trame a été reçue, un code erreur sinon.
eTwiStatus eTwiSend ( xTwiFrame pxFrame)

Emission d'un message en mode maître.

Cette fonction est bloquante, et ne retourne qu'après avoir transmis la trame ou en cas d'erreur.
Un reset du timer chien de garde est effectué dans la boucle d'attente.

Paramètres
pxFramePointeur sur la trame où sont stockés les octets à envoyer.
Renvoie
TWI_SUCCESS si la trame a pu être transmise, le code erreur sinon.
eTwiStatus eTwiSetSpeed ( uint16_t  usSpeed)

Modifie la vitesse d'horloge du bus en mode maître.

Les calculs devraient être effectués par le préprocesseur si usSpeed est constant.

Paramètres
usSpeedvitesse de transmission en kb/s
Renvoie
TWI_SUCCESS ou TWI_ERROR_INVALID_SPEED en cas de vitesse invalide.
Exemples:
idwarf/terminal/sensor/terminal_sensor.c, rtc/demo_rtc.c, sensor/hih6130/demo_sensor_hih6130.c, sensor/hsc/twi/demo_sensor_hsc_twi.c, et sensor/mq135/demo/demo_sensor_mq135.c.
eTwiStatus eTwiWrite ( xTwiDeviceAddr  xDeviceAddr,
uint8_t  ucByte 
)

Envoi d'un octet en mode maître.

Cette fonction est bloquante, et ne retourne qu'après avoir transmis l'octet ou en cas d'erreur.
Un reset du timer chien de garde est effectué dans la boucle d'attente.
Cette fonction ne devrait pas être utilisé pour envoyer une suite d'octets car elle déclenche un START et un STOP après chaque envoi (risque de conflit). Pour envoyer une suite d'octets, il est préférable d'utiliser eTwiSend().

Paramètres
xDeviceAddrAdresse I2C du circuit
ucBytel'octet à envoyer.
Renvoie
TWI_SUCCESS si la trame a pu être transmise, le code erreur sinon.
xTwiId xTwiTryReceive ( xTwiFrame pxFrame)

Réception non bloquante d'un message en mode maître.

Cette fonction est non bloquante et la réception se fait sous interruption, cela signifie que la fonction retourne alors que toutes données n'ont pas forcément été reçues.
Elle est prévue pour être utilisée dans un contexte multitâche.
Si cette fonction renvoie l'identifiant d'une trame, il est nécessaire d'appeler réguliérement eTwiGetStatus() tant que celle-ci ne renvoie pas TWI_SUCCESS. Il est alors possible de récupérer la trame reçue grâce à eTwiGetRxFrame().
En dehors d'un contexte multitâche, il est préférable d'utiliser la fonction eTwiSend().

Paramètres
pxFramePointeur sur la trame où sont stockés les octets à envoyer.
Renvoie
Identifiant de la trame (nombre strictement positif) ou 0 si la demande n'a pu être mémorisée, dans ce cas, un nouvel appel est nécessaire (tant que la fonction retourne 0).
xTwiId xTwiTrySend ( const xTwiFrame pxFrame)

Emission non bloquante d'un message en mode maître.

Cette fonction est non bloquante et l'envoi se fait sous interruption, cela signifie que la fonction retourne alors que toutes données ne sont pas forcément transmises.
Elle est prévue pour être utilisée dans un contexte multitâche.
Si cette fonction renvoie l'identifiant d'une trame, il est nécessaire d'appeler réguliérement eTwiGetStatus() tant que celle-ci ne renvoie pas TWI_SUCCESS ou un code erreur.
En dehors d'un contexte multitâche, il est préférable d'utiliser la fonction eTwiSend().

Paramètres
pxFramePointeur sur la trame où sont stockés les octets à envoyer.
Renvoie
Identifiant de la trame (nombre strictement positif) ou 0 si la demande n'a pu être mémorisée, dans ce cas, un nouvel appel est nécessaire (tant que la fonction retourne 0).