#endif
uint8_t index = 0;
while (txlen--)
{
while (!(UCB0IFG & UCTXIFG)); // Block until byte is transferred from TXBUF to shift reg.
if(txlen == 0)
{
UCB0CTL1 |= UCTXSTP;
UCB0IFG &= ~UCTXIFG;
}
//UCB0TXBUF = *temp; // Write data to TXBUF
if(iic_tx_byte_rx_ack(*temp) == TRUE)
{
temp++;
}
else
{
return FALSE;
}
}
while (!(UCB0IFG & UCTXIFG)); // Block until byte is transferred from TXBUF to shift reg.
// I2C stop condition
//UCB0CTL1 |= UCTXSTP;
// Clear USCI_B0 TX int flag
// UCB0IFG &= ~UCTXIFG;
iicBusy = NO;
return TRUE;
}
设备地址我已经右移了一位了,再说即使我设备地址弄错,最多是写不进设备,但是读芯片的管脚上应该还是有相应的起始信号的吧。
设置UCSWRST后,SDA和SCL都会保持高电平采购流程 ,可是为什么UCB0CTL1 |= UCTXSTT+UCTR这样设置后SDA数据线并没有电平变化,并没有产生起始信号,USBBUSY一直为高。
现在已经有信号的,但是起始条件那里的时钟少了一位,地址7位加一个读写位,再加一个应答位,应该有9位的,但是我现在在写数据前,只读到了8位,那个应答位没读,但是之后写数据都有应答位。请问起始条件后的那个应答位的时钟为什么会丢失?
我STT位置1后,一直等待从设备应答把STT清0,可是一直都没有变化。