打印
[STM32F1]

STM32F103的I2C程序一会错误一会又成功的问题

[复制链接]
288|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我按视频写的程序,一开始调试成功了,向EEPROM写一个字节,读一个字节,都在串口实现了。
说明程序正确没问题。

然后开始调程序,想 换一下 试一下 各个语句的各种情况适不适用。
比如把  “I2C_GenerateSTOP( I2C1 , ENABLE );”  这个语句放在IIC协议时序的不同地方,想看看效果。

视频例程 “I2C_GenerateSTOP( I2C1 , ENABLE );”  是写在读最后一个字节之前,运行成功。
我也试过,写在读最后一个字节前、后,程序都能成功运行。

也就是程序没有问题。

但有时候的情况是,比如刚才下载程序到开发板,能实现,
然后改一下语句,突然程序就进入死循环了。
即使这个时候改回去,仍然超时运行不成功。
这个时候下载配套视频例程,也都超时失败。如图。
配套例程肯定是正确的。

这时,必须要分别打开不同的配套例程,下载,多下载几次,直到例程运行成功。
这个时候再换 自己写的程序,一下载,就正确读写成功了。

感觉上就是I2C总线一直被占用,时序不对一样。
所以,是stm32f103自己的I2C的问题,还是程序的问题?

有没有比较特别完善的程序,能排除所有这种总线占用、进入死循环的方法?
我试过每次读写前,先恢复默认设置,比如“I2C_DeInit(I2C1);”也没用。清除FLAG标志位,也没用。
有时好用有时无效。

就比如,配套例程应该来说也没问题吧。但一旦超时一次,就要打开不同程序下载多次,I2C才能正常运行。


使用特权

评论回复
沙发
七毛钱| | 2022-12-27 14:00 | 只看该作者

我试试看你的问题,没有测试过。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

235

主题

1580

帖子

2

粉丝