Re: Using PN512 to communicate with Mifare Desfire EV1 card

Forum MIFARE SmartCard IC`s MIFARE DESFire Using PN512 to communicate with Mifare Desfire EV1 card Re: Using PN512 to communicate with Mifare Desfire EV1 card

Re: Using PN512 to communicate with Mifare Desfire EV1 card

23. August 2013 at 9:57
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