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:EN 和 EN2输入被永久连接至主电源

Guru**** 2587345 points
Other Parts Discussed in Thread: TRF7970A, DLP-7970ABP

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/654173/trf7970a-en-and-en2-inputs-permanently-connected-to-main-power

器件型号:TRF7970A
主题中讨论的其他器件: DLP-7970ABP

您好!

我的客户正在测试在 SPI 接口上连接的 TRF7970A。 他们需要知道  EN 输入是否可以永久连接到 Vcc 和 EN2至 GND、或者如果他们需要与 RFID 标签通信、他们是否需要更改逻辑。 他们还需要更好地了解 用于 TRF 控制器的命令序列、以便从用户存储器中写入和读取数据。

谢谢、此致、

Alberto

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

    您好、Alberto、

    将 EN2接地并不是问题、这是客户经常做的事情。

    就 EN 而言、理论上他们可能会放弃、但我建议不要这样做。 通过连接 EN、它们将无法在完全断电后对器件进行硬件复位。 这不是我回忆的事情、我不想说它是无风险的、因为如果器件进入不良状态并且软件复位不会将其恢复到良好状态、则有时可能需要硬件复位。 此外、它们还将使用该配置消耗更多的功率、因为通常当 TRF7970A 不用于有源通信时、EN 被拉至低电平以最大限度地降低电流消耗。

    至于命令序列、它们应参考我们的固件示例。 开始查看的一个简单方法是: http://www.ti.com/lit/zip/sloc297

    我们更详细的成熟 NFC 堆栈可从以下应用手册中下载: http://www.ti.com/lit/pdf/sloa227

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

    您好 Ralph、

    感谢 Alberto 对问题的支持。 我想测试(就像第一步)我的系统与通过 SPI 的 TRF7970A 之间的通信。

    我可以写入/读取什么寄存器来验证 SPI 总线的功能? 这是我在设置 RFID 芯片之前验证通信的第一步。

    谢谢、

    Ondrej

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

    在这种情况下、我建议读取寄存器0x0F。 当连接到 TRF7970A 的晶体振荡器稳定时、该寄存器的位6将被设置为1。 这是我们始终读取的寄存器、用于在需要时测试器件是否已启动并运行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ralph、

    它的工作原理。 我已经验证了我的 SPI 通信读取了一些寄存器。 没关系。

    另一个步骤是读取 RFID 标签上的库存。 它使用 ISO 15563标准。 我尝试正确填充寄存器、但我不确定设置是否正确。 那么、为了能够读取 RI-IO3-112A-03上的资源清册、必须执行哪些寄存器和步骤?

    我已经下载了程序 TRF7970A_EVM_GUI.exe (2781184字节长度)和 RFIDRead Win 7.exe (7887360字节)、但在 Win 7上运行它们时遇到问题。 如果我将 TR7970A EVM 板连接到 USB 和 COM 端口、例如、在按下"Set Protocol"按钮后、分配了11或35。 我尝试了32位和64位 Windows 7 -同样的行为。

    日志文件的输出、EVM 板在将 COM 端口重新映射到 COM2后使用 COM11 -未成功。 我不明白为什么选择端口按钮不起作用...

    11:10:47.255   COM12
    11:10:47.257   COM11
    11:10:47.258   COM10
    11:10:47.259   COM9
    11:10:47.259   COM8
    11:10:47.260   COM7
    11:10:47.261   COM6
    11:10:47.261   COM5
    11:10:47.262   COM4
    11:10:47.263   COM3
    11:10:47.264   COM2
    11:10:47.265   COM1
    11:10:47.279   -> 0108000304FF0000
    11:10:49.387***   读取超时***
    11:10:49.407   COM0
    11:10:53.349   -> 010A0003041001210000
    11:10:53.363   COM1
    11:11:35.890***   读取超时***
    11:11:35.902   -> 010C00030410002101000000
    11:12:18.416***   读取超时***
    11:12:18.429   -> 0109000304F0000000
    11:13:00.944   ***读取超时***
    11:13:00.948   -> 0109000304F1FF0000
    11:13:43.454***   读取超时***
    11:13:43.477   -> 010B000304140401000000
    11:14:25.992***   读取超时***

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

    您好 Ondrej、

    好的、从我的角度来看、这里有两个不同的点。


    如何配置 TRF7970A 以读取 ISO15693标签

    处理此问题的最佳方法是参考我们最新的示例固件以读取 RFID 标签: http://www.ti.com/lit/zip/sloc297

    该固件旨在显示激活和读取包括 ISO15693在内的每种支持标签类型数据的整个过程。

    请勿将 TRF7970AEVM 固件用作固件设计的基础!! 它很旧、过时、且 EVM 已停产。 固件有多个错误。 它的唯一持续时间是因为它被用来支持另一个 NFC 设备...

    请使用 SLOC297并浏览 ISO15693.c、了解有关发出命令的详细信息。 这将为您提供所需的一切。

    我要注意的是、您可能希望在学习时跳过防冲突、因为该函数包含一个优化的算法、而且要理解起来更加困难。 只要每次只使用一个标签、就不需要防冲突开始。


    2.如何使用 TRF7970AEVM GUI

    虽然我不建议您将 EVM 用于固件开发、但我仍会解决您关于 EVM 运行的问题。 将 EVM 移至 COM2是一个很好的步骤、但我认为您需要在 EVM 上为 FTDI 芯片安装 SiLabs 驱动程序才能使其正常工作: https://www.silabs.com/products/mcu/pages/USBtoUARTbridgeVCPdrivers.aspx

    您还需要确保默认固件仍加载到 EVM 中、除默认固件外的任何其他内容都可能导致 EVM 无法连接到 GUI。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ralph、
    感谢你的帮助。 我对此表示赞赏。 我了解了 ISO15693.c -有一个函数"uint8_t ISO15693_sendSingleSlotInventory (void)"、因此它将对我有所帮助。

    关于项目2 - USB/UART 驱动程序已安装、我在设备管理器中看到、移除 TRF7970A EVM 板并将其插接至 USB 端子会显示如何使用特定编号添加和删除 COM 端口。 原始的 VAS 11、然后我将其更改为2。 EXE 文件中可能存在问题。 我看到、它尝试 COM0和 COM1、而不是更多。 当我仅将 EVM 板与 COM11配合使用时、程序会报告缺少 COM 端口。 如果我将笔记本电脑插入到扩展坞并且添加了 COM1 (由于固定的硬件)、EVM 软件会尝试从 EVM 板中搜索感应器、但在此阶段是程序冻结。 我在程序右侧看不到用于选择正确 COM 端口的可用选项。

    我使用 EVM 的目的是将示波器连接到 SPI 总线、并记录所有流量以查看发送和接收哪些数字、从而了解 TRF7970A 设置过程和顺序。 我尝试重新编译 EVM GUI 软件的源代码、但我只有 Express 版的 Microsoft VC++、并且缺少一些文件。

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

    您好 Ondrej、

    这是 EVM 的一种奇怪情况。 我可以说 COM11很少工作、即使 GUI 说它尝试这样做、所以您希望避免这个-这就是程序报告缺少 COM 端口的原因。 如果 COM2发生了奇怪的情况、您还可以尝试其他端口、如 COM3或 COM4。 执行此操作时、请确保关闭 GUI。 另一个选项是重新启动 PC 以释放 COM 端口列表、然后重新插入 EVM、确保其枚举为低功耗(COM2-5范围)、然后再次尝试 GUI。

    我不确定上次尝试构建 GUI 的时间是什么时候、此时我们再次认为它是过时的 EVM、虽然我可以提供有关如何尝试和使其运行的建议、但我们不会花任何时间来研究任何错误。

    至于 SPI 总线的范围、同样由于该软件不是最新的、并且存在错误、因此我不建议依赖它来执行此操作。 此硬件包可与 SLOC297固件搭配使用、更适合用于 SPI 总线范围界定:

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

    您好 Ralph、

    再次感谢您的支持。 我正在尝试在 SLOC297捆绑包中安装源代码、因为我要将其移植到 ESP32平台。 这意味着、我必须学习它的工作原理- ISO15693的一部分。 我不理解代码的一部分-我知道、TRF7970A 在接收到针对库存的命令后生成 IRQ 信号、并且当数据在 FIFO 缓冲区中准备就绪时生成 IRQ。 但是、通过查看"trf79xxa.c"和"ISO15693.c"文件、我可以看到函数"TRF7970A_waitRxData"内等待 IRQ 的调用函数

      案例 TX_WAIT:
         TRF7970A_waitTxIRQ (ui8TxTimeout);     // TX 超时
         TRF7970A_waitRxIRQ (ui8RxTimeout);     // RX 超时
         中断;

    在"ISO15693_sendSingleSlotInventory"中使用以下参数-

    G_sTrfStatus = TRF7970A_waitRxData (5、15);

    但是、观察通过示波器监听的 SPI 总线-发送库存命令(TX)后的 IRQ 信号在4.5ms 后处于活动状态、好的、但确认 RX 的 IRQ 在 TX IRQ 之后的50ms 后。 当 IRQ 信号的两个功能按顺序执行时、必须生成延迟-在 SLOC297示例中、RX 超时设置为15ms。 我没有 TRF7970A BNDL、有人能用库存命令验证您的 TI RFid 标签 ISO15693演示代码的功能吗? -特别是 IRQ 定时?

    谢谢、

    Ondrej

    43.98毫秒 SERIAL1 8F 91 3D 00 30 26 01 00 00 00 00 00 00 00 00 00 00 00 0
    49.44毫秒 SERIAL1 4C 00 00 00 80 00 1
    50.87毫秒 SERIAL1 8F 0 0
    78.94ms SERIAL1 4C 00 00 00 00 00 00
    92.34毫秒 SERIAL1 4D 00 0D 3F 6C 00 00 3E 00 00 00 00 00 00 3E
    93.78毫秒 SERIAL1 8F 91 3D 00 30 06 01 00 00 00 00 00 00 00 00 00 00 00 0
    99.46毫秒 SERIAL1 4C 00 00 8F 00 80 00 00 1
    118.2毫秒 SERIAL1 4C 00 00 00 00 00 00 0
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ondrej、

    这个时序告诉我 IRQ 中断不能被快速处理、这可能是一个大问题。 即使 TX 完成中断也需要很长时间才能处理。

    对于以2MHz 频率运行 SPI 的正常系统、大约需要1.6ms 的时间才能获得 TX 完成中断、然后从接收到库存响应后、只需额外的4-4.5ms 时间即可获得 RX 完成。

    我随附了一份捕获图、其中说明了 ISO15693库存时序、获取系统信息、并使用 TI Tag-It HF-H Pro 应答器作为目标读取单个块。

    您可以使用 https://www.saleae.com/downloads 上的最新 Saleae Logic 软件查看捕获

    e2e.ti.com/.../ISO15693_5F00_Inventory_5F00_Read_5F00_Data.logicdata

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

    您好 Ralph、
    我现在稍微有点远了:)
    我已订购原 DLP-7970ABP 模块、并将使 SLOC297固件与 Arduino 相适应。
    阅读效果非常好。 但写入...

    我正在使用 fution uint8_t ISO15693_sendWriteSingleBlock (uint8_t ui8ReqFlag、uint8_t ui8BlockNumber、uint8_t ui8BlockSize、uint8_t * pui8BlockData)

    对我来说、不清楚的是 ui8ReqFlag。 没有太多的解释、这个变量/标签的结构是什么。 您能更具体吗?
    当我尝试写入我的标签时、标志被定义。 必须设置0x40 -查看源代码-它宣布写入操作
    uint8_t ui8AddresedFlag = B01100010;
    但是、在写入第一个序列后、数据会被标记-通过读取进行验证-但我收到[01 13]响应、可能是"编程失败"- TRF 7960评估模块(ISO 15693主机命令) PDF 文件-第23页。

    您能不能解释一下、这个答案的原因是什么、或者解释一下 TRF7970A 缓冲器写入单个地址的详细结构?

    谢谢、
    Ondrej

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

    这是 ISO15693请求标志的变量。 写入所需的标志可能因标签而异。 标志设置为0x62时、这意味着位6设置为1、向固件指示选项标志用于写入操作并影响命令的发出方式、但 TI Tag-It HF-I 应答器需要该选项、但其他选项不多。 您可能只需要使用0x22进行写入、即寻址模式+高数据速率。

    ISO15693-3规范涵盖了整个请求标志系列、因此我们没有关于该系列的更多文档、因为我们预计官方 ISO 标准会参考这些信息以及标签数据表、以了解写入该产品的要求。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ralph、

    感谢您的解释。 但是、仍然不知道为什么我的写入命令不成功。

    我将按照以下顺序(在逻辑分析仪上验证)使用 UID "E00700002187FC25"发送到 TRF7970A

    MISO:8F 91 3D 00 F0 62 21 25 FC 87 21 00 07 E0 00 10 D0 CD AA -应请求将10 D0 CD AA 写入块00

    答案是

    IRQ ->确认 TX

    MISO 4C 00 5C 00 7F 00 8F

    MOSI 00 40 00 02 00 01 13 00

    IRQ ->确认 RX

    MISO 4C 00 5C 00 7F 00 8F

    MOSI 00 40 00 02 00 01 13 00

    我尝试了标志字节0x22而不是0x62、也尝试了低速度0x20 -未成功。

    为什么答案不是00 ->确定、而是01 13 -编程失败。 有什么可能的错误?

    谢谢、

    Ondrej

    第一个 IRQ 之后

    第二个 IRQ 之后

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

    0x62的标志应该导致在 TX 完成和 RX 完成之间发出一个 EOF 命令。 使用0x22作为标志时、示波器捕获是否相同?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    拉尔夫

    仅供我参考-如何锁定和解锁射频标签中的某些块? 也许、我已经锁定了 RFID 标签、这就是我无法写入内存块的原因。 但我不知道如何获取信息、是否有块被锁定。 解锁推荐或方法是什么?

    标志0x22的 SPI 总线屏幕截图明天我将发送、但我预计会出现相同的行为。 系统报告状态= 0x09、这意味 着 NO_RESPONSE_Received_15693

    我将在明天进行调查。 我只想确保避免 RFID 标签存储器锁定的情况。

    typedef 枚举

       TRF_IDLE、                //新建
       TX_COMPLETE、             //正式为0x00
       RX_COMPLETE、             //正式为0xFF
       TX_ERROR、                //新建
       RX_WAIT、                //正式为0x01
       RX_WAIT_EXTENSION、         //新建
       TX_WAIT、                //新建
       PROTOCOL_ERROR、             //正式为0x02
       NO_RESPONSE_received、      //正式为0x00
       针对   15693个案例添加了 NO_RESPONSE_Received_15693 //。
    }TRF797x_Status;

    谢谢、

    Ondrej

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

    您好 Ondrej、

    关于该主题的几点:

    1. 锁定块无法撤消、它是永久性的。
    2. 带有锁定块的标签将以错误代码进行回复、指示块已锁定、ISO15693将其定义为错误代码0x12。
    3. 锁定块命令不是我包含在 RFID 读取器代码中的命令、因为它的功能强大且不可逆、所以如果标签被锁定、它是来自其他 RFID 读取器。

    顺便说一下、获取 NO_RESPON_Received_15693只应在防冲突期间发生、这是基于固件的结构、因为它只用于来自 IRQ 的无响应中断、此中断被缺省禁用并且只用于 ISO15693防冲突算法。

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

    您好 Ralph、

    我今天再次进行了测量。 实际情况是、尽管操作后存在错误代码、但请求的值会记录在标签中。 但是、我仍然担心写入操作后的错误代码。

    第一张图片-请求写入带有标志0x22的段0x00

    第一个响应是确认 TX +清除 FIFO 请求的 IRQ

    现在、不可见的是发送0x94、实际上是命令0x14、并且在错误代码0103之后接收到第二个 IRQ - RX

    第二次尝试是使用标志0x62 -最后还报告了错误、但它是不同的错误。 如果请求正确、请参阅请求。

    在发出清除 FIFO 请求后、由 IRQ 确认 TX 操作

    最后一个 IRQ 确认 RX、请参阅不同的报告错误代码。 TX IRQ 之后还发送了0x94 (在图片上不可见)

    请参阅不同的错误代码。 对于0x22标志、它是0103;对于0x62标志、它是0113

    Las picture 显示了整个序列的时序-在 TX 和 RX IRQ 之间发送0x94代码-大约497.1ms

    问题是,我做了什么错,在单次写入(0x21命令)序列之后,我收到了提到的错误? 0x22和0x62标志选项之间的延时时间差是由程序结构引起的-固定值0x22和变量0x62。

    我尝试找到一些有关 ISO15693芯片和标签之间通信的更多信息、我从 SLO141获得信息、但与主机命令(MSP micro 中的软件)相关、而不是与 TRF7970A 直接通信。

    谢谢、

    Ondrej

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

    您好 Ondrej、

    好的、现在我已经清楚了。

    当使用标志0x22时、表示未设置选项位、因此不应发出0x14直接命令。

    仅当设置了 Option 位(标志中的位7、因此0100 0000)(在使用0x62发出时完成)时、才应发出0x14直接命令。

    我们的示例代码中准确地介绍了这一点:

    否则、如果(g_sTrfStatus = TX_COMPLETE)
    {
    //检查选项标志是否设置
    (如果(ui8ReqFlag & 0x40)
    {
    MCU_delayMillisecond (10);
    TRF79xxA_sendDirectCommand (TRF79XXA_TRANSATED_NEX_SLOT_CMD);//发送超出帧长度的
    
    
    IRQ (10);//发送超过帧长度(Rx30)、则为0x30 (毫秒);/等待时间为 TRF79xx30)
    
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ralph、
    有什么想法,为什么报告0x01 0x13错误代码? (从 SPI 监听器中查看图片)

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

    由于上述原因、当选项标志为0x22时、错误地发出选项标志的帧结束。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    拉尔夫
    我不确定、但您可能会看到不良图片-我上次的贡献中有7张图片。 前三张图片的标志为0x22 -响应为01 03、后三张图片的标志为0x62、响应为01 13、最后一张图片的总体图片具有验证时序的整个序列。 在图4中、您可以看到位于红线上的标志0x62、图6显示了 FIFO 响应00 01 13

    Ondrej

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

    您使用的是什么 ISO15693标签?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    德州仪器(TI)
    RI-IO3-112A-03 (Tag-it HF-I Plus????)

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

    我看到、我们的标签确实需要选项标志功能、因此通过0x94命令发送的0x62 w/EOF 是写入它们的正确过程。 0x13错误表示标签编程不正确。 不知道为什么会发生这种情况、可能与时序相关。 接收 TX 完成0x80后、用0x94发送 EOF 帧之前的延迟是多少?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    拉尔夫

    查看我在 SPI 屏幕截图中发布的文章的图片7、TX IRQ 信号在492ms 接收、0x94在497.2ms 发送-这意味着大约5ms。

    Ondrej

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

    请尝试将 TX 完成和发送0x94之间的延迟延长到10ms、如我们的示例代码中所示、看看这是否可以解决问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ralph、

    不知道原因、但我在 Arduino 代码中使用了与预期的"delay (10)"(比较 MSP 的 TRF7970A 原始源代码)不同的等待方法。

    用 delay (10)命令替换原始等待命令后、它现在可以完美地工作。 因此问题在于时间短。

    感谢你的帮助。

    Ondrej