Trames I2C
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Trames I2C



  1. #1
    invite819c7e47

    Trames I2C


    ------

    Bonjour à tous,

    Pour un de mes projets j'ai besoin de decortiquer les trames du protocole I2C. Après avoir regarder plusieurs doc sur ce protocole j'aurai besoin de votre aide sur un point!!

    Si je ne dis pas de betise, le maître envoie à l'esclave une adresse pour prendre controle du bus, si l'escalve se reconnait il force le dernier bit d'acquitement ACK à 0, mais est ce que l'esclave renvoie toute la trame avec le dernier bit à 0 ou renvoie t-il seulement le dernier bit???

    Je sais pas si ma question est bien claire...
    Merci de votre aide!!

    -----

  2. #2
    Gérard

    Re : Trames I2C

    C'est le maitre qui décide du dialogue.
    Il envoie l'adresse sur 7 bit, le dernier bit (poids faible) donne le sens R/W (pour la suite de l'échange).
    L'esclave acquitte par un 9e bit.

    C'est clairement expliqué dans les docs.
    http://www.google.com/search?client=...UTF-8&oe=UTF-8

  3. #3
    gedonet

    Re : Trames I2C

    Bonjour
    Un esclave n'emmet qu'un ACK=0 pour indiquer qu'il a reçut l'octet precedent.
    Il ne repond que si on l'interroge, apres tout depend du protocole entre le maitre et l'esclave.
    Par exemple pour une ecriture par page en EEprom 24C512:
    1° le maitre envoie la start sequence
    2° le maitre envoie l'adresse de l'EEprom 4 bits fixes+ 3 bits (A0, A1, A2) +R/W=0
    3° l'EEprom envoie ACK=0
    4° le maitre envoie le poid fort de l'adresse ou commencer à ecrire
    5° l'EEprom envoie ACK=0
    6° le maitre envoie le poid faible de l'adresse ou commencer à ecrire
    7° l'EEprom envoie ACK=0
    8° le maitre envoie la premiere donnée à ecrire
    9° l'EEprom envoie ACK=0
    10° le maitre envoie la seconde donnée à ecrire à la suite
    11° l'EEprom envoie ACK=0
    ---
    ---
    ---
    N-2° le maitre envoie la derniere donnée à ecrire
    N-1° l'EEprom envoie ACK=0
    N° le maitre envoie une stop sequence
    Pour la 24LC512 les pages font 127 octets
    Tu constates que l'EEprom ne fait rien d'autre qu'envoyer l'ACK.
    Si on doit lire c'est une autre affaire.
    Gilles

  4. #4
    invite819c7e47

    Re : Trames I2C

    Merci pour ces premières reponse!!

    Gedonet quand tu ecris:
    1° le maitre envoie la start sequence
    2° le maitre envoie l'adresse de l'EEprom 4 bits fixes+ 3 bits (A0, A1, A2) +R/W=0
    3° l'EEprom envoie ACK=0

    Ne manque t-il pas dans l'etape 2 le dernier bit ACK envoyé par le maître (ayant un niveau haut) ?

  5. A voir en vidéo sur Futura
  6. #5
    schmo

    Re : Trames I2C

    salut,

    Une petite précision sur les termes:
    Le bit d'acquitement n'est pas "envoyé" par le maitre ou l'esclave.
    Ca se passe dans la foulé.
    Je m'explique:
    Le maitre prend le contrôle de la ligne SDA et SCL. il emet la trame d'adresse, le bit R/W et il relache la ligne SDA pendant un coup d'horloge. C'est pendant ce temps que l'esclave vas maintenir SDA à 0 pour signifier un acquitement positif ou la laisse à 1 (son état par défaut) pour signifier un acquitement négatif.
    Donc le maitre contrôle SDA pendant qu'il transmet l'adresse et le type d'accés (lecture/ecriture) et lit la ligne SDA pendant le coup d'horloge suiavnt pour connaitre l'acquitement de l'esclave.
    A+

  7. #6
    Gérard

    Re : Trames I2C

    Non, le bit ACK est envoyé par l'esclave dans ce cas.

  8. #7
    invite819c7e47

    Re : Trames I2C

    Si je comprends bien la trame SDA esclave n'est composée que du bit ACK si on se place dans un mode ou le maitre est en écriture??

  9. #8
    Gérard

    Re : Trames I2C

    Oui, la maitre écris un octet et l'esclave acquitte.
    La phase d'écriture est un peu plus compliquée.
    Le maitre donne l'adresse de l'esclave puis l'adresse où les données doivent être lues, puis c'est l'esclave qui envoie ses données et l'ACK est donné par le maitre.

    Quelques liens : http://www.google.com/search?client=...UTF-8&oe=UTF-8

  10. #9
    gedonet

    Re : Trames I2C

    Bonjour
    Pour l'ACK, tout depend du contexte, comme l'a bien precisé Gérard, le maitre et l'esclave peuvent envoyer un ACK, d'une maniere general, celui qui ecrit un octet sur le bus doit lire un ACK et vice versa.
    Il y a un cas ou le maitre envoie un NOACK, c'est à la fin d'une lecture sequentielle d'une EEprom 24LCXX, l'EEprom envoie la donnée, le maitre envoie un NOACK, c'est à dire qu'il ne fait rien sur la ligne SDA pendant un cycle ( l'EEprom non plus), et il envoie une "stop condition" ce qui clos la procedure de lecture sequentielle.
    Avec l'I2C, il faut faire attention, il y a la methode habituelle, une "start condition", une adresse et des commandes et une "stop condition" et l'esclave acquitte à chaque fois, mais il y a aussi le protocole entre le maitre et l'esclave à prendre en compte, par exemple il y a plusieurs façon de lire une EEprom, la lecture sequentielle ou la lecture aleatoire (Random Read), il y a des cas ou au milieu d'une transmission, il y a une nouvelle "start condition" c'est le "repeated start-condition", il y a le mode multi maitre et certaines adresses ont des effets particuliers par exemple 0000 0000 demande à tout les esclaves d'emettre un ACK.
    Gilles

Discussions similaires

  1. pic 16F887 envoi de trames
    Par inviteeb30535d dans le forum Électronique
    Réponses: 2
    Dernier message: 18/12/2009, 14h26
  2. port serie et trames NMEA
    Par invitea6f7e642 dans le forum Électronique
    Réponses: 4
    Dernier message: 07/08/2009, 19h02
  3. Trames X10
    Par BOB92 dans le forum Électronique
    Réponses: 8
    Dernier message: 28/10/2008, 18h04
  4. Switch sans de traitement de trames VLAN
    Par invitec9f14bd3 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 0
    Dernier message: 09/02/2007, 10h43
  5. Réception de trames par SPI
    Par invite3921452f dans le forum Électronique
    Réponses: 3
    Dernier message: 16/08/2006, 21h39
Découvrez nos comparatifs produits sur l'informatique et les technologies.