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