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功能进行调试。
原文标题:二、i2c开发总结
文章出处:【微信公众号:爱搞研究的阿灿】欢迎添加关注!文章转载请注明出处。

小型超声波风速风向传感器与机械式风速风向传感器的不同
猴子请来的?说好的新旗舰叫锤子R1 结果却让你意想不到
百度Q2财报公布 自动驾驶汽车成报告亮点
三星实际上计划在2021年推出四款可折叠手机
六足机器人制作过程
I2C通信开发障碍以及总结
意大利建立起首个LED植物照明垂直培育农场
如何快速进行批量化的PCB测试分析?
魅族18系列新旗舰详细规格配置参数一览
高电平稳定时该如何处理呢?
华为去年发布的麒麟970引入了AI功能
如何制作或更换RC​​汽车天线
物联网网关在工业计算中的应用是怎样的
简述无桥PFC的种类
第三代半导体碳化硅(SiC)行业研究报告:市场空间、未来展望、产业链深度梳理
在ICD上做一个简单的查表程序
红米Note 2;小米最失败的作品
同步buck电路的mos自举驱动可以降低mos的开关损耗吗?
一种实用的三相有源滤波器控制策略的研究
索泰推出纯白色设计RTX 3080 Trinity系列