STM32F411CE调试I2C遇到的问题

初次调试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都不会整。


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值