Outils pour utilisateurs

Outils du site


start:arduino:i2c

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
start:arduino:i2c [2020/12/04 16:56] – [Le protocole I2C] gerardadminstart:arduino:i2c [2023/02/03 10:45] (Version actuelle) – [Avenir de I2C ==> I3C] gerardadmin
Ligne 1: Ligne 1:
 ======== Bus I2C ======== ======== Bus I2C ========
 +
 +{{ :start:arduino:i2c.png?direct&300 |}}
  
 === Le protocole I2C=== === Le protocole I2C===
Ligne 13: Ligne 15:
  
  
-Le nombre maximum d'équipements est limité par le nombre d'adresses disponibles, 7 bits d'adressage et un bit R/W (lecture ou écriture), soit 128 périphériques, mais il dépend également de la capacité (CB) du bus (dont dépend la vitesse maximale du bus). Il faut savoir que des adresses sont réservées pour diffuser des messages en broadcast et que de nombreuses adresses sont déjà attribuées par les fabricants ce qui limite grandement le nombre d'équipements (une variante d'adressage sur 10 bits existe également). +Le nombre maximum d'équipements est limité par le nombre d'adresses disponibles, 7 bits d'adressage et un bit R/W (lecture ou écriture), soit 128 périphériques, mais il dépend également de la capacité (CB) du bus (dont dépend la vitesse maximale du bus).  
 + 
 +Il faut savoir que des adresses sont réservées pour diffuser des messages en broadcast et que de nombreuses adresses sont déjà attribuées par les fabricants ce qui limite grandement le nombre d'équipements (une variante d'adressage sur 10 bits existe également).  
 + 
 +**__Temps et vitesses__** 
 + 
 +Il existe cinq vitesses de transmission : 
 + 
 +   *Standard mode (Sm) » ≤ 100 kbit/s, 
 +   *Fast mode (Fm) » ≤ 400 kbit/s, 
 +   *Fast plus mode (Fm+) » ≤ 1 Mbit/s, 
 +   *High-speed mode (Hs-mode) » ≤ 3,4 Mbit/s, 
 +   *Ultra-fast mode (UFm) » ≤ 5 Mbit/s, unidirectionnel uniquement. 
 + 
 + 
 + 
 +==== Librairie Wire ==== 
 + 
 +[[https://www.arduino.cc/en/Reference/Wire|Librairie I2C]] 
 + 
 +===Description=== 
 + 
 +Cette librairie vous permet de communiquer avec les composants utilisant le protocole I2C / TWI (communication série sur 2 fils). 
 + 
 +Pour plus de détails sur le bus I2C : http://fr.wikipedia.org/wiki/I%C2%B2C 
 + 
 +===Connexions=== 
 + 
 +__Sur la plupart des cartes Arduino :__ 
 + 
 +    *la ligne SDA (ligne de données) est sur la broche analogique 4 
 +    *la ligne SCL (ligne d'horloge) est sur la broche analogique 5  
 + 
 +__Sur la carte Arduino Mega :__ 
 + 
 +    *SDA est sur la broche numérique 20 
 +    *SCL est sur la broche numérique 21  
 + 
 +===Les fonctions de la librairie Wire=== 
 + 
 +__Fonctions d'initialisation__ 
 + 
 +    *begin() : initialise communication avec Arduino "maître" 
 +    *begin(adresse) : initialise communication avec Arduino "esclave"  
 + 
 +__Fonctions "mode maître"__ 
 + 
 +    *requestFrom(adresse, quantite) : demande de données à un esclave 
 +    *beginTransmission(adresse) : débute communication avec un esclave (ouvre stockage données à envoyer avec write) 
 +    *endTransmission() : envoi des données vers esclave 
 +    *write() : écrit les données à envoyer vers esclave 
 +    *available() : test si données disponibles en provenance esclave (cf requestFrom) 
 +    *read() : lit les données en provenance de l'esclave  
 + 
 +__Fonctions "mode esclave"__ 
 + 
 +    *write() : envoie les données vers le maître après requête 
 +    *available() : test si données disponibles en provenance du maître (cf onReceive) 
 +    *read() : lit données en provenance maître 
 +    *onReceive(fonction) : définit la fonction à appeler sur réception de données en provenance du maître 
 +    *onRequest(fonction) : définit la fonction à appeler sur requête du maître  
 + 
 +__Fonctions obsolètes__ 
 + 
 +    *send() - obsolète 
 +    *receive() - obsolète  
 + 
 +__Principe d'utilisation__ 
 + 
 +Pour inclure la librairie Wire dans un programme, on ajoutera au début du programme la ligne suivante : 
 + 
 +<code c> 
 +#include <Wire.h> 
 +[$[Get Code]] 
 +</code> 
 + 
 +Pour ce faire, le plus simple est d'utiliser le menu du logiciel Arduino Programme > Importer Librairie > Nom_librairie 
 + 
 +Voir également l'instruction #include 
 + 
 +__Note__ 
 + 
 +Il existe deux versions d'adresses I2C en 7 et en 8 bits.  
 + 
 +    *Les adresses 7 bits identifient le composant,  
 +    *les adresses 8 bits déterminent si on écrit ou on lit le composant.  
 + 
 +La librairie Wire utilise les adresses 7 bits. Si vous avez une fiche technique ou un exemple de code qui utilise des adresses 8 bits, vous devrez éliminer le bit de poids faible ( en décalant la valeur de l'adresse d'un bit vers la droite - voir notamment l'opérateur de décalage à droite >>), pour obtenir une adresse comprise entre 0 et 127. 
  
  
Ligne 27: Ligne 117:
  
 [[https://www.aranacorp.com/fr/gerez-plusieurs-arduino-avec-un-bus-i2c/|Plusieurs cartes Arduino Pilotées par Bus I2C]] [[https://www.aranacorp.com/fr/gerez-plusieurs-arduino-avec-un-bus-i2c/|Plusieurs cartes Arduino Pilotées par Bus I2C]]
 +
 +
 +====== Avenir de I2C ==> I3C ======
 +
 +[[https://www.elektormagazine.fr/articles/le-nouveau-protocole-i3c?utm_source=Elektor%20France&utm_campaign=c00747fbc8-EMAIL_CAMPAIGN_2_2_2023_15_45&utm_medium=email&utm_term=0_d07ac534c3-c00747fbc8-[LIST_EMAIL_ID]&mc_cid=c00747fbc8| I3C l'avenir de I2C ?]] 
 +
 +[[https://www.elettroamici.org/fr/da-i2c-a-i3c/ |Depuis I2C I3C ]]
 +
 +[[start:arduino:I3C|I3C]]
/home/chanteri/www/fablab37110/data/pages/start/arduino/i2c.txt · Dernière modification : 2023/02/03 10:45 de gerardadmin