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.

MSP430G2221单片机I2C_CLK启动后被拉低

Other Parts Discussed in Thread: MSP430G2221

我的MCU是MSP430G2221,它通过P1.6,P1.7与ARM CPU的I2C总线直连,2.2K电阻上拉。
问题现象:刚开机的时候,I2C_CLK是高电平(3.3V),几秒钟后电平被拉低至0.6V,但I2C_DATA正常。观察程序,除了初始化时对P1.6,P1.7配置为高电平,其余的并没有对P1端口进行任何读写,不明白为何被拉低?
请问这会是由什么引起的。 程序初始化部分代码有如下:


void System_Clock_Init(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog
  if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)                                    
  { 
    while(1);                               // If calibration constants erased
                                            // do not load, trap CPU!!
  }
  BCSCTL1 = CALBC1_1MHZ;                    // Set DCO
  DCOCTL = CALDCO_1MHZ;
}

void P1_P2_Init(void)
{
  P1OUT = 0xC0;                             // P1.6 & P1.7 Pullups, others to 0
  P1REN |= 0xC0;                            // P1.6 & P1.7 Pullups
  P1DIR = 0xFF;                             // Unused pins as outputs
  P2OUT = 0;
  P2DIR = 0xFF;

  P2OUT |= BIT7;                            // DOCKING Enable,Port 2.7
  P1OUT &= ~BIT0;                           // Reset RFID 
}

void Setup_USI_Slave(void)
{
  USICTL0 = USIPE6 + USIPE7 + USISWRST;     // Port & USI mode setup
  USICTL1 = USII2C + USIIE + USISTTIE;      // Enable I2C mode & USI interrupt
  USICKCTL = USICKPL;                       // Setup clock polarity
  USICNT |= USIIFGCC;                       // Disable automatic clear control
  USICTL0 &= ~USISWRST;                     // Enable USI
  USICTL1 &= ~USIIFG;                       // Clear pending flag
 
  DataDirection = Receive;
  __enable_interrupt();   
}

// enable Flash for write 
void Flash_Init(void)
{
  FCTL1 = FWKEY + WRT; //enable write flag   
  FCTL2 = FWKEY + FSSEL0 + FN0;             // MCLK / 2
  FCTL3 = FWKEY;
}