STM32F411CE调试I2C遇到的问题

来源:互联网 发布:靠听记英语单词的软件 编辑:程序博客网 时间:2024/05/03 12:43
初次调试I2C驱动,先整理一下思路:

本次调试是调试STM32F411CE与BMP280通信,首先根据ST提供的参考例程对I2C进行配置,然后给BMP280发数据,没想到这一调就是两天。。。


对此,总结思路:

1.当通信失败,而且不知道问题在哪,首先确认I2C能通信。

(1)确认I2C总线是否有波形输出,方法:用一个循环不断的对外发送数据,注意因为只发送一次可能导致抓不到波形。

(2)如果没有波形输出,查看GPIO的配置是否正确,比如GPIO的时钟有没使能,I2C时钟有没使能,还有特别要注意I2C的GPIO选择的alternate function的配置。


(3)如果GPIO脚的配置都没有问题,那么看一下GPIO的硬件功能是否有问题。

          查看GPIO脚的硬件功能方法:把GPIO使能,对其进行拉高拉低,给个延时让其输出方波,并用示波器查看,如果有波形输出,说明GPIO的硬件功能基本上没什么问题了。

(4)GPIO脚的功能也没问题,那就只能看代码了,再检查一遍GPIO脚的配置吧,请上天保佑你看到你配错了,如果没配错那就跟一下代码看下I2C controler的寄存器根据datasheet确认一下是否正确配置了,加些打印判断一下代码卡在哪了是什么问题。。。上天保佑I2C总线能出波形吧。

(5)如果I2C总线用示波器看到有波形了,如果还是不能和slave通信,那检查一下slave的地址是否正确。

(6)如果slave地址也没问题,那看一下slave有没RESET脚,需要复位使能吗。。。如果根据datasheet复位使能还不行,那就是你的slave可能是坏的。


给所有的小白们,希望孩子们都好好学习,出来混总是要还的,我还是得快点还。。。白读了四年大学,连个I2C都不会整。


0 0
原创粉丝点击