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.
我的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;
}
Young Hu,请问如何配置成I2C功能?我以上完全是按照例程里进行配置的...
USICTL0 = USIPE6 + USIPE7 + USISWRST; // Port & USI mode setup
USICTL1 = USII2C + USIIE + USISTTIE; // Enable I2C mode & USI interrupt
不是配置I2C功能吗?