This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TRF7970A可以读TypeA(14443A),但是无法读取TypeB(14443B),寻卡一直失败。参考官方例程也一样,无法读取到typeB

1、void Trf797xTurnRfOn(void)    打开RFID模块

TrfSetRegister(REGULATOR_CONTROL, 0x87);       //寄存器地址0x0b
 TrfSetRegister(CHIP_STATE_CONTROL, 0x25);      //寄存器地址0x0

TrfSetRegister(ISO_CONTROL, 0xC);     //读取B卡的设置        ,寄存器地址0x01
 TrfSetRegister(MODULATOR_CONTROL, 0x0); // ASK 10%  , 寄存器地址0x09
 

//TrfSetRegister(ISO_CONTROL, 0x88);     //读取A卡的设置
 //TrfSetRegister(MODULATOR_CONTROL, 0x01); // ASK 10%
 
 TrfSetRegister(RX_WAIT_TIME, 0x07);                     //寄存器地址0x08
 TrfSetRegister(RX_SPECIAL_SETTINGS, 0x20);     //寄存器址 0x0a

2、void Trf797xTurnRfOff(void)     //关闭RFID模块
{
 // RF output not active
 // Reference Source에는 0x1F만 하여 RF output active 상태는 유지되도록 되어 있으나 출력 제어를 위해 수정
 TrfSetRegister(CHIP_STATE_CONTROL, 0x01);
}

4、搜索卡片

Iso14443aFindTag()

RfidPowerOn();                     //硬件使能;

Trf797xTurnRfOn();              //打开RFID模块

Delay(SYS_TIMER_2MS);

IrqClear();                            //清除IRQ_Status状态;

{                                         //type B寻卡

         TrfGetRegisterData(ISO_CONTROL,&status,1);
         APP_TRACE_INFO("%s %d %x\n",__FUNCTION__, __LINE__,status);

 TrfGetRegisterData(MODULATOR_CONTROL,&status,1);
 APP_TRACE_INFO("%s %d %x\n",__FUNCTION__, __LINE__,status);

 gTrfFifoDataBuf[ui8Offset++] = 0x8F;  // Reset Command
 gTrfFifoDataBuf[ui8Offset++] = 0x90;  // Transmit No CRC Command
 gTrfFifoDataBuf[ui8Offset++] = 0x3D;  // Address of Register TX_LENGTH_BYTE_1
 gTrfFifoDataBuf[ui8Offset++] = 0x00;  // Data of TX_LENGTH_BYTE_1
 gTrfFifoDataBuf[ui8Offset++] = 0x30;  // Data of TX_LENGTH_BYTE_2
 gTrfFifoDataBuf[ui8Offset++] = 0x05;  // REQB/SENSB_REQ Flag
 gTrfFifoDataBuf[ui8Offset++] = 0x00;    // AFI, 0x00 for all families and sub-families


 gTrfFifoDataBuf[ui8Offset++] = ISO14443B_REQA| 0x00;  // PARASM = No Extended ATQB Support + 、Sending REQB/WUPB + Number of slots

         Delay(SYS_TIMER_1MS);
 
         TrfSendInventoryCommand(gTrfFifoDataBuf, ui8Offset);          //发送命令

#if 0                     //寻卡 typeA

 gTrfFifoDataBuf[ui8Offset++] = 0x8F;  // Reset Command
 gTrfFifoDataBuf[ui8Offset++] = 0x90;  // Transmit No CRC Command
 gTrfFifoDataBuf[ui8Offset++] = 0x3D;  // Address of Register TX_LENGTH_BYTE_1
 gTrfFifoDataBuf[ui8Offset++] = 0x00;  // Data of TX_LENGTH_BYTE_1
 gTrfFifoDataBuf[ui8Offset++] = 0x0F;  // Data of TX_LENGTH_BYTE_2
 gTrfFifoDataBuf[ui8Offset++] = Command; // Data to be sent

 TrfSendInventoryCommand(gTrfFifoDataBuf, 6); 

#endif

while(--bNum)
 {
        if(IrqCheck() == IRQ_RX_COMPLETED)
       {
                APP_TRACE_INFO("%s %d \n",__FUNCTION__, __LINE__);
                if(Iso14443aReqaRespond(UidSize) == STATUS_SUCCESS)
               {
                    return 1;
                     }
              break;
              }
        Delay(SYS_TIMER_10US);
 }
 TrfSetRegister(CHIP_STATE_CONTROL, 0x01);
 //RfidPowerOff();

//设置为B卡时,不管是否放CPU卡,IRQ_Status状态寄存器都是0x80;

//设置为A卡时,IRQ_Status不放卡为0x80,放mf卡时为0xc0,即接收数据完成;