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:共振&放大器;选择14443A

Guru**** 2543560 points


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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/652775/trf7970a-anitcollsion-select-14443a

器件型号:TRF7970A

您好!

我遇到了以下问题:当两个 ISO 14443A 卡靠近天线时、我无法选择一个卡并读出完整的 uid。

设置寄存器(TRF_REGISTER_ISO、0x88);
设置寄存器(TRF_REGISTER_SYSCLK、0x01);
设置寄存器(TRF_REGISTER_CHIP、0x21);

发送以下内容后:  

contWriteTRF[0]= TRF_INITFIFO;
contWriteTRF[1]= TRF_Transmit _START_CRC;(0x90)
contWriteTRF[2]= TRF_WRITEFIFO;
contWriteTRF[3]= 0x00;
contWriteTRF[4]= 0x20;
contWriteTRF[5]= 0x93;
contWriteTRF[6]= 0x20;

我得到一个 IRQ、该 IRQ 发生碰撞。 现在、我读取寄存器0x0D 和0x0E 以获取位置。 然后、我读取 FIFO 以获取 UID 的有效位。

在我的情况下、冲突位于第二个位、第一个(有效)位为"0"。  

那么、现在我要发送:

contWriteTRF[0]= TRF_INITFIFO;
contWriteTRF[1]= TRF_Transmit _START_NOCRC;(0x91)
contWriteTRF[2]= TRF_WRITEFIFO;
contWriteTRF[3]= 0x00;
contWriteTRF[4]= 0x20;
contWriteTRF[5]= 0x93;
contWriteTRF[6]= 0x22;(有效位0、之后添加位(1))
contWriteTRF[7]= 0x02;

我甚至得到一个带有0xC0的 IRQ、但是当我读取 FIFO 状态寄存器时、它会显示没有数据。 但是、当我理解我读的所有不同论文时、卡片应使用重校正 UID 进行回复

我现在尝试了几种稍微不同的方法,但都没有成功。

问题出在哪里?

谢谢、

猜测

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

    您需要利用我们的 TI 示例代码、该示例代码包含 ISO14443A 的完整防冲突过程、可从 以下位置下载:www.ti.com/.../sloc297

    有关软件包及其开箱即用硬件的一些详细信息、请访问 :e2e.ti.com/.../493678

    有一个处理 ISO14443A 防冲突的非常详细的过程、所以你必须参考我们的固件来了解如何处理它。 这就是我们将其作为完整的开源代码编写和发布的原因。

    此外、如果您获得的 IRQ 为0xC0、这是一个大问题。 在 TX 操作完成(接收到 IRQ、IRQ 状态= 0x80)后、您需要使用复位 FIFO 命令(0x0F)清除 FIFO、否则您可能会在 FIFO 中获得损坏的数据。 您将需要以更快的速度处理 IRQ 中断。