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:IRQ 问题- ISO15693

Guru**** 2589245 points
Other Parts Discussed in Thread: TRF7970A, MSP430G2553, MSP430F2370

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/631578/trf7970a-irq-problem---iso15693

器件型号:TRF7970A
主题中讨论的其他器件: MSP430G2553MSP430F2370

您好!

在过去的几天里、我将使用自己的源代码对 TRF7970A EVM 进行编程。 我想读取 ISO15693标签 ID。  

我的问题是 TRF7970一直在 IRQ 引脚(13)上以 大约2kHz 的频率向我发送中断、并且如果我读取了 IRQ 状态寄存器的值、我会得到(0xC6)。  

我的 TRF 初始设置为:  

delay_ms (2);
SPI_SS_HIGH;  
delay_ms (4);
使能;
delay_ms (1);

SPI_SEND_COMMAND (SOFT_INIT);
SPI_SEND_COMMAND (空闲);
delay_ms (3);
SPI_SEND_COMMAND (RESET);
delay_ms (2);

* SPI.txbuf = 0x31;//芯片状态控制
*(SPI.txbuf + 1)= 0x02;//ISO 控制
*(SPI.txbuf + 2)= 0x00;//ISO 模式选项1
*(SPI.txbuf + 3)= 0x00;//ISO 模式选项2
*(SPI.txbuf + 4)= 0xC1;//TX 定时器
*(SPI.txbuf + 5)= 0xBB;//TX 定时器低电平
*(SPI.txbuf + 6)= 0x00;//TX 脉冲长度控制
*(SPI.txbuf + 7)= 0x25;//RX 无响应等待时间
*(SPI.txbuf + 8)= 0x1F;//RX 等待时间
*(SPI.txbuf + 9)= 0x31;//调制器控制
*(SPI.txbuf + 10)= 0x40;//RX 特殊设置
*(SPI.txbuf + 11)= 0x87;//稳压器控制


SPI_WRITE (12、CHIP_STATUS_CONTROL);
delay_ms (1);

* SPI.txbuf = 0x3F;//启用无响应中断
SPI_WRITE (1、IRQ_MASK);

* SPI.txbuf = 0x00;
SPI_WRITE (1、NFC_TARGET_LEVEL);

以及用于读取标签 ID 的命令:

SPI_SEND_COMMAND (RESET);
SPI_SEND_COMMAND (Transmit、CRC);

SPI.txbuf[0]= 0x26;
SPI.txbuf[1]= 0x01;
SPI.txbuf[2]= 0x00;

FIFO_WRITE (3);

您能不能给我一些建议、告诉我我我发生了什么错误

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

    从较高层次看、您需要在字符串中包含"连续写入"和"待发送的字节数"

    如下所示:

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

    您好 Jan、

    Josh 所说的是正确的。

    也就是说、我不建议您从头开始开发自己的固件。 请利用 TI 示例、因为我们花费了大量的时间和精力来创建能够正确处理器件的强大代码、包括错误恢复。 你会试图自己沿着这条路走下去、从而为"发明车轮"做一个不好的事情。 相信我、这是一条漫长的道路。

    我建议利用以下代码示例: http://www.ti.com/lit/zip/sloc297

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Josh Wyatt:我的 FIFO_WRITE()函数将字节数写入 TX_LENGTH_寄存器1和2。 MOSI 线的波形与波形图中的波形相同。 因此、我认为向 FIFO 发送命令不是问题、而是处理中断。 因为当我发送这个命令时、TRF7970用 IRQ 和 IRQ 状态= 0x80进行响应、这意味着 TX 已经完成。 但我不知道到底发生了什么错误。
    Ralph Jacobi:我尝试打开了您发送给我的源代码、但无法在 CCS 中编译。 它显示以下错误:make:***没有规则使目标`clean '。 停下。 我是不是在想什么呢?

    感谢您的所有回复。

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

    代码示例针对 MSP430G2553、因此不确定您是否已经尝试将其修改为 MSP430F2370? 在没有任何修改的情况下、尽管它应该从.zip 正确编译、但没有听说有人对此有任何问题。 您是否对其进行了修改? 如果不是、您使用的是哪个 CCS 版本以及使用哪个编译器版本进行编译?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我明白了。 我的 CCS 为7.1.0、编译器版本为 TI v16.9.1.LTS。 我是否需要针对 MSP430F2370对其进行调整、我应该调整什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Jan、

    我尝试使用 CCS v7.2和 LTS v16.0.3、没有问题、但请注意、您需要将输出格式从"传统 COFF"更改为"eabi (ELF)"。

    如果您计划按原样使用整个 TI 示例、我可以找到我为 TRF7970AEVM 所做的端口、并尽快将其提供给您。 这对于我们两个人来说都比我更快、我会向您介绍所有需要的更改。

    您似乎已经移动了电阻器来支持 SPI 模式、而不是硬件上的并行模式、是这样吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、我将更新我的 CCS 版本。

    如果您可以为我提供 TRF7970AEVM 的源代码、那将会很好。

    是的、我已经移动了电阻器、因此 SPI 工作正常。

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

    您好 Jan、

    项目如下: e2e.ti.com/.../TRF7970AEVM_5F00_RFID_5F00_Reader_5F00_Demo.zip

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

    感谢您向我发送该项目。 我会尝试一下、并报告它的工作原理。

    此致、

    Jan Slapsak

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

    我尝试了您的项目、结果成功了。 我很好奇我的代码有什么问题、我想我的中断处理没有被正确写入。 我还注意到、如果在射频接收器和发送器打开时 TRF7970的某个字段中存在标签、并且如果从该字段中删除标签、则 TRF7970会发送中断。 现在、我要在从标签获取 ID 后禁用射频发送器和接收器、就这样。 感谢你能抽出时间并提供帮助。

    此致。

    Jan Slapsak