UCB0CTLW0 |= UCSWRST; //reset I2C Module
UCB0CTLW0 |= UCMODE_3 + UCSYNC; //I2C Slave
UCB0I2COA0 = SLAVE_ADDRESS;
//Set P1.6 & P1.7 on I2C MODE
P1SEL1 |= BIT6 + BIT7;
P1SEL0 &= ~BIT6; P1SEL0 &= ~BIT7;
UCB0CTLW0 &= ~UCSWRST; //reset I2C Module
UCB0IE__I2C |= UCTXIE0 + UCRXIE0 + UCSTTIE + UCSTPIE; //Enable I2C INTERRUPT
上面是对MSP430FR5738 I2C模式的初始化。初始化完成后,主机发送S+ADDR+W,MSP430不能产生ACK信号。查看430内部寄存器UCB0ADDRX,已经收到了正确的地址,但没有产生ACK信号,请问是什么原因
Jun Xu8:
kqian0327:
你好,
首先排查数据发送是否正常。
然后你要排除一下主机发送的地址是否正确,及主机寻址是否正确。
在确认主机没有问题的情况下,检查从机程序。
你可以参考MSP430WARE例程,里面有关于从机IIC的例程。
希望能帮到你。