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.

[参考译文] MSP430FR2355:I2C 总线初始化为忙-无法继续任何事务

Guru**** 2538940 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1011622/msp430fr2355-i2c-bus-initializes-as-busy---cannot-proceed-with-any-transaction

器件型号:MSP430FR2355

正如标题所述-在 I2C 总线初始化(在 B0或 B1上)之后、STATW 寄存器读出总线繁忙。 该控制器已通过上拉电阻器连接到传感器、也未连接任何元件、但问题仍然存在。 总线在退出软件复位后即表示它正忙。 我的代码如下-这两个函数将连续运行、我们希望您能提供任何帮助。

void initGPIO()
{
    // I2C pins
    P1SEL0 |= BIT2 | BIT3;
    P1SEL1 &= ~(BIT2 | BIT3);

    P1OUT |= BIT2 | BIT3;

    // Disable the GPIO power-on default high-impedance mode to activate
    // previously configured port settings
    PM5CTL0 &= ~LOCKLPM5;
}

void initI2C()
{
    UCB0CTLW0 = UCSWRST;                      // Enable SW reset
    UCB0CTLW0 |= UCMODE_3 | UCMST | UCSSEL__SMCLK | UCSYNC; // I2C master mode, SMCLK
    UCB0BRW = 160;                            // fSCL = SMCLK(16MHz)/160 = ~100kHz
    UCB0I2CSA = 0x00;                   // Slave Address
    UCB0CTLW0 &= ~UCSWRST;                    // Clear SW reset, resume operation
}

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

    如果 I2C 总线占线、则数据线保持低电平。 如果这是一个未正确复位的从器件、您可以稍微微调一下。 很久以前、我将此位代码添加到 I2C 初始化中:

     /*
        Check to see if the bus is busy. If it is, attempt to clear the bus
        by generating a clock manually.
       */
      if (UCB0STAT & UCBBUSY)
      {
        P3DIR &= ~BIT2;
        P3SEL &= ~BIT2;
        P3OUT &= ~BIT2;
        P3DIR |= BIT2;
        P3SEL |= BIT1 + BIT2;
      }
    }
    

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

    主要问题是我的 SDA 线路。 我的 SCK 在~3.3V 时为高电平、但 SDA 线仅为1.4V - 1.8V。 我假设线路上的某个位置存在分压、但我不太确定如何缓解此问题。

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

    在 I2C 模式下、REN 电阻器处于激活状态(如果已启用)。 您是否在使用它们?

    上周、我们有人在下拉时意外使用了 REN 电阻器、并出现了您的症状(分压器效应)。

    [编辑:少量澄清。]

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

    您在代码中看到的是发生的唯一 GPIO 修改-我假设这不会与上拉/下拉电阻器混淆、但我也删除了 P1OUT 线路、同一问题仍然存在。 不确定这是否会导致 上拉。

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

    事实证明我的电路板已经损坏、我仍在调试 I2C、但浮线是由于 P1.2的上拉电阻器没有接合、一旦我切换到另一个电路板、一切都正常。