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.

[参考译文] MSP430I2021:DCO运行缓慢。 11.86 MHz而不是16.348 MHz

Guru**** 2546020 points
Other Parts Discussed in Thread: MSP430I2021

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/654024/msp430i2021-dco-is-running-slow-11-86-mhz-instead-of-16-348-mhz

部件号:MSP430I2021

在对使用MSP430i2021微控制器的主板上的UART通信故障进行故障排除时,我发现MSP上的固定频率DCO实际上以大约11.86 MHz而不是数据表指定的16.384 MHz运行。 有什么想法会导致这种情况?  

我一直在测试的UART代码非常基本(尝试了基本的广播和回声程序)。 使用示波器诊断问题时,我可以看到UART波形位看起来正确,改变波特率可以适当地缩放波形,但每个位的持续时间都比应该的要慢。 然后我将SMCLK设置为DCO (即1的除数)并将其输出到pin WFP 1.1 上。 在连接了内窥镜之后,我意识到DCO实际上运行在大约11.86 MHz (参见下面的内窥镜图像)。 调整寄存器以根据此时钟频率设置波特率会导致成功的UART通信。

 

我想知道,究竟是甚么原因才会导致《设计条例》出现这样的差异。 我正在使用DCO的内部电阻器模式,因此我已根据数据表建议将ROSC与AVSS绑定。 我知道有一个校准寄存器CSIRFCAL,所以我想知道这是否是导致DCO变慢的原因。 调试时,我看到此寄存器读数为0。 我是否需要执行某种频率校准? 如果是,我该怎么做?

请告诉我我可以如何解决此问题。 谢谢!

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

    MSP430i20xx启动代码必须首先从low_lever_init.c执行_system_pre_init函数,然后才能调用main函数,这在CCS/IAR示例项目中默认提供。 请确保代码中包含此信息,以便将DCO校准为16.384 MHz。 您可能还需要确保DCO校准(0x13D2至0x13D7)的TLV设备描述符值未被以某种方式擦除。

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

    Ryan,

    在项目中包含low_leve_init.c文件就像一个魅力! 代码现在正在以正确的UART设置运行(基于16.384 MHz时钟的波特率)。 非常感谢您的帮助!