主题中讨论的其他器件: TRF7960、 TRF7962A
我使用的是具有单个 RFID 标签的 TRF7961芯片。 我使用的是 ISO15693 RFID 标准中的芯片。 用于与 TRF7961通信的 MCU 是 PIC18。 使用 SPI 接口进行通信。 SPI 频率为2MHz。 我使用 SLOC247作为中断处理程序的参考。 每当发送响应大于9字节的命令时、就会出现问题、例如应该返回15字节的"Get system information command (2B)(获取系统信息命令(2B))"。 我获得的第一个中断用于传输,读取的 IRQ 状态寄存器值为0x80,这是正常的。 我获得第二个接收中断、IRQ 状态寄存器值为0x60、这意味着接收已开始、我读取 FIFO 状态寄存器、其值为0x28、这意味着 FIFO 中有9个可用字节、然后我读取这些字节。 现在、由于 SLOC 固件中的 IRQ 处理程序正在持续轮询 DO while 循环中的 IRQ 线路、我也在执行同样的操作、我看到 IRQ 线路保持高电平、我现在读取 IRQ 状态寄存器、如图所示 值为0x46、有时为0x42、但值应为0x40、这将使我能够读取命令响应中15的剩余6个字节。 我有两个问题
1) 1)为什么我得到0x46或0x42、即使我使用的是单个 RFID 标签、我也应该得到0x40、这将是正确的值、并允许我读取剩余的字节。
2) 2)每当要接收的数据大于9字节时、IRQ 线路在获得第一个响应中断后应持续保持高电平、直到接收到整个数据、或者我们将针对9字节的单独块获得单独的中断。 在我的情况下、在前9个字节之后、IRQ 线路保持高电平、直到我从 IRQ 状态寄存器中读取0x46。
可能导致此问题的原因是硬件或固件。