🛠 Scanner les deux bus I2C de la Due (Wire sur 20/21, Wire1 sur 70/71)

Arduino Due · intermediaire · Schéma : IMG-due-intermediaire-2-scanner-deux-bus-i2c.svg — Arduino Due avec deux bus I2C distincts : Wire/TWI1 sur les broches 20 (SDA) et 21 (SCL) près de AREF, Wire1/TWI0 sur le connecteur 4 broches 70/71 près du RESET, résistances de pull-up 4,7 kΩ annotées.

Objectifs

La Due dispose de DEUX contrôleurs I2C matériels, avec un piège de numérotation documenté dans le core : l'objet Wire correspond au contrôleur TWI1 (broches 20 = SDA, 21 = SCL, près de AREF) tandis que Wire1 correspond à TWI0 (broches 70/71, petit connecteur 4 broches près de RESET). Ce tuto écrit un scanner qui balaie les deux bus et rapporte les adresses 7 bits qui répondent — la base de tout dépannage capteur I2C.

Matériel

Code complet

// Scanner Wire (TWI1: 20/21) et Wire1 (TWI0: 70/71)
#include <Wire.h>

uint8_t scanner(TwoWire &w, const char *nom) {
  uint8_t trouves = 0;
  SerialUSB.print(nom); SerialUSB.print(" : ");
  for (uint8_t a = 1; a < 127; a++) {
    w.beginTransmission(a);
    if (w.endTransmission == 0) {       // 0 = ACK reçu
      SerialUSB.print("0x"); SerialUSB.print(a, HEX); SerialUSB.print(" ");
      trouves++;
    }
  }
  if (!trouves) SerialUSB.print("(aucun) ");
  SerialUSB.println;
  return trouves;
}

void setup {
  SerialUSB.begin(115200);
  delay(1500);                             // laisser le CDC s'énumérer
  SerialUSB.println("=== Scan I2C Due ===");
  Wire.begin;    // TWI1 -> broches 20 (SDA) / 21 (SCL)
  Wire1.begin;   // TWI0 -> broches 70 / 71 (connecteur près RESET)
  scanner(Wire,  "Wire  (TWI1, broches 20/21)");
  scanner(Wire1, "Wire1 (TWI0, broches 70/71)");
  SerialUSB.println("Fin de scan.");
}

void loop { }

Vérification attendue

Avec un module sur le connecteur I2C classique (20/21), la ligne « Wire » affiche son adresse (ex. 0x68 pour un DS3231, 0x3C pour un SSD1306) et la ligne « Wire1 » affiche (aucun). Déplacer le module sur le connecteur 4 broches 70/71 inverse les résultats. Sans périphérique branché, les deux lignes affichent (aucun).

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels