[Programmation] Lecture des registres du module Nrf24l01+
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Lecture des registres du module Nrf24l01+



  1. #1
    Ignotus1980

    Lecture des registres du module Nrf24l01+


    ------

    Bonjour à tous et à toutes,

    ...---..., ...---..., ...---..., ...---...

    Voila mon problème, j'ai acheté 2 modules NRF24L01+, j'ai 2 microcontrôleur PIC18F26K22, je programme les modules en ASM.

    je sais ou connecter les broches du module sur mon microcontrôleur, avec l'alimentation prévu à cette effet, qui est de 3,3 volts pour les deux.

    Je débute dans le mode SPI, J'ai lu le chapitre 2 de monsieur Bigonoff (que je remercie au passage), sur le protocole SPI ou il parle du maître est de l'esclave, ça j'ai compris.

    Mais ce que je ne comprends pas c'est comment lire une données sur NRF24L01+, j'arrive à envoyer des données sur le Nrf24l01+, enfin je suppose
    mais je n'arrive pas à les relire, d'après la documentation on peut relire les registres, comme Rx_Addr_P0, Rx_Addr_P1 .........

    Pour lire les données avec deux Microcontrôleurs Pic je peux le comprendre, mais avec ses modules là, je vois vraiment pas comment procéder..

    Je remercie toutes personne qui voudrais me consacrer du temps pour m'aider.

    Ou j'ai acheté le module : https://www.ebay.fr/itm/2-5-10-PCS-A...fhGc0kS5jNEsVA

    Je vous joins également le datasheet

    A+

    -----
    Images attachées Images attachées

  2. #2
    webscience

    Re : Lecture des registres du module Nrf24l01+

    Bonjour Ignotus1980,

    Qu'est ce que tu comprends pas ?

    A+

  3. #3
    activmaker

    Re : Lecture des registres du module Nrf24l01+

    Bonjour,

    Je ne suis pas certain que ton problème soit lié au NRF24L01+ mais plutôt au protocole SPI. En parcourant le Datasheet j'ai vu qu'il ne peut pas dépasser le 8Mbps sur le SPI. La fréquence est elle bien inférieure à cette valeur ? Si oui à combien ?
    Le CSN doit être à l'état bas durant tout l'échange, est ce le cas ?
    Il y a tellement de raisons pour lesquelles ça peux ne pas fonctionner qu'il est difficile de répondre...De quoi es tu certain => De ton code ? Du cablage ? (Peut être qu'un schéma aiderai à comprendre)..Trop d'éléments flous , le 1er étant
    j'arrive à envoyer des données sur le Nrf24l01+, enfin je suppose
    ...Ca risque d'être compliqué de lire en SPI si tu n'es pas certain de savoir écrire...

  4. #4
    Ignotus1980

    Re : Lecture des registres du module Nrf24l01+

    Bonjour webscience, activmaker, et tout le forum,
    Dernière modification par Ignotus1980 ; 21/09/2019 à 00h32.

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

    Re : Lecture des registres du module Nrf24l01+

    Bonjour webscience, activmaker, et tout le forum,

    Merci pour vos répons ses,

    écrit par webscience : Qu'est ce que tu comprends pas ?
    C'est pas que je comprends pas, c'est pourquoi je n'arrive pas à lire ce qui y est écrit.

    Est ce que Nrf24l01+ possède cette fonction, de relire ce qui a était écrit, normalement oui, si j'ai
    bien compris la datasheet.


    écrit par activmaker : j'ai vu qu'il ne peut pas dépasser le 8Mbps sur le SPI
    c'est pas le problème, car je tourne avec un quartz de 4 Mhz

    écrit par activmaker : Le CSN doit être à l'état bas durant tout l'échange, est ce le cas ?
    oui, c'est le cas, regarde ci-dessous, c'est le code qui me sert à écrire et lire

    écrit par activmaker : De quoi es tu certain => De ton code ? Du cablage ?
    le câblage vérifié au moins dix fois, il est bon, ça s'en suis sur.

    Les données sont bien envoyés, j'ai vérifier avec l'analyseur logique

    C'est le code qui cloche, ça j'en suis sur, ce que je veux avant d'aller plus loin c'est relire ce que j'ai écrit ou lire ce qui pourrais être écrit, mais je sais pas comment faire.

    Voici le code, qui n'est pas entier, mais suffisant pour le comprendre

    Code:
    #DEFINE csn    LATC,0                 
    #DEFINE sck    LATC,3                 
    #DEFINE miso   LATC,4                 
    #DEFINE mosi   LATC,5                 
    #DEFINE irq    LATC,6                 
    #DEFINE ce     LATC,7                 
    
    
          movlw B'00000000'                   ; désactivation du mode numérique sur PORTA
          movwf ANSELA                        
    
          movlw B'00000000'                   ; désactivation du mode numérique sur PORTB
          movwf ANSELB                        
    
          movlw B'00000000'                   ; désactivation du mode numérique sur PORTC
          movwf ANSELC                        
        
          movlw B'00100000'                   ;                    
          movwf TRISA                         
                                              
          movlw B'11111111'                   ;
          movwf TRISB                         
                                              
          movlw B'01010000'                   
          movwf TRISC                         
                                              
          movlw B'00001000'                   ;
          movwf TRISE                         
                                                                                    
          movlw B'01000000'                   ;  
          movwf SSPSTAT 
    
          movlw B'00110010'                    ; spi en mode Maître, polarité négative, clock = FOSC/64
          movwf SSP1CON1                      ;  
    
    ; écriture dans RX_ADRE_P1
    
          bcf csn                              ; 
    
          movlw D'43'                         ; RX_ADDR_P1 (0x0B) (32 + 11) = 43  
          rcall envoi_nrf24l01                ;            
    
          movlw D'125'                        ;  
          rcall envoi_nrf24l01                ;
          movlw D'126' 
          rcall envoi_nrf24l01                ;
          movlw D'127' 
          rcall envoi_nrf24l01                ;
          movlw D'128' 
          rcall envoi_nrf24l01                ;
          movlw D'129' 
          rcall envoi_nrf24l01                ;
    
          bsf csn                             ;
    
          rcall _10ms                         ; pause de 10 ms
                                             
    
    ; lecture dans ce que je viens d'écrire Rx_Addr_P1
    
    
          bcf csn
    
          movlw H'B'                         ; (Rx_Addr_P1 = H'B') + (R_REGISTER = H'0') = H'B' 
          rcall envoi_nrf24l01               ; demande de lecture
    
          rcall lire_nrf24l01                ; lecture de l'adresse si 1 octet 
          movff donner,tmps_1                ; sauvegarde 
          rcall lire_nrf24l01                ; lecture de l'adresse si 2 octets
          movff donner,tmps_2                ; sauvegarde  
          rcall lire_nrf24l01                ; lecture de l'adresse si 3 octets 
          movff donner,tmps_3                ; sauvegarde  
          rcall lire_nrf24l01                ; lecture de l'adresse si 4 octets 
          movff donner,tmps_4                ; sauvegarde  
          rcall lire_nrf24l01                ; lecture de l'adresse si 5 octets
          movff donner,tmps_5                ; sauvegarde    
         
          bsf csn                            ; ne peut avoir plus de 5 octets 
    
    
    ; affichage des données sur le lcd, des zéros s'affiche, pourquoi ? 
    
    
    terminer
          nop 
          bra terminer
    
    
    ;***********************************************************************************************
    
    lire_nrf24l01            
    
          movwf SSP1BUF
    
    li0_nrf24l01                              
          btfss SSPSTAT,BF                    
          bra li0_nrf24l01                    ; 0 = la réception n'est pas complète
                                              ; 1 = réception terminée
    
          movf SSPBUF,W                       ; lecture SSPBUF  des données
          movwf donner                        ; sauvegarde
          
          return
    
    ;***********************************************************************************************
    
    envoi_nrf24l01            
    
          movwf SSP1BUF
    
    ev0_nrf24l01                              
          btfss SSPSTAT,BF                    
          bra ev0_nrf24l01                    ; 0 = la réception n'est pas complète
                                              ; 1 = réception terminée    
          return

    A+
    Dernière modification par Ignotus1980 ; 21/09/2019 à 00h34.

  7. #6
    activmaker

    Re : Lecture des registres du module Nrf24l01+

    Bonjour Ignotus,

    Les données sont bien envoyés, j'ai vérifier avec l'analyseur logique
    =>Voila une bonne nouvelle , pourrais tu nous montrer la séquence par l'analyseur de toutes la partie lecture (Les 4 signaux) ? Je connais pas bien le PIC18 , mais quelque chose me dit que le signal d'horloge se coupe après la demande de lecture, le Slave n'ayant plus d'horloge, il ne renvoi rien. Si c'est bien ça, il faut envoyer un "dummy" octet (Valeur 0 ou 255) pour chaque octet que tu veux recevoir.
    Dans ce cas il faut adapter le code pour avoir quelque chose "Envoi demande de lecture", "délai", "Envoi dummy octet", "Lecture".

    Si ce n'est pas ça le souci, le graphe de l'analyseur devrait aider.
    Bonne continuation.

  8. #7
    Ignotus1980

    Re : Lecture des registres du module Nrf24l01+

    Bonjour activmaker, et tout le forum,

    Ben voila, on dirais qu'il y a quelque chose mais je n'arrive pas à le récupérer, apparemment j'ai lu qu'il faut envoyer une donner fugitif pour avoir un retour.

    Je que je comprends pas, les données sont bien renvoyé sur RC4(MISO), ont peux les voir avec l'analyseur logique, mais ils sont inexistant dans le buffer de SSPBUF

    A+
    Images attachées Images attachées  
    Dernière modification par Ignotus1980 ; 21/09/2019 à 18h54.

  9. #8
    Ignotus1980

    Re : Lecture des registres du module Nrf24l01+

    Bonsoir


    Je peux voir maintenant sur l'analyseur logique qu'il relie bien mes données, ça marche c'est enfin inventé quelle que chose qui marche......

    Fin de compte, il faut configurer SSP1STAT à B'01000000' et SSP1CON1 à B'00100010', de plus essai fait avec quartz de 8 Mhz.

    Maintenant reste à récupérer les données

    Voici ce que s'obtient

    A+
    Images attachées Images attachées  
    Dernière modification par Ignotus1980 ; 21/09/2019 à 20h19.

  10. #9
    paulfjujo

    Re : Lecture des registres du module Nrf24l01+

    bonjour,


    un air de déja vu ICI
    section Nrf24l01+ (version ASM)

  11. #10
    Ignotus1980

    Re : Lecture des registres du module Nrf24l01+

    Bonjour,

    Merci pour le lien paulfjujo, je vais regarder ça, apparemment je suis pas le seul à avoir eu des problèmes dessus.


    Merci

Discussions similaires

  1. [RF/Radioelec] Création Module Audio Enregistrement - Lecture
    Par WilliamLM dans le forum Électronique
    Réponses: 6
    Dernier message: 21/12/2017, 17h08
  2. [Programmation] Configuration du module Nrf24l01+
    Par webscience dans le forum Électronique
    Réponses: 17
    Dernier message: 18/08/2017, 18h03
  3. Code de réception pour module nrf24l01+
    Par memo1402 dans le forum Électronique
    Réponses: 0
    Dernier message: 29/12/2014, 02h54
  4. Fonctionnement du nRF24L01+
    Par memo1402 dans le forum Électronique
    Réponses: 14
    Dernier message: 20/08/2014, 01h01
  5. Utilisation Module USB I²C pour lecture eeprom
    Par invitebe3648e6 dans le forum Électronique
    Réponses: 2
    Dernier message: 19/03/2008, 12h06
Découvrez nos comparatifs produits sur l'informatique et les technologies.