主题中讨论的其他器件: DLP-7970ABP
您好!
我的客户正在测试在 SPI 接口上连接的 TRF7970A。 他们需要知道 EN 输入是否可以永久连接到 Vcc 和 EN2至 GND、或者如果他们需要与 RFID 标签通信、他们是否需要更改逻辑。 他们还需要更好地了解 用于 TRF 控制器的命令序列、以便从用户存储器中写入和读取数据。
谢谢、此致、
Alberto
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.
您好!
我的客户正在测试在 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、
它的工作原理。 我已经验证了我的 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。
您好 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
您好、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 之后
拉尔夫
仅供我参考-如何锁定和解锁射频标签中的某些块? 也许、我已经锁定了 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、
关于该主题的几点:
顺便说一下、获取 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)