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.

[参考译文] CCS/MSP430F5359:移植函数以初始化 Msp430f5438a 至 msp430f5359中的 UCS/FLL

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/761910/ccs-msp430f5359-porting-functions-to-initialize-the-ucs-fll-from-msp430f5438a-to-msp430f5359

器件型号:MSP430F5359
主题中讨论的其他器件: MSP430F5438A

工具/软件:Code Composer Studio

您好!  

我正在尝试移植函数、以将 音频 PWM 的 UCS/FLL 从 msp430f5438a 初始化为 msp430f5359、这是随附的代码。 音频代码适用于  msp430f5438a、但不适用于  msp430f5359。 我需要对附加代码进行哪些更改、以便它适用于 msp430f5359。

#include "msp430.h"
#include "hal_uCS.h"

void LFXT_Start (uint16_t xtdrive)
{
//如果驱动器设置尚未设置为最大值
//将其设置为 LFXT 启动的最大值
if ((UCSCTL6 & XT1DRIVE_3)!= XT1DRIVE_3){
UCSCTL6_L |= XT1DRIVE1_L + XT1DRIVE0_L; //的最高驱动器设置
// XT1startup
}

while (UCSCTL7 & XT1LFOFFG){ //检查 LFXT1故障标志
UCSCTL7 &=~(XT1LFOFFG); //清除 LFXT1故障标志

//清除全局故障标志。 在 LFXT1导致全局故障标志出现的情况下
//将其设置为清除全局错误条件。 如果任何错误条件仍然存在、
//全局标志将再次出现。
SFRIFG1 &=~OFIFG;
}

UCSCTL6 =(UCSCTL6 &~(XT1DRIVE_3))|(xtdrive); //设置请求的驱动器模式
}


void Init_FLL_settle (uint16_t fsystem、uint16_t 比率)
{
volatile uint16_t x =比率* 32;

init_FLL (fsystem、比率);

while (x--){
_DELAY_CYCLES (30);
}
}

void Init_FLL (uint16_t fsystem、uint16_t 比率)
{
uint16_t d、DCO_div_bits;
uint16_t MODE = 0;

//保存 FLL 循环控制的实际状态,然后将其禁用。 需要这样做
//防止 FLL 在我们进行基本修改时起作用
//时钟设置。
uint16_t srRegisterState =__get_SR_register ()& SCG0;

D =比率;
DCO_div_bits = FLLD__2; //至少有一个2的分频器

if (fsystem > 16000){
D >>= 1;
模式= 1;
}
否则{
fsystem <<= 1; // fsystem = fsystem * 2
}

while (d > 512){
DCO_div_bits = DCO_div_bits + FLLD0; //设置下一个更高的 div 级别
D >=1;
}

_bis_SR_register (SCG0); //禁用 FLL

UCSCTL0 = 0x0000; //将 DCO 设置为最低抽头

UCSCTL2 &=~(0x03FF); //复位 FN 位
UCSCTL2 = DCO_div_bits |(d - 1);

IF (fsystem <= 630) // fsystem < 0.63MHz
UCSCTL1 = DCORSEL_0;
否则(fsystem < 1250) // 0.63MHz < fsystem < 1.25Mhz
UCSCTL1 = DCORSEL_1;
否则(fsystem < 2500) // 1.25Mhz < fsystem < 2.5MHz
UCSCTL1 = DCORSEL_2;
否则(fsystem < 5000) // 2.5MHz < fsystem < 5MHz
UCSCTL1 = DCORSEL_3;
否则(fsystem < 10000) // 5MHz < fsystem < 10MHz
UCSCTL1 = DCORSEL_4;
否则(fsystem < 20000) // 10MHz < fsystem < 20MHz
UCSCTL1 = DCORSEL_5;
否则、如果(fsystem < 40000) // 20MHz < fsystem < 40MHz
UCSCTL1 = DCORSEL_6;
其他
UCSCTL1 = DCORSEL_7;

_BIC_SR_register (SCG0); //重新启用 FLL

while (UCSCTL7 & DCOFFG){ //检查 DCO 故障标志
UCSCTL7 &=~DCOFFG; //清除 DCO 故障标志

//清除全局故障标志。 如果 DCO 导致全局故障标志出现
//将其设置为清除全局错误条件。 如果任何错误条件仍然存在、
//全局标志将再次出现。
SFRIFG1 &=~OFIFG;
}

_bis_SR_register (srRegisterState); //恢复以前的 SCG0

如果(MODE = 1){ // fsystem >16000
SELECT_MCLK_SMCLK (SELM__DCOCLK + SELESS_DCOCLK); //选择 DCOCLK
}
否则{
SELECT_MCLK_SMCLK (SELM__DCOCLKDIV + SELESS_DCOCLKDIV);//选择 DCODIVCLK
}
}

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

    请允许我花一些时间进行此操作。 我将在审核后尽快回复您。

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

    您好、Kary、

    我仍然在查看您的附加代码、直到现在发现的内容还不多。 只有一点、在第45行、我认为您应该使用

    uint16_t srRegisterState =__get_SR_register ()&(~SCG0);
    

    如果您想恢复 SR 寄存器设置、

    您能否提供有关您遇到的问题的更多详细信息?

    由于您提供了一个可以智能配置 UCS 的代码、您能不能告诉我您想要的确切配置不能正常工作吗? 或者、您能否首先尝试直接为您所需的配置配置配置寄存器、并查看其是否正常工作?  

    BTW、您需要注意的是、系统时钟频率也与电源相关。 您是否已在代码的其他部分正确配置 VCORE?

    如果您有更新、请告诉我。

    此致、

    哈里

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

    e2e.ti.com/.../8551.hal_5F00_ucs.ce2e.ti.com/.../hal_5F00_ucs.hThsi代码最初是针对 msp430f5438a 的 BI 专有代码。 我正在尝试将此代码移植到 msp430f359、但它不起作用。  我在这里附上了完整的代码。

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

    我浏览了您所附的代码、在那里没有发现任何惊喜。 由于 F5438A 和 F5359之间的唯一区别是 F5359在 XT1中不支持 HFXT、我想您遇到的问题是由其他设置造成的。
    您能否在主代码中分享有关您的设置的更多信息、包括但不限于电源、XT 电路、配置...?
    此外、您还可以查看 TI 为 MSP430F5xx/6xx 系列器件提供的"DriverLib": software-dl.ti.com/.../index.html

    如果您有任何更新、请告诉我。

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

    我成功地将其移植。 感谢你的所有帮助。