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.
工具与软件:
大家好!
我们正在尝试在使用16MHz 陶瓷振荡器(ABM8AAIG-16.00MHZ-V2R-T3)的定制电路板中使用 MSP430FR5969。 我们正在尝试将 HFXT 振荡器配置为时钟源、
我们已经参考了提供的示例代码并遵循了相同的代码、但代码最后停留在循环中
问题: OFIFG 位从未复位。 该位是一个振荡器故障标志、必须先清除该标志、然后再次进行检查、但在每次清除后会设置该标志。
测试: 我们在完成时钟切换后检查 SMCLK 时钟、以验证是否发生了切换。 因此、我们已将引脚 P3.4设置为 SMCLK。
如果删除 loop condition and test、程序将运行。 为了进行检查、我们实施了 PWM 并将其运行了8000个计数的50%占空比。 如果我们计算一个 CRO 上可用的实际频率、我们得到大约5MHz。
我们正在执行的代码/配置:
void main()
{
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
PM5CTL0 &=~μ H LOCKLPM5;//禁用高阻抗
P3DIR |= BIT4; //输出 SMCLK
P3SEL1 |= BIT4; //SMCLK 功能选择
PJSEL0 |= BIT6 | BIT7; //对于 HFXT
FRCTL0 = FRCTLPW | NACCESS_1; //如果 clk 大于8MHz、则 FRAM 处于等待状态
CSCTL0_H = CSKEY >> 8; //解锁 CS 寄存器
CSCTL1 = DCOFSEL_6; //将 DCO 设置为8MHz
CSCTL2 = SELA__LFXTCLK | SELS_HFXTCLK | SELM__HFXTCLK;
CSCTL3 = 0; //将所有分频器设置为1
CSCTL4 = HFXTDRIVE_3 | HFFREQ_3; //提供最大驱动和频率范围16-24
MHz
应执行的操作
{
CSCTL5 &=~(HFXTOFFG); //清除 XT1和 XT2故障标志
SFRIFG1 &=~OFIFG;
—while (SFRIFG1&OFIFG); //测试振荡器故障标志
CSCTL0_H = 0; //锁定 CS
while (1)
{
;
}
}
任何建议都是非常感谢的
谢谢你
尊敬的 Ruthvik:
因为我现在没有要进行测试的器件、所以我想您可以尝试参阅之前的 E2E 文章、并参阅我们的用户指南以检查它是否可以解决您的问题。
(+) MSP430FR5969:MSP430FR5969外部16MHz 时钟问题(基于有关同一主题的其他主题)- MSP 低功耗微控制器论坛- MSP 低功耗微控制器- TI E2E 支持论坛
(+) MSP430FR2422:MSP430FR2422晶体初始化问题、OFIFG 标志始终为高电平- MSP 低功耗微控制器论坛- MSP 低功耗微控制器- TI E2E 支持论坛
(+) MSP430FR6928:使用 DCO 作为主时钟源时的 OFIFG 标志- MSP 低功耗微控制器论坛- MSP 低功耗微控制器- TI E2E 支持论坛
此致、
Janz Bai
尊敬的 Janz:
感谢您的答复、我们在论坛上发布了类似的帖子、但大多数都没有适当的解决方案或是其他问题的结果。
谢谢。此致、
Ruthvik R
问题已解决。
该问题是由于始终设置了 OFIFG 而导致的。 这是一个振荡器故障标志、当 HFXT、LFXT 等任何振荡器故障标志... 设置。
默认情况下、在我们的应用中、我们仅使用 HFXT 振荡器和 DCO 作为备份。 根据数据表、LFx 引脚是通用 GPIO、除非有 LFXT、并按此设置。 但对于辅助时钟、默认源是 LFx、即使 LFXT 不存在、也会设置该源、这会导致设置 LFXT 故障、从而设置 OFIFG。 在我们清除 LFXT 的所有依赖项后、我们就能够毫无问题地将时钟切换到 HFXT。
另外、在阅读一些帖子时、我们必须了解需要 FRAM 的等待订书机。 这也有助于解决未来的问题。
谢谢。此致、
Ruthvilk R
尊敬的 Ruthvik:
听起来很好、您已经解决了它。 恭喜!
此致、
Janz Bai