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.

[参考译文] MSP430F67641A:无法将内核电压设置为其预期的3V

Guru**** 657500 points
Other Parts Discussed in Thread: MSP430F67641A, MSP430F6736, MSP-TS430PZ100B
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/999637/msp430f67641a-could-not-set-core-voltage-to-its-intended-3v

器件型号:MSP430F67641A
主题中讨论的其他器件: MSP430WAREMSP430F6736MSP-TS430PZ100B

尊敬的团队:

我们正在根据您的评估模块设计多相能量计及其纯粹的定制设计。 电路的核心部分保持不变(电压、电流测量、引脚映射)、但仅更改了输出(显示屏、外部通信)。

我可以使我们的原型正常工作、但我看到内核电压有一些问题。 根据您的示例代码、我使用下面的将内核电压设置为3V、但仍然可以看到导通电压(引脚23 VCORE)始终为1.8V、将晶体限制为8MHz。 (控制器由3.3V 电源供电)

这是我从您的样片中选择的以下代码。 如果我没有什么东西,可以请你给我一个好机会吗? 或者、内核电压取决于我们目前不关注的一些辅助电源。

注意:目前我们不使用任何辅助电源、外部32kHz 晶体未安装并保持开路。

   - AuxVCC1&2被接地

   -DVSYS (20&74)已接地并盖住接地

   - AuxVCC3保持开路、未安装外部32kHz 晶体

空 System_Init()

PMMCTL0_H = PMMPW_H;
SVSMHCTL&=~SVSMHRRL_7;
SVSMHCTL|=SVSMHRRL_4;
AUX3CHCTL = AUXCHKEY | AUXCHEN | AUXCHC_1 | AUXCHV_1;
AUXCTL0 = AUXKEY;
AUXADCCTL = AUXADC | AUXADCSEL_0 | AUXADCR_0;
AUXCTL2 |=AUX0LVL_6 +AUX1LVL_5 + AUX2LVL_5;
AUXIE |=(AUX0SWIE | AUX1SWIE | AUX2SWIE | AUX0DRPIE | AUX1DRPIE | AUX2DRPIE | AUXMONIE);
PMMCTL0_H = 0;

SetVCore (3);
_bis_SR_register (SCG0);//禁用 FLL 控制循环*
UCSCTL6 =(UCSCTL6 | XT1DRIVE_3);//针对 XT1启动的最高驱动设置
while (SFRIFG1和 OFIFG)

/*检查 OFIFG 故障标志*/
UCSCTL7 &=~(DCOFFG | XT1LFOFFG | XT2OFFG);/*清除 OSC 故障标志*
SFRIFG1 &=~OFIFG;/*清除 OFIFG 故障标志*/

UCSCTL6 =(UCSCTL6 &~(XT1DRIVE_3));//将驱动降低至较弱的状态*/

UCSCTL0 = 0;
UCSCTL1 = DCORSEL_6;//将 RSELx 设置为 DCO = 25MHz */
UCSCTL2 = FLLD__4;
UCSCTL2 |=(192 - 1);//将 DCO 乘法器设置为25MHz */
/*将 FLL 设置为32768*4*192 => 25165824Hz */
_BIC_SR_register (SCG0);/*启用 FLL 控制环路*

UCSCTL5 |= DIVS__1 | DIVA_32;
UCSCTL4 = SELM__DCOCLK | SELESS__DCOCLK | SELA_XT1CLK;/* 24MHz MCLK、24MHz SMCLK、ACLK (25MHz/32)*/

_DELAY_CYCLES (100);

