STM32读取at24c256数据异常

1.测试STM32读取at24c256时发现读出来的数据和写入的数据不一致,我使用的是原子阿波罗开发板,主控芯片H743。
在这里插入图片描述
2.逻辑分析仪抓取波形如图,读出数据和写入数据不一样。
在这里插入图片描述
在这里插入图片描述
无论写入什么数据,读出数据都是09,感觉有点奇怪。
3.打开程序看看代码好像没有什么问题。
在这里插入图片描述
在这里插入图片描述
4.突然看到iic硬件初始化时,引脚模式都设为了推挽输出,读取数据时,推挽输出是有问题的。
在这里插入图片描述
使用 推挽输出 在输入时需要切换GPIO口为输入模式。如果输入输出来回切换过程中不及时,会导致主机输出高电平,从机输出低电平(或者主机输出低电平,从机输出高电平),导致引发总线短路的问题。
推挽输出,多主机模型下,几个从机抢占总线。仲裁过程中,一个输出高电平,一个输出低电平,也会造成短路的问题。
使用 开漏输出 可以兼顾输入输出的同时,由于外加了上拉电阻才产生的高电平,就可以避免短路的问题。
5.对程序做一下更改,如图:
在这里插入图片描述
6.编译测试,发现写入和读取数据一致。
在这里插入图片描述
这个小的知识点在这里做一下记录。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值