关于STM32的硬件IIC使用问题解决方案

最近公司上STM32,对新的东西不太熟悉。直接上手,平台配置啥的都还算顺利,毕竟八位机平台的东西在。到硬件IIC的时候就出大问题了,刚刚上板子的PCF8563(RTC),我也懒,直接就用ST官方给的库。刚刚开始几次可以读写PCF8563,后来直接就杯具。查了两天,发现连STAR信号都发不出来,直接卡在IIC时钟使能那个地方。总线永远是忙!实在没办法。。。

求助 几个朋友,其中一种说法是:STM32的抗干扰问题,导致IIC总线有动作,让IIC器件认为忙。要在VDD和VSS,接近管脚的地方加104的电容。有可能是这种原因,不过我手头板子限制,我没办法加电容,我没有试,要不谁试一下。

然后到网上一搜,乖乖,原来不只是我碰到这个问题,N多人都碰到这个问题,官方也出了一个修定基本承认这是一个硬件BUG。杯具了,很多人都直接用IO直接模拟了。我的日程安排也打算,再弄一个早止,如果不成我也直接用IO模拟了。

继续调,继续搜。在一个BLOG(实在对不起,由于大量的查看网页,我实不记得那博客是哪的了)里看到有这么一个说法:首先是,应用时序不完全标准。其次是,IIC自动ACK的问题。受这个启发我从新整理IIC的时序。

由于是总线一开始就是忙,那我在配置IO的时候,就先更改IO状态,让IO先全部拉高。想当于强制释放总线,然后再配置IO和IIC。一看,嘿嘿,IIC不忙了。大喜!!!理所当然,接下来的写函数也正确了,至少没有出现STAR发不出的情况。到读数据,杯具又出现了!又当

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值