2016-03-09 1 views
1

Je commence récemment avec un module PN532 NFC. Je peux lire/écrire avec succès les cartes M1 et S50.Envoie la commande TgInitAsTarget à PN532 (module ELEHOUSE), récupère la trame ACK, mais perd la trame d'information normale

Maintenant, j'essaie d'apprendre à utiliser la communication P2P. Cependant, quand j'expédie une commande TgInitAsTarget au module PN532 (module ELEHOUSE), je reçois une trame ACK, mais je ne reçois jamais la trame d'information normale qui devrait suivre.

Voici mes étapes:

  1. Get PN532 en mode cible en envoyant une commande TgInitAsTarget:

    TgInitAsTarget: 
    { 00 00 ff 0x27 0xd9 
        d4 8c 04 
        08 00 12 34 56 40 
        01 fe a2 a3 a4 a5 a6 a7 c0 c1 c2 c3 c4 c5 c6 c7 ff ff 
        aa 99 88 77 66 55 44 33 22 11 
        00 
        00 
        fd 00 } 
    
  2. Obtenir une seconde PN532 en mode initiateur en envoyant une commande InJumpForDEP:

    InJumpForDEP: 
    { 00 00 ff 0a f6 
        d4 56 01 02 
        01 00 ff ff 00 00 
        d4 00 } 
    
  3. Placez l'initiateur au-dessus de la cible.

  4. Quand je lis les informations reçues de la cible par UART, j'obtiens ce qui suit:

    target->pc: 
    { 01 
        00 00 ff 00 ff 00 } 
    

    Cela semble être un cadre ACK indiquant que la commande a été traitée correctement TgInitAsTarget. Mais par la suite le PN532 n'envoie pas le cadre d'information normal contenant le résultat de la commande TgInitAsTarget et la cible est toujours dans l'état occupé.

Qu'est-ce qui ne va pas ici?

Répondre

0

Plusieurs choses semblent mal se passer avec vos commandes.

  1. Tout d'abord, la commande InJumpForDEP semble être mal formée. Cette commande est décodée comme suit:

     
    d4 56 InJumpForDEP 
        01 ActPass = Active Mode 
        02 Baud Rate = 424 kbps 
        01 Next = NFCID3i 
        00 ff ff 00 00 NFCID3i ? (HERE is the problem) 
    

    Le champ NFCID3i de cette commande n'est pas valide. Un NFCID3i doit comporter 10 octets (par exemple, 11 22 33 44 55 66 77 88 99 AA). La façon la plus simple serait de laisser le PN532 générer automatiquement un NFCID3i aléatoire en ne spécifiant pas un champ NFCID3i du tout:

     
    d4 56 InJumpForDEP 
        01 ActPass = Active Mode 
        02 Baud Rate = 424 kbps 
        00 Next = none 
    

    Notez que champ de longueur et de contrôle de la trame de commande doivent être adaptés en conséquence.

  2. L'initiateur interroge en mode actif à une vitesse de transmission de 424 kbps. Cependant, avec votre commande TgInitAsTarget, vous demandez la cible d'écouter en mode PICC seulement:

     
    d4 8c TgInitAsTarget 
        04 Mode = PICC only ! (HERE is the problem) 
        08 00 12 34 56 40 MifareParams 
        01 fe a2 a3 a4 a5 a6 a7 c0 c1 c2 c3 c4 c5 c6 c7 ff ff FelicaParams 
        aa 99 88 77 66 55 44 33 22 11 NFCID3t 
        00 no Gt 
        00 no Tk 
    

    Par conséquent, l'objectif ne fonctionnera que 14443-4 ISO/CEI PICC (qui est similaire au mode passif à 106 kbps). Par conséquent, l'initiateur et la cible sont configurés pour parler deux protocoles complètement différents et, par conséquent, ne se comprennent pas. Par conséquent, le PN532 en mode cible ne sera jamais appelé par le PN532 en mode initiateur et, par conséquent, ne reviendra jamais à partir de la commande TgInitAsTarget.

    Pour configurer la cible d'une manière qui est compatible avec la configuration de votre initiateur, vous pouvez utiliser ceci:

     
    d4 8c TgInitAsTarget 
        02 Mode = DEP only 
        08 00 12 34 56 40 MifareParams (not used in active mode) 
        01 fe a2 a3 a4 a5 a6 a7 c0 c1 c2 c3 c4 c5 c6 c7 ff ff FelicaParams (not used in active mode) 
        aa 99 88 77 66 55 44 33 22 11 NFCID3t 
        00 no Gt 
        00 no Tk (not used in active mode) 
    
+0

merci pour vos conseils, j'ai essayer, mais il ne fonctionne pas .Je envoyer commande TgInitAsTarget: {00, 00, 0xff, 0x27, 0xd9, \t \t \t \t \t \t \t \t 0xd4, 0x8c, \t 0x02 (j'essayer le mode jeu 0x00, et de mettre le téléphone NFC sur la cible avec l'application NFC, cependant, ne reviennent jamais de la commande TagInitAsTarget.) 0x08, 0x00, 0x12, 0x34, 0x56,0x40, \t \t \t \t \t \t \t \t \t \t \t 0x01,0xfe, 0xa2,0xa3,0xa4,0xa5,0xa6,0xa7, \t 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xff, 0xff, \t \t \t \t \t \t \t \t \t \t 0xaa, 0x99,0x88,0x77,0x66,0x55,0x44,0x33,0x22,0x11 , \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t 0x00,0x00, 0x1f, 0x00,}; y at-il paramètre de PN532 avant d'utiliser la commande TgInitAsTarget? @Michael Roland – Allen

+0

@Allen Recevez-vous un code d'erreur du côté de l'initiateur? Et définissez-vous des paramètres de configuration (registres, paramètres RF, etc.) avant de démarrer le mode initiateur/tagret? –

+0

Il n'y a pas de code d'erreur après l'envoi de la commande TgInitAsTarget, mais d'une trame ACK. à la fois de la cible et de l'initiateur n'ont aucun code d'erreur, et deux PN532 sont toujours dans l'état occupé. J'ai essayé votre anwser de ce lien de question mais n'a pas fonctionné encore. @ Michael Roland – Allen

0

Enfin, je résolu le problème, il est un problème matériel, et J'achète le nouveau module PN532. La trame d'information normale revient avec succès Merci de toute façon @ Michael Roland.