IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

I2C hardware NACK detected ?


Sujet :

Arduino

  1. #1
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 070
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 070
    Par défaut I2C hardware NACK detected ?
    Bonjour à tous,

    Je souhaiterai savoir ce que signifie cette erreur svp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    E (4536) i2c.master: I2C hardware NACK detected
    E (4540) i2c.master: I2C transaction unexpected nack detected
    E (4546) i2c.master: s_i2c_synchronous_transaction(945): I2C transaction failed
    Il intervint lors de la mesure de distance avec 2 capteurs de type Adafruit_VL53L0X
    voici le resultat de la console lors du démarrage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    17:31:00.234 -> E (1850) i2c.master: i2c_master_multi_buffer_transmit(1214): I2C transaction failed
    17:31:00.234 -> E (1857) i2c.master: I2C hardware NACK detected
    17:31:00.234 -> E (1861) i2c.master: I2C transaction unexpected nack detected
    17:31:00.234 -> E (1867) i2c.master: s_i2c_synchronous_transaction(945): I2C transaction failed
    17:31:00.234 -> E (1874) i2c.master: i2c_master_multi_buffer_transmit(1214): I2C transaction failed
    17:31:00.267 -> E (1881) i2c.master: I2C hardware NACK detected
    17:31:00.267 -> E (1885) i2c.master: I2C transaction unexpected nack detected
    17:31:00.267 -> E (1891) i2c.master: s_i2c_synchronous_transaction(945): I2C transaction failed
    17:31:00.267 -> E (1898) i2c.master: i2c_master_multi_buffer_transmit(1214): I2C transaction failed
    17:31:00.267 -> E (1905) i2c.master: I2C hardware NACK detected
    
    ---/ -----  (9 secondes )?
    
    17:31:09.674 -> E (11304) i2c.master: I2C transaction unexpected nack detected
    17:31:09.674 -> E (11309) i2c.master: s_i2c_synchronous_transaction(945): I2C transaction failed
    17:31:09.710 -> E (11317) i2c.master: i2c_master_receive(1268): I2C transaction failed
    17:31:09.710 -> - Fermé
    17:31:09.710 -> Panneau N°2 => - Ouvert
    17:31:09.758 -> 2.81
    17:31:09.841 -> Voltage = 2.81
    17:31:09.841 -> Lever : 05:54:07
    17:31:09.841 -> Meridien : 11:25:03
    17:31:09.841 -> Coucher : 16:55:17
    17:31:10.020 -> _PowerOn : 95000
    17:31:12.112 -> _Update_Full : 2131001
    17:31:14.272 -> _Update_Full : 2130001
    17:31:14.442 -> _PowerOff : 140001
    17:31:14.488 -> [ Alarme 1: 13 16:55:17, Mode: Date ]
    17:31:14.573 -> _PowerOn : 95001
    17:31:16.706 -> _Update_Full : 2131001
    17:31:16.925 -> _PowerOff : 140001
    17:31:16.925 -> --------------------
    17:31:16.925 -> Boot number: 1
    17:31:16.925 -> --------------------
    J'utilise un Lilygo T-Display E-paper
    le programme que j'utilise , était préalablement utilisé dan un Arduino Nano sans problème particulier

    je reste à disposition s vous souhaitez avoir le croquis complet

    merci par avance
    pascal

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 285
    Billets dans le blog
    48
    Par défaut
    Salut

    I2C transaction unexpected nack detected
    Dans le protocole I2C, il y a des bits d'acquittement (ack) ou de non-acquittement (nack).

    Quand l'arduino s'adresse à un composant en particulier sur le bus, celui-ci doit acquitter pour confirmer sa présence.
    Quand l'arduino envoie un octet au composant (écriture sur la ligne SDA), le composant doit acquitter de sa bonne réception.
    Si l'arduino reçoit un octet en retour du composant, l'arduino doit acquitter pour signifier la bonne réception.
    Etc.

    S'il n'y a pas d'acquittement (nack), c'est que l'Arduino et le composant I2C ne se trouvent pas ou ne se comprennent pas. Les transactions (écriture ou lecture) échouent.

    Il faut vérifier si l'adresse du composant est la bonne (se servir du scanner i2c), vérifier le câblage (inversion SDA/SCL, résistances de tirage sur les lignes SDA et SCL...). Il y a peut-être un paramétrage dans le code à faire (fréquence de l'horloge trop élevée pour le composant).

    C'est tout ce qu'on peut dire pour l'instant... Il faudrait voir le montage et le code pour en savoir plus.

    I2C hardware NACK detected
    "hardware" ? Cela veut dire que c'est le contrôleur I2C de l'arduino lui-même qui a détecté ce nack.
    Donc probablement un souci de câblage, d'adresse, de périphérique absent ou défectueux...

    Ah, et puis attention aux niveaux de tension sur les lignes I2C: 5V sur la nano et 3,3V sur la LiLygo.

  3. #3
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 070
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 070
    Par défaut
    Bonjour f-leb

    J'ai un peu creuser l'affaire , j'ai 4 périphériques distincts en I2C

    - DS3231 RTC
    - ATH 10 : capteur de température
    - VL53L0X 1 : capteur de proximité
    - VL53L0X 2

    lorsque j'ai fait scanner i2c j'ai trouvé çà :

    I2C device found at address 0x29 !
    I2C device found at address 0x38 !
    I2C device found at address 0x57 !
    I2C device found at address 0x68 !

    j'en ai déduit après avoir tester les capteurs ceci

    - VL53L0X 1 : capteur de proximité => 0x29
    - VL53L0X 2 : capteur de proximité => 0x38
    selon le scan


    j'avais toujours un défaut à l'adresse 0x38 , j'ai même du retirer le AHT10
    mais là le problème persistait comme le montre la console

    en fait j'ai fini par trouver ,
    j'ai mis les adresses suivantes pour les capteurs de proximités


    #define LOX1_ADDRESS 0x31 //* Adresse I2C : 0x31 */
    #define LOX2_ADDRESS 0x30 //* Adresse I2C : 0x30 */

    et là le miracle , plus d'erreur ( enfin presque) et j'ai pu remettre le capteur AHT 10 à l'adresse 0x38 et il fonctionne ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    18:40:59.871 -> ets Jul 29 2019 12:21:46
    18:40:59.871 -> 
    18:40:59.871 -> rst:0x1 (POWERON_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
    18:40:59.871 -> configsip: 0, SPIWP:0xee
    18:40:59.871 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
    18:40:59.871 -> mode:DIO, clock div:1
    18:40:59.871 -> load:0x3fff0030,len:4980
    18:40:59.871 -> load:0x40078000,len:16612
    18:40:59.871 -> load:0x40080400,len:3480
    18:40:59.871 -> entry 0x400805b4
    18:41:00.101 -> Broches d'arrêt activées...
    18:41:00.422 -> init VL53L0X 1 = OK
    18:41:00.968 -> init VL53L0X 2 = OK
    18:41:00.968 -> Le réveil n'a pas été causé par un sommeil profond : 0
    18:41:02.056 -> E (2006) i2c.master: I2C hardware NACK detected
    18:41:02.056 -> E (2006) i2c.master: I2C transaction unexpected nack detected
    18:41:02.096 -> E (2007) i2c.master: s_i2c_synchronous_transaction(945): I2C transaction failed
    18:41:02.096 -> E (2012) i2c.master: i2c_master_multi_buffer_transmit(1214): I2C transaction failed
    18:41:02.096 -> AHT10 OK
    18:41:02.096 -> 13/10/2025
    18:41:02.096 -> -----------
    18:41:02.096 -> 16:39:42
    18:41:02.096 -> -----------
    18:41:02.096 -> Panneau N°1 => - Fermé
    18:41:02.142 -> Panneau N°2 => - Ouvert

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 595
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 595
    Par défaut
    De ce que je lis dans les docs du VL53L0X, il a une adresse unique 0x52/0x53 (R/W) en format 8 bits (0x29 en format 7bits) mais avec une API, il est possible d'en changer l'adresse. Est-ce que l'API est utilisée?

    doc https://www.st.com/resource/en/datasheet/vl53l0x.pdf
    AppNotes pour utiliser plusieurs VL23L0X https://www.st.com/resource/en/appli...lectronics.pdf
    API https://www.st.com/resource/en/user_...lectronics.pdf

    L'ATH10 est à l'adresse 0x38 (7bits)
    le DS3231 est à l'adrese 0x68 (7bits)

    un NACK peut aussi vouloir dire que le composant n'est pas prêt et donc n'a pas répondu à la commande I2C dans les temps.

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/03/2018, 19h10
  2. [DirectX 10] Détecter le support hardware
    Par korsakoff69 dans le forum DirectX
    Réponses: 2
    Dernier message: 12/01/2011, 15h34
  3. [hardware]Détection du disque dur
    Par abdo dans le forum Composants
    Réponses: 7
    Dernier message: 23/08/2005, 17h05
  4. [hardware] disque dur non detecté
    Par nounou dans le forum Composants
    Réponses: 7
    Dernier message: 10/05/2005, 00h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo