试了UCB0,UCB1的IIC都是一样的请款,一旦启动IIC传输,IIC clock就变为低电平,没有时钟输出。
IIC初始化代码如下:
P4SEL |= 0x06; // Assign I2C pins to USCI_B0
UCB1CTL1 |= UCSWRST; // Enable SW reset
UCB1CTL0 = UCMST + UCMODE_3 + UCSYNC; // I2C Master, synchronous mode
UCB1CTL1 = UCSSEL_2 + UCSWRST+UCTR; // Use SMCLK
UCB1BR0 = 12; // fSCL = SMCLK/12 = ~100kHz
UCB1BR1 = 0;
UCB1I2CSA = 0x48; // Slave Address is 048h
UCB1CTL1 &= ~UCSWRST; // Clear SW reset, resume operation
UCB1IE |= UCTXIE+UCRXIE+UCSTPIE; __delay_cycles(SYSTEM_CLOCK_SPEED * 0.05);//delay 50ms
UCB1CTL |= UCTR+UCTXSTT;//启动IIC 传输,IIC clock由高电平立即变为低电平,IIC data保持高电平不变。
请教大侠们!
灰小子:
建议先使用430ware里的例程测试下。在例程的基础上进行修改和测试