24C02无法写入问题,原子哥程序存在一个小BUG

2019-07-21 01:28发布

型号:M24C02-FMN6TP

使用逻辑分析仪看时序,整体看不出问题,但是就是无法写入,后来发现是IIC的STOP时序有问题。

手册时序要求
QQ截图20180508142254.png


原程序
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);                                                                  
}


改为
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;
        delay_us(4);
        IIC_SDA=1;//发送I2C总线结束信号                                                                  
}


就没问题了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
程功之道
1楼-- · 2019-07-21 02:26
对的,SCL 为高电平时, SDA 由低电平向高电平跳变,结束传送数据,原子哥的SCL为高,没有延时立马就把SDA拉低 间隔时间短造成的,在后面延时就没意义了
风眠慕天
2楼-- · 2019-07-21 06:16
非常感谢,这个问题困扰了我好久,无缘无故出现这样的问题

一周热门 更多>