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:如何禁用 NFC、然后重新启用它、并且仍然与现有状态机配合使用?

Guru**** 2456530 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/1027319/trf7970a-how-to-disable-the-nfc-and-then-re-enable-it-and-still-cooperate-with-the-existing-state-machine

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

我将 TRF7970A DLP (v4.7)与 MSP-EXP430F5529LP DevKit 搭配使用、并运行"F5529LP_TRF7970A_All_NFC_modes"示例。  我想针对短路情况禁用 NFC 操作、以降低功耗、直到发生事件、然后重新启动 NFC。  我已经查看过示例代码一段时间了、所以我非常熟悉状态机、但我一直不知道如何从 NFC_controller.c 中的"NFC_run()"函数获取"NFC_disabled"状态返回  在调用"NFC_disable()"后、是否有什么序列可重新启用 NFC?  此外、我需要将所有这些都放在什么位置、以便它能够与现有的状态机完美配合?  我目前正在从 t5t_app.c 中调用"NFC_disable()"

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

    我们的 TRF7970A 专家将在下周就此问题向您提出建议。

    此致、

    Uli  

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

    我让它工作、但可能不是以理想的方式工作。  不过、它能满足我的一切需求。  如果有人需要使用 USB 接口与 PC 应用程序进行交互、则该解决方案将不起作用、因为它会禁用 printf 调用并忽略 USB 流量。

    t5t_app.c->tT5T_stateMachine():

    添加了 T5T_DISABLED 状态、该状态调用"NFC_disable()"、然后调用"_disable_interrupt ()"、在 while 循环中等待按钮按压、然后调用"_enable_interrupt ()"

    nFC_controller.c:

    添加了名为"NFC_is_disabled"的布尔变量、并在 NFC_init()中将其分配为 false。

    nFC_controller.c->nFC_disable():

    将"NFC_IS _disabled"分配为 true。

    nFC_controller.c->nFC_run():

    在分配"sReturnNfcState"时、添加了一个 else if (nFC_is_disabled)、分配了 sReturnNfcState=NFC_disabled、并被称为 NFC_init ()。

    main.c->main():

    注释掉了"Serial_init()"以禁用 USB 通信、如果 NFC_run()返回的状态为 NFC_disabled、我会调用"NFC_configuration()"。

    mcu.c:
    立即从任何 printf 函数调用返回、以消除可能导致状态机锁定的 USB 流量、这可能是因为我禁用了中断、并且希望在禁用期间丢失返回的数据。  我不想在弄清楚如何解决问题后跟踪原因。

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

    一周是等待解决方案的漫长时间、但这正是我想的结果。

    目标:

    首先禁用所有 NFC 射频活动、并将功耗降至最低。  按下按钮开始射频活动。  RF 传输完成后、我想再次禁用 NFC RF 活动并等待再次按下按钮。  我觉得最好在 nFC_initiator.c 文件中完成、但我真的希望我不需要了解那个状态机。  我可能会在接下来的几天内完成这一切。  但是、即使我最终能够满足我的需求、 专家也希望长期拥有更优雅的解决方案。

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

    您好、Barnesy、

    很抱歉,因为我们的假期,所以我们的回答很晚了…

    我已经检查了代码、子例程 NFC_disable (void)从未在代码中使用。 而是使用不同模式(R/W、P2P、CE)的禁用子例程。 例如、在 main.c 第990行中使用了 NFC_RW_DISABLE (void)。 将 调用上述 rW_START_CMD 命令的行  

    NFC_RW_configure (g_sRWSupportedModes、g_sRWSupportedBitrates);

    以重新配置 RW 模式。

    这是您想要的吗?

    此致、

    Helfried