Quantcast
Channel: MSP 低功耗微控制器论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 3634

MSP430FR5969 iic通信24LC512

$
0
0

我按照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;
}

这是程序


Viewing all articles
Browse latest Browse all 3634

Trending Articles