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.

[参考译文] MSP430F2617:DCO 频率问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1440107/msp430f2617-issues-with-dco-frequency

器件型号:MSP430F2617

工具与软件:

大家好!

很抱歉、如果这已包含在另一个问题中、如果包含、请将其链接。  我已尽我的最大能力进行搜索、无法找到似乎有效的答案。

问题:将 DCOCLK 设置为1MHz 以外的任何东西都已被证明是不可能的,我不知道为什么。

尝试的实现:  

    DCOCTL = 0;                               // Select lowest DCOx and MODx settings
    BCSCTL2 = 0;
    BCSCTL1 = CALBC1_8MHZ;
    DCOCTL = CALDCO_8MHZ;                     // Load 8MHz constants
    
    

在我的项目中、我想使用8MHz DCO、因为我想在我的应用中使用高达100KHz 的 PWM 频率。

以上内容似乎无法按预期工作。 使用计时器且 CCR0设置为100时、我得到200kHz 的频率、这没有意义。 请参阅以下内容:  

我在这个论坛上找到一些信息、这些信息间接地告诉我、当我通过 BSL 执行闪存操作时、InfoA 被擦除(BSLDEMO.exe)。 我无法确定如何解决此问题、因此我回到了使用 CCS 和 JTAG 编程。  

我开始时闪存 MSP430x261x_DCO_flashcal.c、可在示例下找到该函数(我只是搜索"DCO)、以恢复 InfoA 中应该存在的"msp430f2617.h"引用的正确值。 也许我理解不正确、但我认为头文件提取了 InfoA 中的"CALDCO_8MHZ"和"CALBC1_8MHZ"等宏的信息。 在按照"DCO_flashcal"重新刷写我自己的项目后、似乎我的问题尚未解决、在使用上述代码后、我仍然获得200kHz 的 PWM 频率。

通过另一个线程、我发现如果 InfoA 中的数据正确、将 DCOTL 和 BCSCTL1设置为0x8d 似乎可以使这些值准确到应该的值。 我尝试过这个方法、它似乎实际上可行、但我不清楚为什么它默认情况下不能按预期使用头文件工作。

对我来说、这个问题似乎是 DCOCTL 和/或 BCSCTL1没有正确配置。

有人对此有任何见解吗? 我不确定是否应该手动设置这些值、而不是使用头文件/InfoA 中规定的正确值。  

感谢您的观看。

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

    1) 1)在使用校准数据之前、我始终验证校验和。 如果失败、您可以回到未校准的设置、或者在这样做对您无效时停止。

    2) 2)您是否曾检查过 InfoA 中的内容?

    3) 3)运行 flashcal.c 代码时、您是否连接了32kHz 晶体以供其用作基准?

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

    我要在此处验证哪个校验和? 我不需要经校准的设置?  

    我不知道我可以检查 InfoA 中的内容、但我可以说的是、BSL 不接受"默认"RX 密码、因此我无法使用 BSLDEMO 从该密码中读取。 尽管不知道 InfoA 中有什么内容、但我可以安全地假设 CALDCO_8MHZ 和 CALBC1_8MHZ 中的数据是不正确的、因为我的时钟都是错误的。 当我删除更改时钟速度的行时、我注意到默认1MHz 似乎效果很好。

    啊、也许这就是为什么用 flashcal.c 进行刷写没有解决任何问题的原因。 板上没有32KHz 晶振。 我认为这仅适用于 ACLK。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我要在此处验证的校验和是什么? 我不需要经校准的设置?  [报价]

    阅读指南中有关 TLV 结构的第24章。

    只有您可以决定是否需要校准设置。

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

    主要目标是获得8MHz DCOCLK、但我选择它的原因无关紧要。 在使用时、这似乎是不必要的行为 . 我在这一假设中是否正确?

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

    F2系列 BSL 使得意外擦除时钟校准常数(infoA)变得非常容易。 最好避免它。

    使用 CCS 调试器(也许是内存浏览器)来检查位置0x10F8-FF。 如果它们=0xFF、则已被擦除。 它们还可能包含使用 VLO (在很大程度上类似于10kHz)作为基准计算出的常数、但正如您观察到的、这并不是很有用。

    公布后、DCO_flashcal 假定采用32kHz 晶体。 借助小型黑客(LFXT1S=3)、您应该能够将32kHz 时钟馈送到 XIN。 这样的时钟可能来自信号发生器或其他 MCU (如果您的工作台上有一个)。

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

    这是不将 BSL 用于此芯片组的间接方式吗? 很遗憾、如果我只需一个 USB 接口就能离开、我只是想让同事的工作变得更轻松/占用更少的电路板资源(空间)。 似乎专门 BSL 2.13是什么导致 infoA 容易被擦除?

    我将尝试这项建议、以查看目前 InfoA 中实际存在的内容、并尝试重新刷新 infoA。 我们会回来进行更新。

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

    它从 BSL 2.01 [参考 BSL UG (SLAU319AE)第2.4.4.4节("注意")]开始、并且它必须自动清除 LOCKA (解锁 InfoA)。 之后任何批量擦除(有意或意外)都将擦除 InfoA。 在 BSL 中、几乎任何错误都会导致批量擦除、并且只需要一次。