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:Java 小程序激活

Guru**** 2562120 points
Other Parts Discussed in Thread: TRF7970A

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/977898/trf7970a-java-applet-activation

器件型号:TRF7970A

您好!
我在应用中将上述芯片与 MCU 搭配使用、但我正在尝试从 JavaCard 获取一些数据。 我可以执行整个过程(防冲突、选择、RATS),但是当我发送 Java 小程序激活命令时,我不会从卡中得到任何答案,甚至不会得到错误或其他东西。
芯片配置为跟随 ISO_CTRL_REG 具有值0x08 (ISO14443 A 106kbps)、通信包中的其余寄存器为默认值。
在我执行防冲突程序后、我根据需要激活 ISO_CTRL_REG 中的 CRC 并发送带有 CRC 的命令(直接命令0x11)
提到使用另一个设备时、我设法使用我尝试通过 TRF7970A 发送的准确命令激活 Java 小程序。
命令为:0x02 0x00 0xA4 0x04 0x00 0x09 <9bytes applet ID>。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dan、您好!

    这是一个超出了我们可以支持的标准 ISO 命令的问题。 我知道 以前有人回答过有关 Java 小程序的问题,但这些语言不再可用。

    很抱歉、您没有更好的答案。

    此致、

    Helfried

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想补充一些细节。 我将该芯片与 MCU 结合使用、并尝试在标签上激活 Java 小程序、因此我将 TRF+MCU 用作启动器、以便从具有 Java 小程序的标签中读取。

    以下是用于发送信息的函数:

    uint8_t trf7970a_sendToTag (uint8_t 接口、uint8_t CRC、uint8_t * buf、uint8_t len)

       trf7970a_command (接口、TRF7970A_CMD_FIFO_RESET);
       (CRC)?(tf7970a_command (interface、TRF7970A_CMD_transmit)):(tf7970a_command (interface、TRF7970A_CMD_transmit、no_CRC));
       tf7970a_write_continous (接口、TRF7970A_TX_LENGTH_BYTE1、buf、len);
       返回1;

    uint8_t trf7970a_command (uint8_t 接口、uint8_t cmd)

       CMD |= TRF7970A_CMD_BIT_CTRL;
       ChipSelect (接口);
       SPITransaction (SPI_GetAddress (interface)、cmd);
       ChipDeSelect (接口);
       返回1;

    uint8_t trf7970a_write_continous (uint8_t 接口、uint8_t reg、uint8_t * val、uint8_t len)

       uint8_t ret=1、i;

       REG|=TRF7970A_CMD_BIT_Continuous;

       ChipSelect (接口);
       SPITransaction (SPI_GetAddress (interface)、reg);
       for (i=0;<len;i++))
          SPITransaction (SPI_GetAddress (interface)、val[i]);
       ChipDeSelect (接口);

    /*用于调试目的*/
       uint8_t buf[4];
       hex2str (reg、buf、1);
       USART_AddBuffer (iDEBUG、(uint8_t *)&buf[2]、2、debug_MSG);
       for (i=0;<len;i++))
       {
       hex2str (val[i]、buf、1);
       USART_AddBuffer (iDEBUG、(uint8_t *)&buf[2]、2、debug_MSG);
       }
       USART_AddBuffer (iDEBUG、(uint8_t *)"\r\n"、2、debug_MSG);
       USART_TransmitBuffers (iDEBUG);

    下面我在我和 JavaCard 之间附加了一系列命令。 该卡的类型为 A

    寄存器 Len 命令
    3D 000f 26.
      0200                                                               
    3D 0020 9320                                                                 
      7D13281355                                                           
    3D 0070 93707D13281355                                                      
      20.                                                                   
    3D 0020 E010                                                                 
      0578F7B102                                                          
    3D 0030 D01100                                                               
      D0                                                                   
    3D 0070 0200A404000100
                                                             
    超时
                                                                          
    3D 0020 5000                                                                                                                               
    3D 0020 5000                                                                  

    我遇到的问题是命令从02开始后的超时问题。 这个超时意味着我等待了7ms、没有收到任何内容。 从我对其他器件所做的测试中、我应该至少在与我针对此序列测试的完全相同的卡上针对此命令得到一个错误。

    从上面看不明显的是激活命令、我遇到问题的命令是通过 CRC 发送的。
                                                                           

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dan、您好!

    因为我没有 处理 JavaCard 的经验,所以我无法判断命令是否正常。 您可以检查的一件事是、该卡是否已永久通电。 当托架在中间切换时,将不再选择卡。 只是一个想法。

    此致、

    Helfried

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、卡已通电原因在我选择卡后、如果我不使用 halt 命令、则卡将不会对 REQA 做出长反应、除非我将其从字段中取出、以便可以重置。 从我的角度来看、如果卡的电量耗尽、即使我没有发送 HLTA 命令、我也能获得 REQA 响应。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你是对的。 有道理。 只是为了解释这种奇怪的行为。

    此致、

    Helfried