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.

[参考译文] MSP430F5529:初始化后 UCS 出现意外行为

Guru**** 2979400 points

Other Parts Discussed in Thread: MSP430F5529

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/946188/msp430f5529-unexpected-ucs-behavior-after-initialization

器件型号:MSP430F5529

大家好、我很感谢您对 UCS 奇怪行为的想法:

我们有一个使用 MSP430F5529的设计、其中只有24MHz XTAL 连接到 XT2。 我们制造了数十块电路板、所有电路板都可以正常工作、但少数电路板无法正常启动。 经过一些调查、我发现固件在 UCSCTL4寄存器中的 SELM_5位置位(设置 MCLK=XT2)后崩溃。 我的初始化代码:

------

WDTCTL = WDTPW + WDTHOLD;//停止看门狗计时器

P5SEL |= BIT2+BIT3;//端口选择 XT2
UCSCTL6 &=~XT2OFF;//启用 XT2
UCSCTL6 |= XT2DRIVE_3;// XT2振荡电流至最大值
UCSCTL3 |= SELREF_2;// FLLref = REFO
//由于未使用 LFXT1,
//使用 LFXT1提供 FLL 可能会导致
UCSCTL4 = SELA_2+SELS_3+SELM_3;// ACLK = REFO、SMCLK = DCO、MCLK = DCO
UCSCTL6 |= XT1OFF;// XT1OFFG 标志置1

//循环直到 XT1、XT2和 DCO 稳定-在本例中循环直到 XT2稳定
操作
{
UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + DCOFFG);
//清除 XT2、XT1、DCO 故障标志
SFRIFG1 &=~OFIFG;//清除故障标志
} while (SFRIFG1&OFIFG);//测试振荡器故障标志

UCSCTL4 = SELA_2+SELS_5+SELM_5;// ACLK = REFO、SMCLK = MCLK = XT2 = 24MHz
UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + DCOFFG);
SFRIFG1 &=~OFIFG;

------

例如、如果我为 SELM_3更改 SELM_5、则软件运行正常(请注意 SMCLK=XT2=24MHz)、尽管某些外设由于 MCLK 频率不正确而无法正常运行。

起初、我认为可能是 XTAL 或负载电容器问题、但3个电路板已经显示了完全相同的行为。 另一件奇怪的事情是、由于此设计允许使用 USB 进行固件升级(使用 TI 自举例程)、因此在从更新过程软重启后电路板运行正常、但如果您重启电源、电路板将不会再次运行。 如果你对它进行调试、它会一直运行到 UCSCTL4、在那里、经过几条指令后、它只是崩溃并跳转到一个随机地址。

有什么想法会导致 UCS 的这种行为?

Gabriel

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

    发现了问题。 VCORE 设置为2级、在某些器件中、它显然无法保持24MHz MCLK。 已提高到最高级别(3)、现在所有板均按预期运行。

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

    嗨、Gabriel、

    很高兴您能找到此问题。  正确的是、您需要最大 Vcore 电平以24MHz 运行。   

    谢谢、

    JD