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/MSP430G2553:MSP430G2553中的开漏配置

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/774591/ccs-msp430g2553-open-drain-configuration-in-msp430g2553

器件型号:MSP430G2553

工具/软件:Code Composer Studio

我正在使用 MSP430G2 Launchpad。

目前我测试一个 i2c 示例代码。 但我没有得到输出、因此我检查了 I2C 引脚  P1.6和 P1.7的开漏。 我在 while 环路中编写一个用于 切换 P1.6引脚的代码。 我将10K 上拉电阻器连接到 P1.6 (SCL)和 P1.7 (SDA)。 但上升时间 和下降时间 几乎相同。

请举例说明 如何在 i2c 模式下配置开漏。

代码

#include

 

unsigned char Txbyte;

unsigned char Txbytechtr;

 

int main (空)

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

     BCSCTL1 = CALBC1_1MHz;                    //将 DCO 设置为1MHz

     DCOCTL = CALDCO_1MHz;

 

 

     P1REN = BIT6+BIT7;

     P1OUT |= BIT6+BIT7;                        //启用上拉电阻器

 

     P1SEL |= BIT6+BIT7;

     P1SEL2 |= BIT6+BIT7;                      //选择 P1.6和 P1.7作为 I2C 引脚

 

     UCB0CTL1 |= UCSWRST;

     UCB0CTL0 = UCMST + UCMODE_3+ UCSYNC;        //通过同步启用主模式

     UCB0CTL1 = UCSSEL_2 + UCSWRST;              //smclk 选择

     UCB0BR0 = 10;                              //波特率设置

     UCB0BR1 = 0;

     UCB0I2CSA = 0x41;                          // i2c 从器件地址

     UCB0CTL1 &=~ UCSWRST;

     //IE2 |= UCB0TXIE;//+ UCB0RXIE;

     Txbyte = 0x55;

 

     while (1)

     {

     /*    Txbytechtr =1;

     while (UCB0CTL1 & UCTXSTP);  *

       

       UCB0CTL1 |= UCTR + UCTXSTT;

       UCB0TXBUF = Txbyte;

       P1OUT ^= BIT6;            //切换 P1.6

       _DELAY_CYCLES (1000000);

     }

/*

#pragma vector = USCIAB0TX_vector

_interrupt void USCIAB0TX_ISR (void)

if (Txbytechtr)

  UCB0TXBUF = Txbyte

  Txbytectectectectectr ----;

 

其他

  UCB0CTL1 |= UCTXSTP;

  IFG2 &=~ UCB0TXBUF;

  _bis_SR_register_ON_EXIT (CPUOFF);

 

*

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

    您好、Chinnan、

    以下 指向 TI Resource Explorer 的链接、其中提供了一个很好的示例:

    查看您的代码、可能会出现一个问题、在设置起始位后、您必须等到 TXIF 被置位、然后再写入 TXBUF。 我猜是这样

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢,这有助于解决我的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将上拉电阻器连接到 i2c 引脚,还在软件中禁用内部上拉电阻器,然后它工作正常谢谢