Aller au contenu
Interface Physique

Protocole I²C & Initialisation Hardware

Avant de chiffrer, le microcontrôleur doit dialoguer avec le Secure Element. Analyse du bus I²C et du handshake avec l'ATECC608B pour garantir que le coffre-fort numérique est accessible.

Topologie du Bus

L'ATECC608B agit comme un périphérique esclave sur le bus I²C, piloté par le contrôleur principal M5Stack (ESP32).

Maître I²C

M5Stack Core (ESP32)

VCC
3.3V
SCL Freq
400 kHz
Bus Série Synchrone
Lignes SDA / SCL

Esclave I²C

Secure Element ATECC608B

Adresse 7-bit 0x35

Le périphérique ne répond qu'à cette adresse spécifique lors de l'appel général.

Détection du Secure Element

I2C_Scanner.cpp
#include <Wire.h>

void scanI2C() {
  Serial.println("Scan du bus I2C...");
  
  // On parcourt les 127 adresses possibles
  for (uint8_t addr = 1; addr < 127; addr++) {
    // Prépare la transmission
    Wire.beginTransmission(addr);
    
    // Si error = 0, un périphérique a répondu (ACK)
    if (Wire.endTransmission() == 0) {
      Serial.printf("Périphérique trouvé : 0x%02X\n", addr);
      
      if (addr == 0x35) {
        Serial.println("--> Secure Element ATECC608B détecté !");
      }
    }
  }
}

Pourquoi Scanner ?

Pour valider le câblage physique avant toute opération cryptographique. Si le bus est bloqué ou si les lignes SDA/SCL sont inversées, la fonction endTransmission() retournera un code d'erreur (NACK).

L'Adresse 0x35

L'ATECC608B est pré-configuré en usine avec l'adresse I2C 7-bits 0x35. Dans la librairie Arduino Wire, nous utilisons l'adresse 7-bits, soit 0x35.

Analyse du Chronogramme

Visualisation des signaux électriques lors de la phase d'adressage du composant.

Chronogramme I2C montrant la condition de départ, l'adresse, le bit R/W et l'ACK

(Chronogramme I2C: départ, Addr 0x35, écriture, ACK)

Canal 0 (SDA): ligne données
Canal 1 (SCL): ligne horloge
1

Condition START

Une transition descendante de la ligne SDA alors que SCL est à l'état haut indique au Secure Element que le maître va commencer à parler.

2

Adressage

L'adresse 0x35 est envoyée sur 7 bits, suivie d'un bit d'écriture (0) ou de lecture (1).

3

ACK (Acquittement)

Au 9ème coup d'horloge, l'ATECC608B tire la ligne SDA vers le bas (Low) pour confirmer qu'il a bien reçu l'adresse et qu'il est prêt.

Preuve de Fonctionnement

Résultat de l'exécution du code sur le M5Stack.

Serial Monitor
> Scan du bus I2C...
> .
> ..
> Périphérique trouvé à l'adresse : 0x35
> --> Secure Element ATECC608B détecté !
> ...
> Fin du scan.

Succès

Le microcontrôleur communique avec succès avec le Secure Element. La couche physique est validée.

Étape suivante

Générer les certificats et Clés

Maintenant que le matériel est accessible, nous pouvons passer à l'étape suivante.