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.

[参考译文] MSP430FR2311:SCL 时钟

Guru**** 2557740 points
Other Parts Discussed in Thread: MSP430FR2311, MSP430G2553

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/598171/msp430fr2311-scl-clock

器件型号:MSP430FR2311
主题中讨论的其他器件: MSP430G2553

我将 USCI 模块配置为 I2C。

我可以在 SCL 引脚上看到该模块的时钟吗?

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

    您好、开尔文、

    如果您已经在 I2C 主模式下配置了 USCIB0、那么 您应该能够在 MSP430FR2311中的 P1.3/UCB0SOMI/UCB.S./OA0O/A3上看到时钟。

    此致、

    Vikas Chola

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已将 MSP430G2553 uC 配置为 I2C 主模式、并在 P1.6引脚上看到时钟。 但它不可用...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为了测试时钟、我使用 TI uC 的演示代码。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在使用以下代码:

    #include

    unsigned char * PTxData; //指向 TX 数据的指针
    unsigned char TXByteCtr;
    const unsigned char TxData[]= //要发送的数据表

    0x11、
    0x22、
    0x33、
    0x44、
    0x55
    };

    int main (空)

    WDTCTL = WDTPW + WDTHOLD; //停止 WDT
    P1SEL |= BIT6 + BIT7; //将 I2C 引脚分配给 USCI_B0
    P1SEL2|= BIT6 + BIT7; //将 I2C 引脚分配给 USCI_B0
    UCB0CTL1 |= UCSWRST; //启用 SW 复位
    UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC; // I2C 主设备,同步模式
    UCB0CTL1 = UCSSEL_2 + UCSWRST; //使用 SMCLK、保持软件复位
    UCB0BR0 = 12; // fSCL = SMCLK/12 =~100kHz
    UCB0BR1 = 0;
    UCB0I2CSA = 0x48; //从机地址为048h
    UCB0CTL1 &=~UCSWRST; //清除 SW 复位,恢复操作
    IE2 |= UCB0TXIE; //启用 TX 中断

    while (1)

    PTxData =(unsigned char *) TxData; // TX 数组起始地址
    TXByteCtr = TxData 的大小; //加载 TX 字节计数器
    while (UCB0CTL1 & UCTXSTP); //确保发送了停止条件
    UCB0CTL1 |= UCTR + UCTXSTT; // I2C TX、启动条件
    _bis_SR_register (CPUOFF + GIE); //输入带中断的 LPM0
    //保持在 LPM0中直到所有数据
    //是 TX



    ///----------------------------------
    // USCIAB0TX_ISR 的结构使其可用于传输任何数据
    //预加载带有字节计数的 TXByteCtr 的字节数。 此外、TXData
    //指向要发送的下一个字节。
    ///----------------------------------
    #if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
    #pragma vector = USCIAB0TX_vector
    _interrupt void USCIAB0TX_ISR (void)
    #Elif defined (_GNU_)
    void __attribute__((interrupt (USCIAB0TX_vector)) USCIAB0TX_ISR (void)
    其他
    错误编译器不受支持!
    #endif

    IF (TXByteCtr) //检查 TX 字节计数器

    UCB0TXBUF =* PTxData++; //加载 TX 缓冲区
    TXByteCtr --; //测量 TX 字节计数器

    其他

    UCB0CTL1 |= UCTXSTP; // I2C 停止条件
    IFG2 &=~UCB0TXIFG; //清除 USCI_B0 TX int 标志
    _BIC_SR_REGISTER_ON_EXIT (CPUOFF); //退出 LPM0

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

    您未清除 LOCKLPM5。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    上面的示例是 TI 的演示代码
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    LOCKLPM5不适用于 MSP430G2553
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    LOCKLPM5适用于您为问题选择的 MCU。

    总之、您连接到该引脚的是什么? I²C Ω 至少需要一个上拉电阻器。