Mode SPI maitre PIC 18f2520
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

Mode SPI maitre PIC 18f2520



  1. #1
    memo1402

    Mode SPI maitre PIC 18f2520


    ------

    Bonjour,

    Je suis en train d'essayer de comprendre comment fonctionne le mode SPI maitre mais je bloque sur un point que je n'arrive pas à résoudre. Je vois en gros le fonctionnement mais je n'arrive pas à comprendre ce que je dois envoyer comme information pour faire réagir le µC slave. J'ai vu quelques exemples de code pour communiquer en spi mais tout ce que j'ai reussi à déchiffrer c'est que le maitre envoie un code en hexa 8 bits au slave en meme temps que le signal d'horloge. Mon probleme est que je ne sais pas quel code envoyer. Si je veux faire communiquer un pic 18f2520 avec un autre pic 18f2520 rien que pour allumer une simple led sur le slave quel genre de code dois je envoyer sur quoi je dois me baser.

    Merci.

    -----

  2. #2
    vincent66

    Re : Mode SPI maitre PIC 18f2520

    Bonsoir,
    Il faut entre autre faire attention à la polarité du clock, dans certains périphériques la donnée est latchée sur un front montant et dans d'autres sur un front descendant...
    Ceci est paramétrable mais nécessite une bonne compréhension de la datasheet...
    Leonardo était ingénieur "sans papier", et moi diplômé juste...technicien...

  3. #3
    memo1402

    Re : Mode SPI maitre PIC 18f2520

    Oui, merci pour cette information j'ai deja connaissance de ça mais ça me dit pas quelles données envoyer .
    Dernière modification par memo1402 ; 16/08/2014 à 01h07.

  4. #4
    invite03481543

    Re : Mode SPI maitre PIC 18f2520

    Bonjour,

    le maitre génère le signal d'horloge sur SCK pour synchroniser les échanges avec toutes les unités SPI, et adresse par /SS pour initialiser le dialogue avec celui avec lequel il veut dialoguer en mettant cette pin à 0.
    Puis sur MOSI le maitre transmet les données à l'esclave, et sur MISO l'esclave transmet au maitre.
    C'est un mode Full Duplex les échanges ayant lieu dans les deux sens simultanément.
    A chaque coup d'horloge une donnée est transmise simultanément du maitre à l'esclave et de l'esclave au maitre, dés que /SS repasse à 1 la transmission de données est terminée.
    Petite précision concernant l'horloge SCK:
    il y a 4 modes de transmission possibles selon la config de CPOL (Clock Polarity) et CPHA (Clock Phase), cela permet de fixer sur quel front d'horloge ces données seront transmises et à quel moment elles seront disponibles.
    Bien entendu ces réglages devront être les mêmes coté Maitre et coté Esclave(s).
    C'est pas plus compliqué que ça.
    Dernière modification par HULK28 ; 16/08/2014 à 08h16.

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

    Re : Mode SPI maitre PIC 18f2520

    Citation Envoyé par HULK28 Voir le message
    Bonjour,

    le maitre génère le signal d'horloge sur SCK pour synchroniser les échanges avec toutes les unités SPI, et adresse par /SS pour initialiser le dialogue avec celui avec lequel il veut dialoguer en mettant cette pin à 0.
    Puis sur MOSI le maitre transmet les données à l'esclave, et sur MISO l'esclave transmet au maitre.
    C'est un mode Full Duplex les échanges ayant lieu dans les deux sens simultanément.
    A chaque coup d'horloge une donnée est transmise simultanément du maitre à l'esclave et de l'esclave au maitre, dés que /SS repasse à 1 la transmission de données est terminée.
    Petite précision concernant l'horloge SCK:
    il y a 4 modes de transmission possibles selon la config de CPOL (Clock Polarity) et CPHA (Clock Phase), cela permet de fixer sur quel front d'horloge ces données seront transmises et à quel moment elles seront disponibles.
    Bien entendu ces réglages devront être les mêmes coté Maitre et coté Esclave(s).
    C'est pas plus compliqué que ça.
    Merci pour ta réponse mais je tiens à préciser que ce n'est pas ce que je chercehe. Ca c'est le fonctionement. Je veux savoir QUOI envoyer comme commande pour faire réagir le µC slave et pas COMMENT envoyer.

  7. #6
    invite03481543

    Re : Mode SPI maitre PIC 18f2520

    Ben tu envoies par exemple 0xAA à l'esclave et quand celui-ci reçoit cet octet il va exécuter ce que tu lui auras demandé de faire dans le cas où il reçoit cet octet.
    Je vois pas où se situe ton problème.

  8. #7
    memo1402

    Re : Mode SPI maitre PIC 18f2520

    Pourrais-tu donner un exemple c'est justement ça mon probleme. Je ne sais pas quoi envoyer. C'est moi qui doit définir ces données? mais alors comment faire corresponde ces données à celui du µC slave?

  9. #8
    invite03481543

    Re : Mode SPI maitre PIC 18f2520

    Ce que tu reçois sur ta comm SPI est stocké dans un buffer.
    Tu récupères le contenu de ce buffer et ensuite tu en fait ce que tu veux.
    Il faut que tu initialises ton SPI sur ton µC, regardes dans la doc de ton µC pour connaitre chaque registre (SSPBUF, SSPCON,etc) utilisé pour la comm SPI.

  10. #9
    memo1402

    Re : Mode SPI maitre PIC 18f2520

    Citation Envoyé par HULK28 Voir le message
    Ce que tu reçois sur ta comm SPI est stocké dans un buffer.
    Tu récupères le contenu de ce buffer et ensuite tu en fait ce que tu veux.
    Il faut que tu initialises ton SPI sur ton µC, regardes dans la doc de ton µC pour connaitre chaque registre (SSPBUF, SSPCON,etc) utilisé pour la comm SPI.
    Sur le PIC 18F2520 les données sont effectivement stocké dans le buffer et sont envoyées dans le slave. Mais par exemple si je veux mettre un bit à 1 dans un registre qui se trouve dans le slave (le bit PWR_UP dans un registre qui se nomme CONFIG) je fait comment? Je ne peux tout de meme pas envoyer un code n'importe comment???

  11. #10
    invite03481543

    Re : Mode SPI maitre PIC 18f2520

    Je ne pense pas que tu puisses changer un bit de config à la volée, je n'en vois surtout pas l'intérêt.
    Sinon je ne comprends pas ta difficulté, quand tu reçois l'octet tu fais ensuite un swicth case par exemple pour déclencher une action selon le code reçu dans ton buffer:

    Code:
    switch (octet_recu) {
    
    case(0xAA): led1 = 1; break;
    case(0x45): led2 = 1; break;
    ....... //etc
    default: break;
    }

  12. #11
    MiKL.66

    Re : Mode SPI maitre PIC 18f2520

    Bonjour,

    je pense que Memo1402 n'arrive pas à bien saisir le monde de la communication.

    Quand tu travailles avec un esclave du commerce, tout est déjà prédéfini.
    Prenons l'exemple d'une Eeprom, on te dit dans la datasheet que si tu envoies le code 0x00, cela correspond à l'adresse 0x00.
    C'est défini et on doit le respecter !

    Pour ton cas, c'est toi qui doit définir les adresses ...
    Prenons un exemple, tu veux lire une valeur (débit d'une pompe), qui est contenu dans l'esclave.
    Dans ton programme sur le PIC maître, tu vas faire ta requête SPI en définissant que le code 0xAF (c'est un exemple) correspond au débit.
    Dans le programme sur le PIC esclave, quand tu vas recevoir la requête avec le code 0xAF, tu sauras que c'est le débit (puisque c'est toi qui l'a défini lol) et tu vas renvoyer la valeur du débit (qui est stocké à l'endroit que tu l'auras décidé.

    Tout est une histoire d'adressage, c'est toi qui défini tout ce que tu veux.

    Mickael
    Dernière modification par MiKL.66 ; 17/08/2014 à 12h18.

  13. #12
    cyberdalek

    Re : Mode SPI maitre PIC 18f2520

    Bonjour,

    Comme le dit justement Mikl, c'est à toi de définir les messages que tu envoies dans ton pic esclave. Le pic fournit le support de communication, non le contenu des messages.
    Je te donne un lien que je te trouve sympa qui montre et explique la mise en oeuvre de la communication de deux pics en SPI, dont un envoie un message à l autre pour allumer des leds.
    Attention c'est en anglais . http://www.pyroelectro.com/tutorials...ave/index.html

    Les fonction seront à adapter en fonction de ton compilateur et de ses librairies, ainsi que par rapport à ton pic.

  14. #13
    memo1402

    Re : Mode SPI maitre PIC 18f2520

    Merci à tous pour vos reponse. D'apres ce uqe j'ai pu lire dans la datasheet de mon pic je doit mettre une valeur de 8 bits dans le registre SSPBUF et il sera directement envoyé c bien ça? Pouvez vous me donnez un simple exempke histoire de voir un peu la structure d'un code à envoyer en spi maitre svp?

  15. #14
    RISC

    Re : Mode SPI maitre PIC 18f2520

    Salut,

    Il y a des exemples qui montrent comment parametrer les registres des PIC18 pour une liaison SPI ici
    Ensuite tu filtres la 3e colonne en choisissant PIC18 et tu trouveras plusieurs exemples

    a+

Discussions similaires

  1. Pic 18f2520
    Par klokem dans le forum Électronique
    Réponses: 3
    Dernier message: 04/06/2013, 09h59
  2. aide Pic 18F2520 et LCD 2*16
    Par jlfreerider dans le forum Électronique
    Réponses: 1
    Dernier message: 21/12/2012, 23h09
  3. [PIC18 - Liaison SPI] - Envoi données Maitre > Esclave / Esclave vers Maitre
    Par jorg1n dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 12/01/2011, 16h45
  4. I2C : mode maitre en software ( PIC16F87 )
    Par Toufinet dans le forum Électronique
    Réponses: 15
    Dernier message: 13/04/2008, 18h57
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...