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:将 TRF7970A 演示代码移植到 STM32F207

Guru**** 1468350 points
Other Parts Discussed in Thread: MSP-EXP430F5529LP, TRF7970A
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/847546/trf7970a-porting-trf7970a-demo-code-to-an-stm32f207

器件型号:TRF7970A
主题中讨论的其他器件:MSP-EXP430F5529LP

您好!

我一直在研究 MSP-EXP430F5529LP、尝试运行 MIFARE DESFire EV1 AES 身份验证应用报告。 我已成功读取/写入/配置 DESFire EV1和 EV2卡。 我现在正在尝试将工作中的固件移植到 STM32F207;但在检测卡时遇到一些问题。  

我将使用以下命令配置 TRF7970A:

命令:

  1. 软初始化命令
  2. IDLE 命令
  3. 复位 FIFO 命令

寄存器配置:

  1. ISO 控制寄存器:0x88
  2. ISO 14443 TX 选项寄存器:0x01
  3. RX 等待时间寄存器:0x07
  4. 调制器控制寄存器:0x01
  5. RX 特别设置寄存器:0x30
  6. 稳压器控制:0x01
  7. NFC 目标方水平寄存器:0x00

其余寄存器保持其默认状态。 此配置在 MSP 开发板上工作正常。 当固件移植到 stmf207 (ARM cortex m3处理器)时、此配置似乎无法正常工作。

检测到 MIFARE Classic 卡时没有问题。 有时会检测到 EV2卡、根本不会检测到 EV1卡。 我似乎无法找出问题所在。

 

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

    您好、Wilmer、

    可能需要为 ARM M3重新编译 AES 库、除非您已经有了新库。

    除此之外、NFC 非常基于计时、因此鉴于处理器速度、您可能需要调整延迟。

    SPI 速度也是多少?

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

    现在我忽略身份验证。

    STM32上的系统时钟为25MHz、对于 SPI_CLK、我将其除以16。  1.5625MHz。 这是否太慢? 在 MSP 开发板中、SPI_CLK 配置为2MHz。

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

    您好、Wilmer、

    最小 SPI 时钟为2MHz、在第11页的第5.4节中进行了规范。

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

    感谢你的帮助! 我不能相信我错过了这个机会。 这肯定会使事情变得更好。 现在检测到 DESFire EV2和 Classic 卡、但未检测到 EV1卡。

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

    您好、Wilmer、

    从技术角度来看、EV1和 EV2的检测没有区别。 我知道 EV1标签因在13.56MHz 频率下关闭而闻名、可通过减小读取范围来帮助提高安全性。 这些 EV1卡的问题可能是您的读取器天线调谐不好、因此无法对其进行调谐(如果是、大多数可能是由于带宽较窄)。 您可以在此处查看有关适当天线调优的详细信息: http://www.ti.com/lit/pdf/sloa241 -如果您希望 Q 值大约为7、

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

    您好!

    事实证明问题是天线。 我将继续使用 EV2卡来完成此项目、因为它们看起来无缝工作。  

    我有最后一个问题、我成功地完成了防冲突过程的两个级联级别、并且能够接收到卡的 UUID。 现在的问题是、我在传输 RATS 命令时没有得到任何响应。 我已确保在启用 CRC 的情况下发送正确的参数(128字节最大组帧0x70)、但未接收到 ATS 响应。 如果需要、我可以私下共享我为第4层进程编写的代码。

    感谢您迄今为止为我提供的所有帮助

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

    您好、Wilmer、

    确保您使用 CRC 发送。 它应如下所示:

    G_pui8TrfBuffer[ui8Offset++]= 0x8F;//重置 FIFO
    g_pu8TrfBuffer[ui8Offset++]= 0x91;//使用 CRC 发送
    g_pu8TrfBuffer[ui8Offset++]= 0x3D;//连续写入 g_pu8TrfBuffer[ui8+
    字节长度
    为0x8+;//中间字节偏移长度为0x8+;//输出长度为0x8u+;输出长度为0x8u+字节//以字节为单位的数据包长度-发送字节长度的低位和中断半字节 g_pui8TrfBuffer[ui8Offset++]
    = 0xE0;//RATS 命令
    g_pui8TrfBuffer[ui8Offset++]= 0x70;//RATS 参数:128字节最大接收、CID = 0 

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

    您好、Ralph、

    在您的帮助下、我已让我的读取器成功地写入/读取/配置 MIFARE DESFire EV2卡;但我注意到、在 ISO14443 4层过程中(以及随后的数据交换和身份验证)、读取器的采集范围大幅下降、这是防碰撞过程的结果。

    在 MSP430开发板上进行测试时、这一点并不明显。 在所有过程中、读取范围都很好。  MSP430板为 TRF7970A 提供3.3V 电压。 但是、我要移植到的 STM32 (和 TRF)仅提供2.8V 电压。

    我想知道电源电压的这种差异是否会影响读取范围、以及固件(TRF 的寄存器配置)中是否有任何可以帮助解决此问题的东西? 我无法更改系统的输入电压。

    我已经尝试更改 稳压器和 I/O 控制寄存器(0x0B)以手动将稳压器配置为其最大设置;但这似乎没有帮助。  

    谢谢你

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

    您好、Wilmer、

    如果您处于2.8V、请确保将稳压器控制设置为0x00。 如果您尝试将其设置得更高、则会对性能产生负面影响、因为器件会尝试在电源无法满足的电压下驱动元件。

    除此之外、在较低的电压下、您将获得较低的读取范围。 加上读取范围对于更长的数据包会带来更大的挑战。 原因是 RFID 读取器为标签提供了充满电的射频场、但对于长时间的应答、标签侧会使用更多能量、因此与仅识别相比、读取数据的范围会缩小。

    最终、对于使用 EV2卡的系统而言、2.8V 非常低。

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

    因此、我在每个 Trf797xRawWrite()之后添加了一个小延迟(1ms)。  这使得检测效果更好、范围也增加了、EV2卡 的读取 距离比天线高1cm 左右。 为什么会出现这种情况?

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

    您好、Wilmer、

    在给定持续时间的情况下、我猜这是因为它允许标签在命令之间收集更多的功率。 这通常是短暂延迟提高性能的原因、尽管通常只能在动态标签上看到这种情况。 EV2可能会消耗更多电能。 您可能仍需要检查天线调优以确保带宽良好。 适当的调整也会有助于实现这一点。 即使对于 EV1/EV2、1cm 也非常短。