找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2113|回復(fù): 1
收起左側(cè)

RC522讀取7字節(jié)M1卡的UID遇到的問題

[復(fù)制鏈接]
ID:258164 發(fā)表于 2020-9-29 13:40 | 顯示全部樓層 |閱讀模式
現(xiàn)在的情況是:
   4字節(jié)的卡能正確尋到卡并能讀取到UID,7字節(jié)能讀取到前3字節(jié),利用二級(jí)防沖撞讀取后四字節(jié)出錯(cuò)。具體表現(xiàn)為:讀取RC522寄存器超時(shí),說明RC522沒有響應(yīng)這個(gè)命令。
   想請教有沒有這方面經(jīng)驗(yàn)的壇友可以解答下?我的做法是二級(jí)防沖撞和一級(jí)防沖撞的操作一樣,包括寄存器的配置與發(fā)送的字節(jié),唯一的改變就是將防沖撞命令從0x93改為0x95.
  1. char PcdAnticoll(unsigned char *pSnr)
  2. {
  3.     char status;
  4.     unsigned char i,snr_check=0;
  5.     unsigned int  unLen;
  6.     unsigned char ucComMF522Buf[MAXRLEN];
  7.    

  8.     ClearBitMask(Status2Reg,0x08);     //清MFCryptol On位 只有成功執(zhí)行MFAuthent命令后,該位才能置位
  9.     WriteRawRC(BitFramingReg,0x00);    //清理寄存器 停止收發(fā)
  10.     ClearBitMask(CollReg,0x80);        //清ValuesAfterColl所有接收的位在沖突后被清除

  11.     ucComMF522Buf[0] = PICC_ANTICOLL1; //卡片防沖突命令
  12.     ucComMF522Buf[1] = 0x20;

  13.     status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,&unLen);//與卡片通信

  14.     if (status == MI_OK)    //通信成功,讀出卡的UID
  15.     {
  16.              for (i=0; i<4; i++)
  17.          {   
  18.              *(pSnr+i)  = ucComMF522Buf[i];
  19.              snr_check ^= ucComMF522Buf[i];
  20.          }
  21.          if (snr_check != ucComMF522Buf[i])
  22.          {   status = MI_ERR;    }
  23.     }
  24.    
  25.     SetBitMask(CollReg,0x80);
  26.     return status;
  27. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

ID:807591 發(fā)表于 2022-1-12 13:21 | 顯示全部樓層
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表