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.
工具与软件:
您好!
我们围绕 MSP430FR2433构建了一个传感器。 此例程包含以下步骤:1)系统在 GPIO 中断时唤醒;2)系统执行特定的测量相关操作、该过程大约需要几十到几百微秒;3)步骤2)完成后通过 UART 传输系统输出测量结果。
问题是第3)步的输出偶尔出现 gibberish/corrupted、在第2)步后添加100us 的任意延迟似乎能够在发生 gibberish 时降低频率、但在现场部署进行长期操作时不能完全消除 gibberish 输出。 或者、如果我们在步骤1)中通过 AT 命令通过 UART (而不是 GPIO 中断)唤醒系统、那么我们在多年的运行过程中从未观察到足够的输出。
从相关线程的讨论可以看出、这个问题似乎源自这样一个事实、即 SMCLK 作为 UART 的时钟源需要时间来稳定。 我希望我们可以使用 REFO/ACLK 作为时钟源来避免此类问题。 不幸的是、ACLK 不能用作 MSP430FR2433上的时钟源、这令我感到意外。
所以我的问题是、是否有可能以某种方式从第1步/GPIO ISR 中设置 UART 模块? 因此在执行第2)步后我们不必添加额外的延迟、否则这将开始降低电池寿命。
谢谢!
ZL
如果问题与 SMCLK 的稳定性有关、则必须等待它稳定下来。 它将取决于 SMCLK 的来源。
尊敬的舒尔茨先生:
感谢您的答复。
问题在于、FLL 本身需要额外的时间在其时钟源(REFO)上稳定。 在 UART TX 之前添加以下行未起作用:
while(CSCTL7 & (FLLUNLOCK0 | FLLUNLOCK1)); // Poll until FLL is locked
理想情况下、我们应切换到另一个实际上支持 ACLK 作为 UART 时钟源的 MCU、但我会想办法可以利用 FR2433挽救当前设计。
此致!
ZL
我不知道你为什么把它留在前面...
FLL 的一个细节是从低功耗模式唤醒后、它不在 ISR 中启用。 ISR 可在需要时执行此操作。 有很多事情要做。
如果所有其他操作都失败、请尝试向 UART 发送空字符以开始。 可能在您开始测量之前。 最好选择0xFF、因为它会在下一个起始位之前进行长时间运行。
我不知道您为何在……
我离开时希望我们只能切换到 ACLK/REFO 作为时钟源、我很惊讶地发现 FR2433不支持该时钟源、而 FR2422作为其他 FR2xxx MCU 的随机选择。
我将采用该解决方案。 再次感谢。
如果所有其他操作均失败、请尝试向 UART 发送空字符以开始。 可能在您开始测量之前。 最好使用0xFF、因为这会在下一个起始位之前进行长时间运行。[/QUOT]