大家好、我在该主题中的 Demian 的最后一个回复中列出了一个类似的问题:
我使用的是 sloc297。 在两个中断之间的短时间内、接收到两个中断、一个用于 RX、一个用于 TX、在生成 IRQ 中断时、IRQ 状态显示为0xC0、表示 TX 和 RX 都完成。 然后、我设置 TX 完成标志并读取 FIFO、获取(0x44、00)作为所呈现标签的 ATQA。 在此之后、防碰撞命令被运行、IRQ 状态在 IRQ 被触发后为0x0。
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.
大家好、我在该主题中的 Demian 的最后一个回复中列出了一个类似的问题:
我使用的是 sloc297。 在两个中断之间的短时间内、接收到两个中断、一个用于 RX、一个用于 TX、在生成 IRQ 中断时、IRQ 状态显示为0xC0、表示 TX 和 RX 都完成。 然后、我设置 TX 完成标志并读取 FIFO、获取(0x44、00)作为所呈现标签的 ATQA。 在此之后、防碰撞命令被运行、IRQ 状态在 IRQ 被触发后为0x0。
您好 Tajinder、
假设您已将 SLOC297移植到另一个 MCU?
听起来好像您没有及时处理 IRQ。
请参阅常见问题解答的第4.6节、其中涵盖了此确切案例、以解释问题和解决方案: http://www.ti.com/lit/pdf/sloa246
您好、Ralph、
正确、我已将 SLOC297移植到 NRF51。 我遇到的问题是 GPIOTE IRQ 中断优先级不能设置为高于 SPI IRQ 优先级、否则、在中断得到服务后读取 IRQ 状态期间 SPI 总线挂起。 将 SPI 优先级设置为高于 SPI 似乎会延迟 TX 完成和接收0xC0的服务。 TRF7963A 还存在硬件问题、即每次 SPI 写入后读取时、必须更改时钟优先级。 我认为这也会增加延迟、因为我必须在两个 SPI 实例之间切换才能实现这一点。
接收到0xC0后、我能够正确读取 ATQA。 在该状态后、是否有任何方法读取 UID?
谢谢、
Tajinder
您好 Tajinder、
您需要发送下一条命令来尝试获取 UID、但可能需要调整代码的工作方式、而不是将其视为错误情况、如果您不熟悉嵌入式开发、这将会很复杂。
不过、我建议您找到更好的主机 MCU、因为您在 RX 进入之前没有处理 TX 完成、因此不可避免地会出现数据损坏的情况。
或寻找更黑盒的 NFC 芯片。
TRF79xx 是要求主机 MCU 迅速处理 IRQ 和数据的收发器、它们功能强大且灵活、但并不总是适合具有很多限制的应用。 只是需要记住的一点。