有谁知道这个NFC命令是什么意思?

时间:2021-03-20 19:29:54

标签: android emulation nfc card

我正在尝试制作一个可以被我的智能手机读取的模拟标签。 我将 DLP7970A 与 sloa 224 API(运行 P401_TRF7970A_ALL_NFC_MODES 的 API)和 MSP432P401R Launchpad 一起使用来模拟 T4TA 标签。这是主要功能:

void main(void)
{

       tTRF79x0_IRQFlag interrupcion;
       tNfcState eTempNFCState;
       GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0);
       GPIO_setAsOutputPin(GPIO_PORT_P2, GPIO_PIN1);

          //Enable interrupts globally
             __enable_interrupt();
         // Initialize MCU
                MCU_init();
             // Initialize Debug Pins as output
             NFC_RF_FIELD_LED_DIR |= NFC_RF_FIELD_LED_BIT;
             NFC_RW_LED_PDIR |= NFC_RW_LED_BIT;
             NFC_CE_LED_PDIR |= NFC_CE_LED_BIT;

             // Clear NFC pins
             NFC_RF_FIELD_LED_POUT &= ~NFC_RF_FIELD_LED_BIT;
             NFC_RW_LED_POUT &= ~NFC_RW_LED_BIT;
             NFC_P2P_LED_POUT &= ~NFC_P2P_LED_BIT;
             NFC_CE_LED_POUT &= ~NFC_CE_LED_BIT;

             // Initialize USB Communication
            // Serial_init();

             // Initialize TRF7970
             TRF79x0_init();


             //Buttons_init(BUTTON_ALL);
             //Buttons_interruptEnable(BUTTON_ALL);

             TRF79x0_idleMode();

             // Initialize the NFC Controller
             NFC_init();

             // This function will configure all the settings for each protocol
             NFC_configuration();

             // Initialize Type 4 Tag RTD Message
             T4T_CE_initNDEF();

             // Initialize IDs for NFC-A, NFC-B and NFC-F
             NFC_initIDs();
             //
             NFC_A_init();
             tIsoDepState DEPState;
             while (1){
                  eTempNFCState = NFC_run(); //This handles anti-collision procedure

                 if ( eTempNFCState == NFC_DATA_EXCHANGE_PROTOCOL){
                       if ((NFC_A_isTargetSelected(0x01) == STATUS_SUCCESS)||      //checks if the TRF7970 is in PICC mode
                               (NFC_A_isTargetSelected(0x02) == STATUS_SUCCESS))
                       {
                         interrupcion = NFC_waitForCommand(500);
                         if (interrupcion == IRQ_STATUS_RX_COMPLETE){
                            getBuffer(TRF79x0_getNfcBuffer()); //Gets the NFC buffer
                            GPIO_toggleOutputOnPin( GPIO_PORT_P2,GPIO_PIN1); //just to put a breakpoint to check RX buffer
                                 }


                         }

                       }else
                           GPIO_toggleOutputOnPin( GPIO_PORT_P1,GPIO_PIN0);

                 }
             }

这是我使用的 getBuffer 函数和它修改的变量:

uint8_t bufferRX[16];

void getBuffer (uint8_t *buffer){
   int i;
   for (i = 0 ; i < sizeof(buffer) ; i++){
       bufferRX[i]= buffer[i];
   }
}

我得到的 bufferRX[16] 是这个序列(接收到的字节是 6): 0xC280080102A8 认为这是一个 NDEF 扇区选择命令是有道理的,因为它以 C2 开头并包含我的卡 ID (0x080102A8),但据我所知,扇区选择命令以 0xC2FF 而不是 0xC280 开头。 我已经检查了 NFC 论坛上的所有文档,但仍然找不到该类型的命令。我无法继续,因为我不知道如何继续,而且 API 无法正确处理该命令。 有谁知道来自我的 Android 手机的命令可能意味着什么? 提前致谢。

0 个答案:

没有答案
相关问题