请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430G2553 我从TI论坛获得了此代码。 我尝试将其与Maxim Electronics的DS1307 RTC模块连接。 我可以发送从属地址,但当我尝试发送注册地址时,代码被卡住。
有人能帮我解决这个问题吗? 我猜UCB0TXIFG没有准备好。
unsigned char read (unsigned char registerAddr)
{
unsigned char receivedByte =0;
UCB0I2CSA = 0xD0;//从地址为069h
while (UCB0CTL1 & UCTXSTP);//确保停止条件已发送
UCB0CTL1 |= UCTR + UCTXSTT;// UCBI2I启动条件与UTXIFG = 0;
UCBI,且UCB0 //UCB0TXIFG立即设置
为UCB0TXBUF = registerAddr;//write registerAddr in TX buffer while
((IFG2 & UCB0TXIFG)== 0); //代码卡在这里。 它不会继续UCB0CTL1
&=~UCTR;//清除接收
UCB0I2CSA = 0xD1的I2C TX标志;//从属地址为069h
UCB0CTL1 || UCTXSTT;//重复启动
期间(UCB0CTL1和UCTXSTT);//启动条件已发送? RXBuffer已满?
UCB0CTL1 || UCTXSTP;
while (IFG2 & UCB0RXIFG)==0);//等待TX缓冲区为空并传输
//print("hello\r\n");
receivedByte = UCB0RXBUF;// I2C停止条件
返回接收的字节
;}