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.

[参考译文] MSP430F5329:能否从 REFO 精确生成22118400Hz?

Guru**** 2502065 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/685954/msp430f5329-can-i-generate-exactly-22118400-hz-from-the-refo

器件型号:MSP430F5329

22118400是 UART 的一个非常方便的数字   

它恰好是 REFO 频率的675倍32768Hz。  

当我尝试从 driverlib 中使用 UCS 例程时,我得到 22085632 Hz,它与我所需的频率完全是32768 Hz,根据 UCS _getMCLK ();

因此、我的第一个想法是将分频值从675更改为676、这使其恰好偏离-32768 Hz。 我认为调制器应该解决这种问题。   

14745600 Hz 似乎正常工作、它恰好是32768的450倍。  

它感觉不正确。 我是在这里遗漏了什么东西还是做了一些错误的事情? 或者实用程序中是否存在一些舍入错误?

以下是我的代码:  


void CLK_InitFast (void)
{
uint16_t status;
//我认为一切完成后、时钟为:
// ACLK = 32768Hz 使用 REFO
// MCLK = 14、745、600Hz 来自 REFO
// SMCLK = 7、372800 Hz 来自 REFO
//设置 DCO FLL 基准= REFO
//关闭任何外部晶振

if (PMM_GET_CORE_LEVEL ()< 3)
{
状态= PMM_setVCore (PMM_CORE_LEVEL_3);
if (status = STATUS_FAIL) while (1);//我们有问题。 调试时,在此处停止
。}

PMM_enableSvsHSvmH ();//在此模式下,我们有高侧,所以打开。
PMM_enableSvsLSvmL ();//我们需要在此模式中启用低侧。
PMM_enableSvsLReset ();//我们永远不会看到低电压事件

UCS_TurnOffXT1 ();//确保外部32.768kHz 晶体关闭
UCS_TurnOffXT2 ();//确保外部14.7456MHz 晶体关闭
_BIC_SR (SCG0);//确保 FLL 打开。

UCS_initClockSignal (UCS_FLLREF、
UCS_REFOCLK_SELECT、
UCS 时钟分频器1);
//设置 ACLK = REFO
UCS_initClockSignal (UCS_ACLK、
UCS_REFOCLK_SELECT、
UCS 时钟分频器1);

UCS_initClockSignal (UCS_SMCLK、
UCS_DCOCLKDIV_SELECT、
UCS 时钟分频器2);

//UCS_initFLSettle (14745、// kHz
// 450);// 14745.6/32.768 = 450 --获得14745600 Hz

UCS_initFLSettle (22118、// kHz
675);// 22118.4/32.768 = 675 --获得22085632 Hz


//验证时钟设置是否为预期
的时钟值[0]= UCS_getMCLK ();
时钟值[1]= UCS_getSMCLK ();
时钟值[2]= UCS_getACLK ();
return;
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Kipton、
    我很想知道使用676时、-32768的意思是什么、返回的频率是多少?

    您能否在引脚上输出时钟并使用示波器进行检查? 这将确定 getMCLK 或 init 函数中是否存在舍入错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的意思是它超过了32768、报告的频率为22151168

    675-> Target 2118400、UCS_getMCLK ()返回22085632、Difference (Target - UCS_getMCLK ())= 32768
    676 -> Target 2118400、UCS_getMCLK ()返回22151168、Difference (Target - UCS_getMCLK ()=-32768

    我今天将尝试将其路由到引脚。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Kipton、
    有更新吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    还没有。 我被拉至代码的另一部分、在该部分、我们将下降到 VLO 时钟并每小时唤醒以读取温度。  

    我还没有机会回到这个问题上。  

    基普