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 :

Comment connecter deux dispositifs SPI avec arduino


Sujet :

Arduino

  1. #1
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2021
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Australie

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Juin 2021
    Messages : 53
    Points : 79
    Points
    79
    Par défaut Comment connecter deux dispositifs SPI avec arduino
    Je veux utiliser arduino+nrf24l01+enc28j60 pour construire une simple passerelle, nrf24l01 reçoit des signaux et enc28j60 les transmet au LAN, mais le problème est que les deux nrf24l01 et enc28j60 utilisent le protocole SPI pour interagir avec arduino, si je veux utiliser le développement de la propre librairie d'arduino, je ne peux choisir qu'un seul des nrf24l01 et enc28j60 parce qu'ils partagent une définition commune (pins_arduino.h).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    static const uint8_t SS = 10 ;
    static const uint8_t MOSI = 11 ;
    Constante statique uint8_t MISO = 12 ;
    static const uint8_t SCK = 13
    Donc la solution est de choisir nrf24l01 pour ne pas utiliser la lib de développement qui vient avec arduino, mais d'utiliser un autre port IO pour le développer par lui-même, est-ce bien cela ?

  2. #2
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    Hello

    Le SPI est un bus logiciel (pas point à point juste entre deux appareils), vous pouvez donc avoir plusieurs composants connectés en SPI sur le même Arduino avec chacun sa ligne de sélection

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


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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 612
    Points : 56 717
    Points
    56 717
    Billets dans le blog
    40
    Par défaut
    Salut,

    Si les broches MOSI, MISO, CLK peuvent être partagées par plusieurs périphériques, il faut une broche SS (Slave Select) par périphérique.

    Normalement, tu peux définir n'importe quelle broche de l'Arduino comme SS puisque c'est au programmeur de d'abaisser la ligne pour sélectionner l'esclave :

    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
    #include <SPI.h>
     
      //...
      SPI.begin();                                                // initialisation du port SPI
      SPI.setDataMode(SPI_MODE0);                    // configuration de la liaison SPI en mode 0
      pinMode(brocheSS, OUTPUT);
     
      // ...
     
      digitalWrite(SS, LOW);                // activation de l'esclave
      // ...
      SPI.transfer(xx);                        // envoi de données
      // ...
      digitalWrite(SS, HIGH);              // esclave désactivé
     
      // ...
    Sans doute faut-il faire des modifications dans au moins une des deux librairies.

    Quelles librairies utilises-tu ?

  4. #4
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2021
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Australie

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Juin 2021
    Messages : 53
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Jay M Voir le message
    Hello

    Le SPI est un bus logiciel (pas point à point juste entre deux appareils), vous pouvez donc avoir plusieurs composants connectés en SPI sur le même Arduino avec chacun sa ligne de sélection
    Le spi est utilisé en parallèle et la décision de savoir avec lequel communiquer est prise dans la sélection de la pièce ss.
    C'est bien ça ?

  5. #5
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juin 2021
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Australie

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Juin 2021
    Messages : 53
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par f-leb Voir le message
    Salut,

    Si les broches MOSI, MISO, CLK peuvent être partagées par plusieurs périphériques, il faut une broche SS (Slave Select) par périphérique.

    Normalement, tu peux définir n'importe quelle broche de l'Arduino comme SS puisque c'est au programmeur de d'abaisser la ligne pour sélectionner l'esclave :

    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
    #include <SPI.h>
     
      //...
      SPI.begin();                                                // initialisation du port SPI
      SPI.setDataMode(SPI_MODE0);                    // configuration de la liaison SPI en mode 0
      pinMode(brocheSS, OUTPUT);
     
      // ...
     
      digitalWrite(SS, LOW);                // activation de l'esclave
      // ...
      SPI.transfer(xx);                        // envoi de données
      // ...
      digitalWrite(SS, HIGH);              // esclave désactivé
     
      // ...
    Sans doute faut-il faire des modifications dans au moins une des deux librairies.

    Quelles librairies utilises-tu ?
    Merci pour la réponse, je semble comprendre comment cela va fonctionner !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment connecter deux ordinateurs entre eux?
    Par elgafsi86 dans le forum Hardware
    Réponses: 3
    Dernier message: 16/12/2010, 10h36
  2. comment connecte une bd oracle avec java
    Par mesparents dans le forum JDBC
    Réponses: 2
    Dernier message: 26/03/2010, 15h01
  3. Réponses: 2
    Dernier message: 03/07/2009, 09h38
  4. Comment connecter deux PC entre eux
    Par deubelte dans le forum Windows XP
    Réponses: 7
    Dernier message: 27/08/2008, 10h25
  5. Réponses: 9
    Dernier message: 27/06/2006, 16h55

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