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.

[参考译文] 射频内核无法正常工作 — PROP_ERROR_NO_FS

Guru**** 2463430 points
Other Parts Discussed in Thread: CC1312R, SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1533638/rf-core-not-working---prop_error_no_fs

器件型号:CC1312R
主题: SysConfig 中讨论的其他器件

工具/软件:

我已经开发了 CC1312R 的定制电路板。 该电路板价格低廉、仅包含带有所需无源器件的 CC1312R MCU 本身。 其预期用途是用作射频桥。

我可以成功运行 MCU 端代码(例如示例)pwmled2、从而确认基本电源和 JTAG 正常运行。

但是、当我尝试像这样运行射频示例代码rfPacketTX(未修改 SDK)时、代码会失败、并产生PROP_ERROR_NO_FS错误。
此外、使用 SmartRF Studio 7 时、尝试启动 TX 或 RX 会导致以下错误:

CMD_FS executed - status: 0x0809 - ERROR

我已经验证了电源电压:

  • VDDR = 1.68V  (由内部 LDO 进行稳压)

  • DCOUPL = 1.27V  

这表明内部稳压器按预期工作。

我想了解射频内核无法初始化频率合成器的原因、以及哪些设计或布局问题可能导致CMD_FS始终出现故障。

我附上了一个电路板布局和原理图片段。 如果需要更多详细信息、我很乐意提供。

提前感谢您。

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

    您好 Luke、

    该问题可能与 48MHz 晶体未启动有关。 CMD_FS 尝试在启动频率合成器之前启动晶体。

    我看到在您的设计中、晶体有外部负载电容器。 默认情况下、CC1312R1 示例工程假设未安装外部电容器、并使用内部电容器阵列。 因此、负载电容可能过高、导致晶体无法启动。

    您可以尝试以下 2 种方法之一:

    能否在 SysConfig 中禁用内部电容器阵列?

    打开 packetTx 工程的.syscfg

    转到“Device Configuration“

    启用 XOSC Cap 阵列修改

    将 Cap 阵列增量设置为 0xD5

    2.移除外部负载电容器。

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

    尊敬的 Diego:

    感谢您的答复。

    我已按照建议测试了这两种配置:

    1. 带有负载电容器的电路板:我应用了 0xD5 电容器阵列修改、这应考虑外部电容器。 这导致示例工程 (rfPacketTx) 和 SmartRF Studio 的行为相同 — 无射频输出,相同的错误。

    2. 不带负载电容器的电路板:我物理上移除了负载电容器并重新测试。 同样、该行为保持不变。

    在 SmartRF Studio 中、我对两种配置应用了电容器阵列调优。
    对于具有负载电容器的电路板、我使用最低设置 (0xD8) 来有效地禁用内部电容器。
    对于没有负载电容器的电路板、我以 5 为步长扫描了整个电容器阵列范围、从–40 到+23。

    在所有情况下、结果都是相同的、经过一段时间后、显示了以下弹出窗口:
    “发送数据包失败。 固件错误:程序计数器超出范围 (0x10022fa)“

    如果您有任何其他建议、或者还有我应该查看的其他配置方面、请告诉我。

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

    您好 Luke、

    我想确认您电路板上的晶体是否可以启动。 在 rfPacketTx 示例中、您可以执行以下操作:

    在 rfPcketTx.c 文件中、文件顶部包含以下头文件:

    #include DeviceFamily_constructPath(driverlib/osc.h)
    #include DeviceFamily_constructPath(driverlib/ddi.h)
    #include DeviceFamily_constructPath(driverlib/setup_rom.h)
    

    然后在 mainThread () 函数的开头添加以下内容:

    //Turn on Xosc
    OSCHF_TurnOnXosc();
    // Try to switch to Xosc
    while(OSCHF_AttemptToSwitchToXosc() == 0){}
    while(1){}
    

    最后、编译并加载固件、并在调试模式下检查程序是否卡在 while (OSCHF_AttemptToSwitchToXosc ()== 0){}、或者是否到达 while (1){}。

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

    您好 Diego、在这两种情况下、代码都达到了 while (1){}、带和不带负载上限。

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

    我不完全确定这是根本原因、但我注意到 安装了 24MHz 晶体、而不是预期的 48MHz 版本。 目前我没有 可用的 48MHz 晶体来确认这一点、但一旦我有机会使用正确的元件进行测试、我将更新该主题。 我很有信心这样可以解决问题。

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

    您好 Luke、

    这很可能是频率合成器无法启动的根本原因。

    请告知我们是否使用 48MHz 晶体解决了问题。