Partage
  • Partager sur Facebook
  • Partager sur Twitter

(des)Activer une horloge I2C via un transistor

Sujet résolu
    20 octobre 2018 à 12:48:01

    Salut à tous et à toutes,

    j'aimerais activer/desactiver l'horloge d'un i2c grâce à un transistor NPN (BD135) grace à un signal 3V3 sur la base, l'horloge passant du collecteur à l'emetteur. J'ai placé une resistance de 5K à la base et une resistance de 220 ohms au collecteur. cependant ca ne marches pas ( l'i2c est detecté mais je n'arrive pas a agir sur l'appareil connecté, peut etre que le signal de l'horloge est deformée?  ).

    Est ce que quelqu'un aurait une solution a proposer? ou sais pourquoi ca ne marches pas? peut etre un relais?

    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      20 octobre 2018 à 16:34:45

      retire la 220 ohms et connecte directement le collecteur à SDL. C'est le principe de la mise à 0 du bus.
      • Partager sur Facebook
      • Partager sur Twitter
        20 octobre 2018 à 18:48:20

        en gros de forcer le pull-down pour que le signal passe à 0 en mettant l'emeteur à la masse?
        • Partager sur Facebook
        • Partager sur Twitter
          Staff 20 octobre 2018 à 19:39:25

          Que souhaites tu faire exactement ?

          - empêcher l'horloge I2C d'être lue par le microprocesseur mais laissée celle-ci tourner ?

          - empêcher l'horloge I2C de tourner (figer le temps) mais pouvoir laisser le processeur la consulter en I2C ?

          - couper complètement (alimentation+communication) l’horloge I2C en vue de réduire la consommation électrique ?

          - autre ?

          • Partager sur Facebook
          • Partager sur Twitter
            20 octobre 2018 à 20:06:15

            GreenFeanor a écrit:

            en gros de forcer le pull-down pour que le signal passe à 0 en mettant l'emeteur à la masse?

            Quelle pulldown?

            Comme le demande lorrio, il faudrait en effet des précisions

            -
            Edité par zoup 20 octobre 2018 à 20:17:26

            • Partager sur Facebook
            • Partager sur Twitter
              21 octobre 2018 à 11:22:10

              je souhaiterai au besoin, couper ou non l'horloge sur un module "slave" pour que celui-ci ne puisse plus envoyer de données sur le SDA sur le processeur "master". Donc je pensais à utiliser un transistor pour commander l'activation de l'horloge i2c sur le module "slave".
              • Partager sur Facebook
              • Partager sur Twitter
                21 octobre 2018 à 13:38:09

                Il n'y a pas moyen de désactiver ton module slave en programmant ses registres? Quelle est la référence de ce circuit?
                • Partager sur Facebook
                • Partager sur Twitter
                  Staff 22 octobre 2018 à 9:05:57

                  Le bus I2C est un bus OpenDrain avec résistance de pull-up.

                  Si tu forces continuellement la ligne SCL ou SDA à l'état LOW, le bus I2C devient inutilisable.

                  Ton montage à base de transistor est donc correct :

                  - émetteur du transistor à connecter sur GND

                  - collecteur du transistor à connecter sur SCL, sans ajout de résistance

                  - base du transistor à connecteur sur le signal de désactivation avec une résistance de quelques kilo ohm en série

                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 octobre 2018 à 14:56:53

                    Je pense que GreenFeanor veut uniquement déconnecter l'esclave sans altérer le fonctionnement du bus. Forcer SCL à 0 ne peut convenir dans cette hypothèse.

                    -
                    Edité par zoup 22 octobre 2018 à 14:57:08

                    • Partager sur Facebook
                    • Partager sur Twitter
                      Staff 23 octobre 2018 à 8:53:13

                      Dans ce cas là, pourquoi ne pas utiliser un multiplexer bidir ou switch électronique ?

                      Exemple: SN74LVC1G3157

                      Suivant l'état de la pin S, ce composant fait la liaison entre B1<=>A ou entre B2<=>A, ce qui revient à avoir un interrupteur pilotable.

                      Interrupteur qui pourra être utilisé pour couper la ligne SCL en direction de l'horloge RTC.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        26 octobre 2018 à 13:48:45

                        plus de son, plus d'image ...
                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 décembre 2018 à 15:19:16

                          Salut, pour clore le sujet et expliquer le dénouement, j'ai fait passé finalement le signal via un relai, lui meme commandé par un transistor, lui meme commandé par un Raspberry Pi. A la reflexion, un MOSFET aurait peut etre fait l'affaire. 

                          Merci en tout cas pour votre aide :)

                          • Partager sur Facebook
                          • Partager sur Twitter

                          (des)Activer une horloge I2C via un transistor

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          • Editeur
                          • Markdown