我按照userguide 配置寄存器后IIC读EEPROM始终读出来的都是0XFF这是为什么呢?
SDA和SCL的两根线接示波器都有波形
uint8_t eeprom_readbyte( uint8_t word_addr_H , uint8_t word_addr_L , uint8_t *pword_value )
{
UCB0CTL1 |= UCTR; // 写模式
UCB0CTL1 |= UCTXSTT; // 发送启动位和写控制字节
UCB0TXBUF = word_addr_H; // 发送字节地址,必须要先填充TXBUF
// 等待UCTXIFG=1 与UCTXSTT=0 同时变化 等待一个标志位即可
while(!(UCB0IFG & UCTXIFG))
{
if( UCB0IFG & UCNACKIFG ) // 若无应答 UCNACKIFG=1
{
return 1;
}
}
UCB0TXBUF = word_addr_L; // 发送字节地址,必须要先填充TXBUF
// 等待UCTXIFG=1 与UCTXSTT=0 同时变化 等待一个标志位即可
while(!(UCB0IFG & UCTXIFG))
{
if( UCB0IFG & UCNACKIFG ) // 若无应答 UCNACKIFG=1
{
return 1;
}
}
UCB0CTL1 &= ~UCTR; // 读模式
UCB0CTL1 |= UCTXSTT; // 发送启动位和读控制字节
while(UCB0CTL1 & UCTXSTT); // 等待UCTXSTT=0
// 若无应答 UCNACKIFG = 1
UCB0CTL1 |= UCTXSTP; // 先发送停止位
while(!(UCB0IFG & UCRXIFG)); // 读取字节内容
*pword_value = UCB0RXBUF; // 读取BUF寄存器在发送停止位之后
while( UCB0CTL1 & UCTXSTP );
return 0;
}
这是程序