7700| 7
|
AT24C04C不能通讯 |
5金钱
最佳答案找到原因了。是在IIC_Stop()这里出了问题。开发板原代码是这样的:
void IIC_Stop(void)
{
SDA_OUT(); //sda线输出
IIC_SCL=0;
IIC_SDA=0; //STOP:when CLK is high DATA change form low to high
delay_us(4);
IIC_SCL=1;
IIC_SDA=1; //发送I2C总线结束信号
delay_us(4);
}
在IIC_SCL=1后马上就IIC_SDA=1,之间没有延时。用示波器抓图,发现SCL和SDA几乎在同时变为高电平。
I2C结束信号是这样要求的: ...
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|手机版|OpenEdv-开源电子网
( 粤ICP备12000418号-1 )
GMT+8, 2025-2-27 17:08
Powered by OpenEdv-开源电子网
© 2001-2030 OpenEdv-开源电子网