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:58] – [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 21: Ligne 23:
 Il existe cinq vitesses de transmission : Il existe cinq vitesses de transmission :
  
-    * Standard mode (Sm) » ≤ 100 kbit/s, +   *Standard mode (Sm) » ≤ 100 kbit/s, 
-    * Fast mode (Fm) » ≤ 400 kbit/s, +   *Fast mode (Fm) » ≤ 400 kbit/s, 
-    * Fast plus mode (Fm+) » ≤ 1 Mbit/s, +   *Fast plus mode (Fm+) » ≤ 1 Mbit/s, 
-    * High-speed mode (Hs-mode) » ≤ 3,4 Mbit/s, +   *High-speed mode (Hs-mode) » ≤ 3,4 Mbit/s, 
-    * Ultra-fast mode (UFm) » ≤ 5 Mbit/s, unidirectionnel uniquement.+   *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 39: 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/attic/start/arduino/i2c.1607097486.txt.gz · Dernière modification : 2023/01/27 16:08 (modification externe)