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.

[参考译文] MSP430FR2633:XT1BYPASS 模式有疑问?

Guru**** 2546300 points
Other Parts Discussed in Thread: MSP430FR2633

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/586072/msp430fr2633-xt1bypass-mode-question

器件型号:MSP430FR2633

您好!

在《MSP430FR2633手册》第75页的第7.1.2节(外部振荡器)中、它指出可以使用 XIN 和 XOUT 作为通用 I/O  它表示、如果选择了合适的 XT1BYPASS 模式、则有可能。  我试图简单地将引脚(分别为2.0和2.1、XOUT 和 XIN)设置为输入/输出引脚、但运气不佳。 www.ti.com/.../msp430fr2633.pdf

使用 MSP430驱动程序 lirbary、我调用了 CS_BypassXT1()、但我不确定这是否足够..

以下代码:

#include "driverlib.h"

int main (void){

WDT_A_HOLD (WDT_A_base);

cs_bypassXt1();

GPIO_setAsOutputPin (GPIO_PORT_P2、GPIO_PIN0);//brown p2.2
GPIO_setOutputHighOnPin (GPIO_PORT_P2、GPIO_PIN0);//Brown p2.2
int i;
while (1){
GPIO_toggleOutputOnPin (GPIO_PORT_P2、GPIO_PIN0);
for (i = 0;i < 20000;i++);
}
}

我们非常感谢您的任何帮助。

最棒的

Robert

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

    XT1BYPASS 是在这些端口上使用外部时钟信号而不是晶体、而不是将引脚用作 I/O 它仍将是时钟信号。
    您需要设置 P2SEL、以便将其用作 GPIO。 它可能是默认配置。
    请查看手册的第60页、并访问系列用户指南以获得更好的说明 www.ti.com/.../slau445g.pdf

    希望这对您有所帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    器件数据表中规定复位默认功能为 GPIO、但用户指南中规定了 XIN/XOUT。
    尝试清除 P2SEL1和 P2SEL0中的位1和位0。 应将引脚配置为 GPIO。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我对这一点比较陌生、因此如果这似乎是一个简单的问题、我很抱歉。 因此、我测试了以下代码位、仍然无法将引脚驱动为高电平。

    #include "driverlib.h"
    
    void main (void)
    {
    WDT_A_HOLD (WDT_A_base); // WDTCTL = WDTPW | WDTHOLD;停止看门狗计时器
    
    P2SEL0 &=~BIT0;
    P2SEL1 &=~BIT0;
    P2OUT &=~BIT0; //清除已定义加电状态的 P1.0输出锁存器
    P2DIR |= BIT0; //将 P1.0设置为输出方向
    GPIO_setOutputHighOnPin (GPIO_PORT_P2、GPIO_PIN0);
    
    while (1);
    } 

    从 MSP430FR2633数据表中、我从第60页中提取了该表。

    如前所述、必须将 P2SELx 设置为0、我认为我已使用以下命令正确完成:

    P2SEL0 &=~BIT0;
    P2SEL1 &=~BIT0; 

    在上面的代码中、表中的 x 被我尝试设置的任何引脚所取代(P2DIR.x 似乎不是这样)

    我从教程中提取的其余代码。  不确定"为定义的加电状态清除 P1.0输出锁存器"到底意味着什么、或者是否有必要。

    关于数据表中的 P2DIR.x、我尝试设置 P2DIR.0 |= BIT0;(等效于 P2DIR.0 = 0x01)、但这给我留下了编译错误。   请有人解释 P2DIR.x 如何 转换为代码。  一个显示所有3个引脚(P2.0、P2.1、P2.2)均驱动为高电平和低电平的示例将非常有用、我将让我看看如何读取和编码该表。

    一些不起作用的简单代码:

    P2SEL0 = 0;//&=~BIT0;
    P2SEL1 = 0;//&=~BIT0;
    P2DIR |=(BIT0 | BIT1); //将 P0和 P6的 P1DIR 设置为高电平(1)
    
    int i;
    对于(;;){
    P2OUT ^=(BIT0 | BIT1); //用1和0切换 P1OUT 的 P0和 P6
    for (i = 0;i < 20000;i++);
    }
    

    非常感谢。

    最棒的

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    至于设置 P2DIR.0、请检查它是如何定义的、您可能会发现它不能像这样寻址。 您应该找到 P2位的结构、然后可以像这样修改它们。

    请查看用户指南第7节中的 I/O
    PxSEL 选择模块
    PxDIR 设置输入/输出
    PxOUT 设置输出

    最后一个代码应该起作用、您如何验证它是否正常工作?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将查看用户指南。 我正在使用范围验证输出。

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

    由于在 for (i=0......)中没有代码,因此它可能会被优化和删除。

    尝试类似的操作

    P2SEL0 = 0;                               //Set PSEL to GPIO
    P2SEL1 = 0;
    P2DIR |= (BIT0 | BIT1);                   // set P1DIR with Bits 0 and 1 to high (1)
    P2OUT = 0;
     
    for(;;) {
        P2OUT ^= (BIT0 | BIT1);               // toggle the Bits 0 and 1 of P1OUT
        __no_operation();                  // adds one cycle NOP
    }
    此外、确保它正在运行、尝试调试并单步执行代码。 它可能需要更多的初始化、并且无法到达您期望的位置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    PM5CTL0 &=~LOCKLPM5; //禁用 GPIO 上电默认高阻抗模式

    将其添加到代码的顶部会将其修复。 非常感谢您的帮助。 计算该值需要很长时间。

    最棒的
    Robert