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.

[参考译文] RF430FRL152H:MSP430:SMCLK 作为输出信号

Guru**** 2558250 points
Other Parts Discussed in Thread: RF430FRL152H

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/747897/rf430frl152h-msp430-smclk-as-output-signal

器件型号:RF430FRL152H

大家好、

我正在尝试使用端口 P1.4上的微芯片 RF430frl152h 内部的时钟作为外部传感器的信号。 我使用了一个非常简单的代码:我设置寄存器以获取输出时钟、但遗憾的是、我的引脚上没有任何信号。

有人知道错误在哪里吗?

此致、

Giuliano Cairoli

#include 
#include 


int main (void)

{

WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器


P1DIR |= BIT4;
P1SEL1 |= BIT4;
P1SEL0 &=~BIT4;

LPM0;

} 

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

    问题是 P1SELx 寄存器。
    在您的代码中、您只更改了 BIT4、但其他端口引脚(P1.5 - P1.7)仍处于 JTAG 功能状态、并阻止所有 JTAG 引脚的端口功能。
    请首先将 P1SEL0和 P1SEL1复位为0x00 (端口功能)、然后选择所需的功能。

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

    非常感谢您的帮助! 很不错!

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

    您好、Helfried、

    现在我可以使用 SMCLK 信号、我希望可以更改它。

    我的目标是设置 4MHz 的值。 我查看并尝试了不同的代码来设置 SMCLK 时钟、但我得到了负面结果。

    您知道如何配置它吗?

    此致、

    朱利亚诺

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

    Giuliano、您好!

    要获得4MHz 输出、您必须将紧凑型时钟系统中的 SMCLK 时钟分频器设置为 DIVS0。

    您将在 CCSCTL5中找到此设置。

    请务必先将 CCSCTL0中的 CCSKEY 设置为0xA500。

    此致、

    Helfried

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

    您好、Helfried、

    我的操作与您完全相同、但我仍然在端口 P1.4中获得任何时钟信号。

    在下面、您可以看到我的代码。

    #include 
    #include 
    
    
    int main (void)
    
    {
    WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
    
    //复位以避免 JTAG 配置
    P1SEL1 &=~(BIT4 | BIT4 | BIT6 | BIT4);
    P1SEL0 &=~(BIT4 | BIT5 | BIT6 | BIT7);
    
    SMCLK 的//更改频率
    CCSCTL0 |= CCSKEY;
    CCSCTL5 |= DIVS0;//也尝试过| DIVS0_L | DIVS_0;
    
    //将端口时钟配置为输出 P1.4、SMCLK
    P1DIR |= BIT4;
    P1SEL1 |= BIT4;
    P1SEL0 &=~BIT4;
    
    LPM0;// SMCLK 需要
    
    }
    

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

    Giuliano、

    在您的代码中、您已将 CCSKEY "包含"到寄存器中。 这将不起作用、因为寄存器将始终读回0x9600。

    只需将密钥写入寄存器即可。

    CCSCTL5寄存器也是如此。 DIVS 位的默认值为0x3。 在写入一个新值之前、首先清除 DIVSx 位。

    请注意、DIVS0是单个位的定义。

    #include 
    #include 
    
    
    int main (void)
    
    {
    WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
    
    //复位以避免 JTAG 配置
    P1SEL1 &=~(BIT4 | BIT4 | BIT6 | BIT4);
    P1SEL0 &=~(BIT4 | BIT5 | BIT6 | BIT7);
    
    SMCLK 的//更改频率
    CCSCTL0 = CCSKEY;
    CCSCTL5 &=~(DIVS2 | DIVS1 | DIVS0);
    
    //将端口时钟配置为输出 P1.4、SMCLK
    P1DIR |= BIT4;
    P1SEL1 |= BIT4;
    P1SEL0 &=~BIT4;
    
    LPM0;// SMCLK 需要
    
    } 

    此致、

    Helfried

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

    非常感谢您的观看。

    最棒的
    朱利亚诺