Open minabf opened 3 years ago
Thanks for the help. However my problem is beyond this. No command works after ATS! I think I am not sending the commands right! So I got an array like Send_Re[4]= {0x5A, 0x01,0x01,0x01}; which th3 three byte 0x01 is my AID which is created using nxp app. Now I am trying to select this app so I write Send_Re into fifo and afterwards I transieve it and once the communication finished(IRQ0 clears) I read the fifo again. Is there anything wrong with this?
This is my ATS function which works fine.
uint64_t PICC_RequestATS(uint8_t* ats){
CLRC663_write_reg(CLRC663_REG_COMMAND,CLRC663_CMD_LOADPROTOCOL); //write_reg(0x00,0x0D);
CLRC663_flush_fifo(); // Flush_FiFo
CLRC663_write_reg(CLRC663_REG_TXCRCPRESET, 0x19);
CLRC663_write_reg(CLRC663_REG_RXCRCCON, 0x19); // CRC auto calculation is activated for CRC16
uint8_t Send_req1[]= {0xE0, 0x80};
CLRC663_write_fifo(Send_req1, 2); //RATS,E0
CLRC663_write_reg(CLRC663_REG_COMMAND, CLRC663_CMD_TRANSCEIVE); //Start tranceive command
Clrc663_irq_wait(0x18, 0x2); // Wait for irq0 to clear, showing the
uint8_t len = CLRC663_fifo_length();//read FIFO length
CLRC663_read_fifo((uint8_t*) &ats, len); // Read FIFO,Expecting ATS,after receiving the ATS the PICC enters protocol
return ats;
}
However for selecting the App I do exactly the same thing and got different response each time which is neither of the response specified in the AN. Here is my code:
uint8_t PICC_SelectApp(uint8_t* result){
CLRC663_write_reg(CLRC663_REG_COMMAND,CLRC663_CMD_LOADPROTOCOL); //write_reg(0x00,0x0D);
CLRC663_flush_fifo(); // Flush_FiFo
CLRC663_write_reg(CLRC663_REG_TXCRCPRESET, 0x19);
CLRC663_write_reg(CLRC663_REG_RXCRCCON, 0x19); // CRC auto calculation is activated for CRC16
uint8_t Send_req1[]= {0x5A, 0x01, 0x01, 0x01};
CLRC663_write_fifo(Send_req1, 4); //RATS,E0
CLRC663_write_reg(CLRC663_REG_COMMAND, CLRC663_CMD_TRANSCEIVE); //Start tranceive command
Clrc663_irq_wait(0x18, 0x2); // Wait for irq0 to clear, showing the
uint8_t len = CLRC663_fifo_length();//read FIFO length
CLRC663_read_fifo((uint8_t*) &result, len); // Read FIFO,Expecting ATS,after receiving the ATS the PICC enters protocol
return result;
} I even tried sending {0x02, 0x5A, 0x01, 0x01, 0x01} or {0x90, 0x5A, 0x01, 0x01, 0x01} but still does not work. I do not know what the problem might be. Any help really appreciated.
Ok. AN11022 has a description for the Appids acquisition sequence Fig 14. NFC Cockpit with CLEV6630A / CLEV6630B: Activation of a MIFARE DESFire EV1 card + Get Version Compare with your algorithm of work.
Thanks alansbor, I got PPS and application select work . Now I am working on authentication . Is it exactly the same process?
I was glad to help. Read all the manuals from the chip manufacturer and everything will be fine.
Hi all,
My RFID project is with CLRC663 using stm32l0. So far with the help of the code here I managed to get ATQA, UID, SAK, ATS and also read and write to Mifare classic card, work. However I can not get it work with desfire commands! I need to create application, select it, create file and so on but I could not get the native commands work, I even tried to wrap it with ISO 7816 but still no gain. Is their any library that i can download? Nxp's library is so complicated . Many thanks in advance.