Forum Replies Created

  • Re: Re: Using PN512 to communicate with Mifare Desfire EV1 card

    23. August 2013 at 9:57
    in reply to: Using PN512 to communicate with Mifare Desfire EV1 card
    Hi Renke and quyenemic, I found this post interesting as I am currently working on pn512 to get a MIFARE reader/writer, and I have problems.

    Thank you first for any help.

    I have two pn512 cards, I can configure one as PCD and another as PICC, then send and receive bytes. But When I use a MIFARE card and one pn512 as PCD, I can not receive anything from the card. The pn512 is periodically sending 0x26 REQA command.


    The register set of pn512 is what I found in
    pn512SetReg(0x0C,0x10);
    pn512SetReg(0x12,0x80);
    pn512SetReg(0x13,0x80);
    pn512SetReg(0x14,0x83);
    pn512SetReg(0x15,0x77);
    pn512SetReg(0x18,0x55);
    pn512SetReg(0x19,0x4D);
    // pn512SetReg(0x1C,0x62);
    // pn512SetReg(0x23,0x6F);
    pn512SetReg(0x24,0x26);
    // pn512SetReg(0x25,0x8F);
    pn512SetReg(0x26,0x59);
    pn512SetReg(0x27,0xF4);
    pn512SetReg(0x28,0x3F);
    pn512SetReg(0x29,0x11);,

    The function I written for the PCD is
    pn512Init();
    pn512SetReg(PN512_REG_COMMAND,PN512_REG_COMMAND_SOFT_RESET);//RST
    while(pn512GetReg(PN512_REG_COMMAND)&0x0F);//Wait IDLE

    unsigned char f1=0, f2=0, f3=0, f4=0, f5=0, f6=0,res=0,er1 = 0, er2 = 0,wai=0;
    pn512SetMod(PN512_MODE_ISO14443A);
    while(1)
    {
    PN512_CLEAR_FIFO;
    f1=pn512GetReg(PN512_REG_FIFO_LV);
    PN512_SET_FIFO_BYTE(ISO_14443_REQA);
    f2=pn512GetReg(PN512_REG_FIFO_LV);
    //PN512_SET_COMMAND_TRANSMIT;
    PN512_SET_COMMAND_TRANSCEIVE;
    PN512_TRIGGER_TRANSCEIVE;
    f6=pn512GetReg(PN512_REG_BIT_FRAME);
    if(f3=pn512GetReg(PN512_REG_FIFO_LV)){
    f4=pn512GetReg(PN512_REG_FIFO);
    f5=pn512GetReg(PN512_REG_FIFO);
    f6=pn512GetReg(PN512_REG_FIFO);
    break;
    }
    }

    The Macros are defined as
    #define PN512_REG_COMMAND 0x01
    #define PN512_REG_BIT_FRAME 0x0D
    #define PN512_REG_FIFO 0x09
    #define PN512_REG_FIFO_LV 0x0A

    #define PN512_CLEAR_FIFO (pn512SetReg(PN512_REG_FIFO_LV,PN512_REG_FIFO_CLEAR))

    #define PN512_SET_COMMAND_RECEIVE (pn512SetReg(PN512_REG_COMMAND,PN512_REG_COMMAND_RECEIVE))

    #define PN512_SET_COMMAND_TRANSMIT (pn512SetReg(PN512_REG_COMMAND,PN512_REG_COMMAND_TRANSMIT))

    #define PN512_SET_COMMAND_TRANSCEIVE (pn512SetReg(PN512_REG_COMMAND,PN512_REG_COMMAND_TRANSCEIVE))

    #define PN512_TRIGGER_TRANSCEIVE (pn512SetReg(PN512_REG_BIT_FRAME,0x80))
    + 0  |  - 0
Viewing 1 post (of 1 total)