AT24C02 I2C 读取总是 0xFF
发布日期:2023-06-11 09:23:29 浏览次数:5 分类:技术文章

本文共 437 字,大约阅读时间需要 1 分钟。

我是因为停止信号时序有问题

本来是这样

void I2CStop(void)

{
    I2C_SDA(0);
    I2C_SCL(0);
    HAL_Delay_us(5);//SCL保持4.7us,拉高SDA
    I2C_SDA(1);
    HAL_Delay_us(5);
    I2C_SCL(1);
    HAL_Delay_us(5);
}

调整了SCL SDA 顺序之后的

void I2CStop(void)

{
    I2C_SDA(0);
    I2C_SCL(0);
    HAL_Delay_us(5);//SCL保持4.7us,拉高SDA
    I2C_SCL(1);
    HAL_Delay_us(5);
    I2C_SDA(1);//起始终止信号始终都要是在SCL高电平期间变化SDA,这是与其他时序的根本区别,所以一定要先拉高SCL再变化SDA
    HAL_Delay_us(5);
}

然后就能正常读写了

不直到为啥其他IIC设备都能用这个时序,包括我上午才用的BMP280都能正常读写,AT24C02就不行。

转载地址:https://blog.csdn.net/python_52/article/details/130156363 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:AT24CXX-I2C
下一篇:AT2300 Snuke Line

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年03月27日 09时28分49秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章