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.

[参考译文] 编译器/MSP432P401R:无法将 MCLK 设置为48MHz

Guru**** 2577385 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/603004/compiler-msp432p401r-cannot-set-mclk-to-48mhz

器件型号:MSP432P401R

工具/软件:TI C/C++编译器

我正在尝试使用 MAP_CS_initClockSignal (CS_MCLK、CS_HFXTCLK_select、CS_Clock_divider 1)将 MCLK 设置为48MHz;  

但 MCLK 仅保持在32768Hz。 以下是我的代码:

#include "msp.h"
#include 
#include 
#include 
#include 
#include 

Timer_A_PWMConfig pwmConfig ={
Timer_A_CLOCKSOURCE_SMCLK、//选择 SMCLK 作为时钟源
Timer_A_CLOCKSOURCE_DEVIDER_1、//分频器为1
10、//周期为32000个周期、实际周期为32000/CLK 频率
Timer_A_CAPTURECOMPARE 寄存器_1、
Timer_A_OUTPUTMODE_RESET_SET、
5 //占空比
};

uint32_t freqMCLK、freqSMCLK;


void main (void)
{
/*停止看门狗*/
MAP_WDT_A_HOLDTimer();


//MAP_PCM_setPowerState (PCM_AM_LDO_VCORE1);

cs_setExternalClockSourceFrequency (32000、48000000);//将 LFXTCLK 设置为32KHz 并将 HFXTCLK 设置为48MHz
/*我们必须将 VCORE 更改为1以支持48MHz 频率*/
MAP_PCM_setPowerState (PCM_AM_LDO_VCORE1);//工作模式、低压降、VCORE0;请参阅数据表第353页的表7-1
MAP_CS_initClockSignal (CS_MCLK、CS_HFXTCLK_select、CS_Clock_divider _1);//将 MCLK 设置为48MHz
freqMCLK = CS_getMCLK ();
MAP_CS_initClockSignal (CS_SMCLK、CS_MODOSC_SELECT、CS_Clock_divider _1);//将 SMCLK 设置为24MHz

freqSMCLK = CS_getSMCLK ();

/*将 GPIO2.4配置为 PWM 的外设输出、将 P6.7配置为按钮中断*/
MAP_GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P2、GPIO_PIN4、GPIO_PRIMARY_MODULE_Function);
MAP_GPIO_setAsInputPinWithPullUpResistor (GPIO_PORT_P1、GPIO_PIN1);
MAP_GPIO_clearInterruptFlag (GPIO_PORT_P1、GPIO_PIN1);MAP_GPIO_enableInterrupt (GPIO_PORT_P1、GPIO_PIN1);

/*将 Timer_A 配置为具有大约500ms 的周期和
*初始占空比为其10%(3200个节拍)*/
MAP_Timer_A_generatePWM (TIMER_A0_BASE、&pwmConfig);

while (1){

}

}

在 调用 CS_setExternalClockSourceFrequency (32000、48000000)之前、我还尝试调用 MAP_PCM_setPowerState (PCM_AM_LDO_VCORE1)、但仍然失败(仍为32768)。

我验证 了 MAP_CS_initClockSignal 函 数是否正常工作、因为如果我将 CS_HFXTCLK_select 更改为 sth、我可以获得正确的值。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的 LFXTCLK 也有问题、如果我致电:
    MAP_CS_initClockSignal (CS_MCLK、CS_LFXTCLK_select、CS_Clock_divider);
    freqMCLK = CS_getMCLK ();
    我得到32768
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Tom、

    感谢您来到 E2E 向我们提问! 在这两种情况下、您都需要调用 CS_startLFXT (variable);或 CS_startHFXT (variable);以使 LFXT 或 HFXT 晶体实际启动。

    您还需要设置合适的引脚以供晶振使用。 有关启动 HFXT 和 LFXT 的相应引脚和 driverlib 调用的更多详细信息、请参阅以下两个示例。

    HFXT: dev.ti.com/.../

    LFXT: dev.ti.com/.../
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Evan。 它现在正在工作。 我想知道我如何知道哪些引脚能够用于晶振用途?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Tom、

    请查看器件数据表以了解该信息、特别是 LFXIN 和 LFXOUT 以及 HFXIN 和 HFXOUT 引脚。

    数据表:www.ti.com/.../msp432p401r
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Evan。 请问 PJ.2在哪里? 我检查了地图图、但电路板上无法显示 PJ.2。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Tom、我重新阅读了这个问题、注意到您在电路板上提到的、而不是封装。 在电路板上、器件的布局方式使 LFXT 和 HFXT 已经引脚分配到晶体供您使用。 要查看布局、请转到 launchpad 页面并下载硬件设计文件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于不活动、我将关闭此线程。 如果您对本主题有其他问题、请随时回复重新打开主题。