I2C通信开发障碍以及总结

一、实际应用开发中遇到的“坑”

  (1)不要使用逻辑分析仪的自动分析功能,这款软件BUG太多,波形的分析还是需要自己根据时序来,不要依赖工具;
在这里插入图片描述
  (2)在I2C的时序通信过程中,从机必然是要有ACK信号回复的,不然整个通信是不可能进行下去。之前以为ACK并非从机发送的,即使没有从机也可以在GM5的引脚上观察到完整的I2C时序图,卡在这里很久。如果没有从机,逻辑分析仪只能抓取到主机两次寻址的波形。
在这里插入图片描述
  (3)关于I2C从设备地址的问题,之前在开发中是直接把从设备地址写上去,后面发现无论使用任何方法都无法启动设备,一度卡了很久,后面在问题的分析过程中发现原厂的驱动会把地址左移一位。
在这里插入图片描述
  所以我们需要把设备地址右移一位后再使用:
在这里插入图片描述
  (4)关于外设的电源供电问题,一定要严格按照说明来,比如RTC module的供电是5V,OLED屏幕的供电是3.3V,那么就不能使用GM5的3.8V VDD引脚进行供电,会提高bug出现的几率或者无法启动外设。可以借用DC POWER SUPPLY进行供电。
  (5)由于我拿到手的RTC和OLED只是外设,没有芯片手册和说明书,所以在确定外设的从设备地址这件事情上耽误了很长时间。但是同一类型的外设的从设备地址也是有规律的,比如时钟RTC的地址一般是0X68,OLED的地址一般是0X3C或者0X3D,红外传感器的地址是0X60。具体的常见I2C从设备地址可以参考文章https://www.arduino.cn/thread-84222-1-1.html,一篇非常完整的总结。

二、I2C开发总结

  如果遇到了故障,一般而言排故的方法遵循以下步骤:
  (1)首先检查硬件本身,如果主设(GM5)或者外设(OLED屏幕和RTC时钟模块)本身就有问题,模块本身烧掉了肯定无法实验成功,所以要确保硬件本身没有问题,对外设的检查可以使用替换法或者读寄存器的地址。
  (2)第二步就是检查线路的连接,线路是否正确连接。一般先连线GND,在连接数据线(I2C、SPI通信数据线),确认无误后最后再连线VCC进行供电。同时请确保杜邦线的良好。
  (3)最后才是软件层次的检查。先要确保你的参数是正确,比如设备地址;然后是对空间的申请释放、野指针的不当操作、一级指针二级指针的错误使用;对故障的定位需要使用大量log信息打印来锁定故障点在哪里,也可以使用ResearchDownload的DBG功能进行调试。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱搞研究的阿灿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值