I2C通信开发障碍以及总结-i2c scl

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

  (1)不要使用逻辑分析仪的自动分析功能,这款软件BUG太多,波形的分析还是需要自己根据时序来,不要依赖工具;

I2C通信开发障碍以及总结-i2c scl

  (2)在I2C的时序通信过程中,从机必然是要有ACK信号回复的,不然整个通信是不可能进行下去。之前以为ACK并非从机发送的,即使没有从机也可以在GM5的引脚上观察到完整的I2C时序图,卡在这里很久。如果没有从机,逻辑分析仪只能抓取到主机两次寻址的波形。

I2C通信开发障碍以及总结-i2c scl

  (3)关于I2C从设备地址的问题,之前在开发中是直接把从设备地址写上去,后面发现无论使用任何方法都无法启动设备,一度卡了很久,后面在问题的分析过程中发现原厂的驱动会把地址左移一位。

I2C通信开发障碍以及总结-i2c scl

  所以我们需要把设备地址右移一位后再使用:

I2C通信开发障碍以及总结-i2c scl

  (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开发总结

文章出处:【微信公众号:爱搞研究的阿灿】欢迎添加关注!文章转载请注明出处。

免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:I2C通信开发障碍以及总结-i2c scl https://www.yhzz.com.cn/a/8620.html

上一篇 2023-04-19 15:46:41
下一篇 2023-04-19 15:50:19

相关推荐

联系云恒

在线留言: 我要留言
客服热线:400-600-0310
工作时间:周一至周六,08:30-17:30,节假日休息。