问题2:您是否有完整的能量计工作示例代码(https://www.ti.com/tool/EVM430-F67641)?

我可以访问其原理图、但无法直接获取完整的工作项目。 我得到了一些代码、它太难将其组合在一起以获得一个可编译的代码。

提前感谢、

Surya

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

    VCORE 是通过器件 VCORE 引脚上的相关电容器调节的内核电源输出。 VCORE 的最大值为3 (它只是数字值、而不是电压)、有了这个最大值、3.3V 电源器件应该在25MHz 下工作(请查看器件数据表、因为 f5xx/6xx 系列中的某些器件被限制在20MHz)。 VCORE 引脚上的电压接近2V (而非3V)。

    VCORE 电压应该逐步增加、直到达到最大值、所以如果已经包含在内部的话、检查这个函数 SetVCore 来找到它。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用您的示例代码中的 userid="318970" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/999637/msp430f67641a-could-not-set-core-voltage-to-its-intended-3v。]我使用以下命令将内核电压设置为3V、但仍然会看到开启电压(引脚23 VCORE)始终为1.8V、将晶体限制为8MHz。 [/报价]

    MSP430F67641A 数据表给出了 VCORE 引脚在不同 PMMCOREV 设置下的典型电压:

    由于数据表仅提供典型值、 因此在 PMMCOREV = 3时测量 VCORE = 1.8V 不一定是一个问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="318970" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/999637/msp430f67641a-could-not-set-core-voltage-to-its-intended-3v ]SetVCore (3);

    查看 MSP430Ware 3.80.13.03、SetVCore 函数作为 while 循环实现、该循环会将 PMMCOREV 设置一次递增一步、 并且 PMMCOREV 的复位值为零。

    虽然数据表只给出 VCORE 电压的典型值、但是如果你在调试器中的 SetVCore 函数的步骤中监控 VCORE 电压、你应该能够检查每个步骤中的 VCORE 电压是否增加以确认 SetVCore 函数是否起作用。

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

    尊敬的所有人:

    非常感谢您的回复。 这确实让我对内核电压电平的理解变得清晰、在我的原型中应该是这样。

    问题1:我最担心的是、使用上面提到的相同代码将晶体设置为25MHz 不工作、并且时钟强制设置为8MHz。 如果我必须使用全部25MHz 容量,是否有任何依赖关系?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="318970" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/999637/msp430f67641a-could-not-set-core-voltage-to-its-intended-3v/3693396 #3693396"]我最担心的是,使用上面提到的相同代码将晶体设置为25MHz 不起作用,而时钟强制设置为8MHz。

    您能不能澄清强制时钟频率为8MHz 的原因吗?

    此外、第一个帖子中的代码尝试启动 XT1、但也提到:

    [引用 userid="318970" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/999637/msp430f67641a-could-not-set-core-voltage-to-its-intended-3v "]未安装外部32kHz 晶体并保持打开

    您能否说明连接到 XIN / XOUT 引脚的是什么?

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

    再次感谢您的快速回复。

    XIN/XOUT 引脚保持打开状态、卸载。  

    [引用 userid="91588" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/999637/msp430f67641a-could-not-set-core-voltage-to-its-intended-3v/3693403 #3693403"]

    您能不能澄清强制时钟频率为8MHz 的原因吗?

    [/报价]

    我不确定是什么强制时钟为8。 我希望我的应用以25MHz 运行、并使用以下代码。 当我使用此代码时、由于某些未知原因、我可以达到其8MHz 的最大时钟(使用_delay_cycles 进行检查)。 如果我使用正确的代码将时钟配置为以25MHz 运行,您能提供帮助吗?

    [引用 userid="318970" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/999637/msp430f67641a-could-not-set-core-voltage-to-its-intended-3v "]

    SetVCore (3);
    _bis_SR_register (SCG0);//禁用 FLL 控制循环*
    UCSCTL6 =(UCSCTL6 | XT1DRIVE_3);//针对 XT1启动的最高驱动设置
    while (SFRIFG1和 OFIFG)

    /*检查 OFIFG 故障标志*/
    UCSCTL7 &=~(DCOFFG | XT1LFOFFG | XT2OFFG);/*清除 OSC 故障标志*
    SFRIFG1 &=~OFIFG;/*清除 OFIFG 故障标志*/

    UCSCTL6 =(UCSCTL6 &~(XT1DRIVE_3));//将驱动降低至较弱的状态*/

    UCSCTL0 = 0;
    UCSCTL1 = DCORSEL_6;//将 RSELx 设置为 DCO = 25MHz */
    UCSCTL2 = FLLD__4;
    UCSCTL2 |=(192 - 1);//将 DCO 乘法器设置为25MHz */
    /*将 FLL 设置为32768*4*192 => 25165824Hz */
    _BIC_SR_register (SCG0);/*启用 FLL 控制环路*

    UCSCTL5 |= DIVS__1 | DIVA_32;
    UCSCTL4 = SELM__DCOCLK | SELESS__DCOCLK | SELA_XT1CLK;/* 24MHz MCLK、24MHz SMCLK、ACLK (25MHz/32)*/

    _DELAY_CYCLES (100);

    [/报价]

    我尝试将这部分代码添加到示例程序中、因为晶体的强制频率如上所述限制为8MHz。 具有这部分代码或不具有相同的时钟结果。 这只是我的一个盲目的尝试!

    [引用 userid="318970" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/999637/msp430f67641a-could-not-set-core-voltage-to-its-intended-3v ]PMMCTL0_H = PMMPW_H;
    SVSMHCTL&=~SVSMHRRL_7;
    SVSMHCTL|=SVSMHRRL_4;
    AUX3CHCTL = AUXCHKEY | AUXCHEN | AUXCHC_1 | AUXCHV_1;
    AUXCTL0 = AUXKEY;
    AUXADCCTL = AUXADC | AUXADCSEL_0 | AUXADCR_0;
    AUXCTL2 |=AUX0LVL_6 +AUX1LVL_5 + AUX2LVL_5;
    AUXIE |=(AUX0SWIE | AUX1SWIE | AUX2SWIE | AUX0DRPIE | AUX1DRPIE | AUX2DRPIE | AUXMONIE);
    PMMCTL0_H = 0;[/报价]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="318970" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/999637/msp430f67641a-could-not-set-core-voltage-to-its-intended-3v/3693404 #3693404"]如果我使用正确的代码将时钟配置为以25MHz 运行,您能提供帮助吗?

    MSP430F6736的附加项目基于 driverlib、并使用 REFO 作为 FLL 时钟源来设置25MHz 时钟。

    在 没有安装 XT1晶振的 MSP-TS430PZ100B 上运行、 而 AuxVCC1、2和3电源经常被保留。

    程序每1、000、000、000个时钟切换一次 P1.0。 考虑  到 REFO 在室温下具有±1.5%的容差、LSA 表明 CPU 频率为~24.86MHz、处于预期范围内:

    e2e.ti.com/.../ucs_5F00_ex1_5F00_DCO25MHz.zip

    [引用 userid="318970" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/999637/msp430f67641a-could-not-set-core-voltage-to-its-intended-3v/3693404 #3693404)]我不确定强制时钟为8的原因。 我希望我的应用程序以25MHz 运行、并使用以下代码。

    我尝试了您的代码片段、如果步入 调试器、则会卡在尝试清除振荡器故障标志的循环中。 布置的代码片段不会写入 UCSCTL3、 UCSCTL3的复位值选择 XT1CLK 作为 FLL 时钟源。 虽然用户指南建议 UCS 模块故障安全运行应该导致 REFO 在晶振故障发生时被自动选择为 FLL 的基准源、这也许是由于某种原因而没有发生的。

    如果没有安装晶体、则显式 选择 REFO 作为 FLL 基准源可能更可靠。

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

    非常感谢您的支持! 我很快就解决了这个问题。

    现在、我能够让器件以您的示例中的24MHz 全时钟频率运行。

    我感谢你努力准确再现我的情景、并过早提供正确的建议。 我们从您那里获得的这种支持是我们始终首先在市场上寻找德州器件的主要原因!

    干得不错、再次感谢您的快速支持。