其功能是51单片机向mpu写入一个字节,然后有mpu在串行数据线(SDA)给51一个应答信号;
根据文档的说明:如下:
我对应答信号的理解是:
51向mpu发送完8位数据,如果mpu应答,会在第9个时钟时,拉低数据线SDA.所以我的应答代码如下:
void Write_ACK()
{
SCL=1;
SDA=1;
while(SDA); //用while判断SDA有没有被拉低,
}
或
void Write_ACK()
{
SCL=1;
while(SCL); //如果从设备忙,他会使SCL保持在低电平.用while判断mpu是不是在忙,
}
事实情况是这两种都不理想;第一个进入死循环,第二个没收到过反馈;
这是在网上找的51单片机与mpu6050通信代码的一段.
他是用PSW寄存器的进位标志位CY进行数据发出的,
他接收应答用的还是CY,返回CY后,并没有对CY做任何判断,
他是怎么判断有没有收到mpu的应答信号的?
还是CY有什么特性?(我在网上没找到相关知识);
|