读
*******************************************************************************
*******************************************************************************/
char PcdRead(unsigned char addr,unsigned char *pData)
{
char status;
unsigned int unLen;
unsigned char i,ucComMF522Buf[MAXRLEN];
ucComMF522Buf[0] = PICC_READ;
ucComMF522Buf[1] = addr;
CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]);
status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);
if ((status == MI_OK) && (unLen == 0x90))
{
for (i=0; i<16; i++)
{
*(pData+i) = ucComMF522Buf[i];
}
}
else
{
status = MI_ERR;
}
return status;
}
void RFID_Read()
{
uint8_t i;
unsigned char status = 0;
PcdReset();
PcdAntennaOff();
PcdAntennaOn();
while (1)
{
printf("req\n");
status = PcdRequest(PICC_REQALL, card_type);
if (status != MI_OK)
{
break;
}
printf("anti\n");
status = PcdAnticoll(ID);
if (status != MI_OK)
{
break;
}
printf("select\n");
status = PcdSelect(ID);
if (status != MI_OK)
{
break;
}
printf("ahthor\n");
status = PcdAuthState(PICC_AUTHENT1A, cmd_addr, KEY_A, ID);
if (status != MI_OK)
{
break;
}
memset(cmd_dat,0,sizeof(cmd_dat));
status = PcdRead(cmd_addr, cmd_dat);
if (status != MI_OK)
{
break;
}
printf("Card_Data:\n");
for (i=0;i<16;i++) {
printf(" %02x ",cmd_dat[i]);
}printf("\n");
TIP_SUCCESS();
break;
}
}


写
char PcdWrite(unsigned char addr,unsigned char *pData)
{
char status;
unsigned int unLen;
unsigned char i,ucComMF522Buf[MAXRLEN];
ucComMF522Buf[0] = PICC_WRITE;
ucComMF522Buf[1] = addr;
CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]);
status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);
if ((status != MI_OK) || (unLen != 4) || ((ucComMF522Buf[0] & 0x0F) != 0x0A))
{
status = MI_ERR;
}
if (status == MI_OK)
{
for (i=0; i<16; i++)
{
ucComMF522Buf[i] = *(pData+i);
}
CalulateCRC(ucComMF522Buf,16,&ucComMF522Buf[16]);
status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,18,ucComMF522Buf,&unLen);
if ((status != MI_OK) || (unLen != 4) || ((ucComMF522Buf[0] & 0x0F) != 0x0A))
{
status = MI_ERR;
}
}
return status;
}