AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
Bus I2C avec coupleur TWI

Description détaillée

Ce module utilise le coupleur I2C interne du microcontrôleur et travaille sous interruption.
La macro AVRIO_TWI_ENABLE doit être définie (dans le fichier avrio-config.h ou à la compilation), et dans ce cas, le fichier avrio-board-twi.h permet de configurer le module et de l'adapater à la carte utilisée.
Le module dispose de deux modes :

Les deux modes peuvent être validés ou non dans avrio-board-twi.h à l'aide des macros TWI_MASTER_ENABLE et TWI_SLAVE_ENABLE. Un mode au moins, doit être validé, et il est possible de les valider tous les deux dans le cas d'un environnement multi-maîtres (les confilts sont gérés).
L'implémentation sous interruption est conçue pour être utilisée dans les routines d'interruption (les portions de code en attente d'interruption sont protégées du dead-lock).

Graphe de collaboration de Bus I2C avec coupleur TWI:

Modules

 Bus I2C en mode esclave
 
 Bus I2C en mode maître
 
 Configuration du module I2C
 

Structures de données

struct  xTwiFrame
 Trame I2C. Plus de détails...
 

Fonctions

bool bTwiIsBusy (void)
 Indique si le module est occupé
 
void vTwiInit (void)
 Initialise le module. Plus de détails...
 

Macros

#define TWI_DEVICE_ADDR_SIZEOF   1
 
#define TWI_LENGTH_SIZEOF   1
 

Définitions de type

typedef uint8_t xTwiDeviceAddr
 Adresse d'un circuit sur le bus I2C.
 
typedef struct xTwiFrame xTwiFrame
 
typedef uint8_t xTwiLength
 Longueur d'une trame.
 

Énumérations

enum  eTwiStatus {
  TWI_SUCCESS = 0, TWI_STATUS_TX = 1, TWI_STATUS_RX = 2, TWI_STATUS_BUSY = 3,
  TWI_STATUS_LCALL = 5, TWI_STATUS_GCALL = 4, TWI_STATUS_TXBUFFER_EMPTY = 6, TWI_STATUS_ARB_LOST = 7,
  TWI_ERROR_DATA_NACK = -1, TWI_ERROR_ADDR_NACK = -2, TWI_ERROR_ILLEGAL_START_STOP = -3, TWI_ERROR_INVALID_SPEED = -4,
  TWI_ERROR_INVALID_LENGTH = -5, TWI_ERROR_BUFFER_FULL = -6, TWI_ERROR_TIMEOUT = -7, TWI_ERROR_ILLEGAL_CODE = -8,
  TWI_ERROR_INVALID_DEVICE = -9, TWIMEM_ERROR_READ = -10
}
 Codes d'erreur et d'état. Plus de détails...
 

Documentation du type de l'énumération

enum eTwiStatus

Codes d'erreur et d'état.

Les codes d'erreur sont négatifs, les codes d'état sont positifs ou nuls.

Valeurs énumérées
TWI_SUCCESS 

Succès

TWI_STATUS_TX 

Le module est en cours de transmission en mode maître

TWI_STATUS_RX 

Le module est en cours de réception en mode maître

TWI_STATUS_BUSY 

Module occupé (not ready)

TWI_STATUS_LCALL 

Adressé comme esclave par appel local

TWI_STATUS_GCALL 

Adressé comme esclave par appel général (lecture uniquement)

TWI_STATUS_TXBUFFER_EMPTY 

Le buffer de transmission esclave est vide, le maître demande d'autres données

TWI_STATUS_ARB_LOST 

Le contrôle du bus a été perdu suite à un arbitrage

TWI_ERROR_DATA_NACK 

L'esclave n'a pas accepté toutes les données envoyées

TWI_ERROR_ADDR_NACK 

L'esclave n'a pas répondu

TWI_ERROR_ILLEGAL_START_STOP 

Condition de start ou de stop illégale sur le bus

TWI_ERROR_INVALID_SPEED 

Vitesse invalide

TWI_ERROR_INVALID_LENGTH 

Longueur de trame invalide

TWI_ERROR_BUFFER_FULL 

Le buffer est plein

TWI_ERROR_TIMEOUT 

Délai d'attente dépassé

TWI_ERROR_ILLEGAL_CODE 

Code illégal

TWI_ERROR_INVALID_DEVICE 

Circuit I2C incorrect

TWIMEM_ERROR_READ 

Erreur de lecture dans une mémoire I2C

Définition à la ligne 94 du fichier twi.h.

94  {
95 
96  TWI_SUCCESS = 0,
98  /* Codes d'état */
99  TWI_STATUS_TX = 1,
100  TWI_STATUS_RX = 2,
101  TWI_STATUS_BUSY = 3,
102  TWI_STATUS_LCALL = 5,
103  TWI_STATUS_GCALL = 4,
105  TWI_STATUS_ARB_LOST = 7,
107  /* Codes Erreur */
108  TWI_ERROR_DATA_NACK = -1,
109  TWI_ERROR_ADDR_NACK = -2,
113  TWI_ERROR_BUFFER_FULL = -6,
114  TWI_ERROR_TIMEOUT = -7,
118  TWIMEM_ERROR_READ = -10
119 } eTwiStatus;
eTwiStatus
Codes d'erreur et d'état.
Definition: twi.h:94

Documentation des fonctions

void vTwiInit ( void  )

Initialise le module.

Ni la vitesse de transmission (eTwiSetSpeed()), ni l'adresse esclave locale (vTwiSetDeviceAddress()) ne sont configurées.

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.