0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

I2C通信开发障碍以及总结

硬件设计解析 来源:爱搞研究的阿灿 作者:爱搞研究的阿灿 2023-04-17 16:35 次阅读

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

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

572bfa14-da9f-11ed-a826-dac502259ad0.png


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

574dce64-da9f-11ed-a826-dac502259ad0.png


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

57730b98-da9f-11ed-a826-dac502259ad0.png


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

577ce6b8-da9f-11ed-a826-dac502259ad0.png


  (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
    +关注

    关注

    28

    文章

    1347

    浏览量

    120830
  • 逻辑分析仪
    +关注

    关注

    3

    文章

    200

    浏览量

    22914
  • RTC
    RTC
    +关注

    关注

    2

    文章

    484

    浏览量

    65444
  • I2C通信
    +关注

    关注

    0

    文章

    22

    浏览量

    8756
收藏 人收藏

    评论

    相关推荐

    I2C总线——总结

    I2C总线——总结
    发表于 08-07 16:09

    I2C协议总结

    本帖最后由 eehome 于 2013-1-5 10:02 编辑 I2C协议总结
    发表于 08-20 23:13

    I2C通信

    I2C通信怎么利用串口来检测呢。(比如向串口发送一些汉字等数据)
    发表于 04-22 15:18

    I2C通信问题

    //定义从机读控制字节typedef unsigned char uint8;uint8 date;***it SDA=P2^0;//定义I2C通信的数据线***it SCL=P2^1
    发表于 10-05 17:35

    I2C总线设计和测试在嵌入式系统的应用

    I2C是一种中低数据速率主/从通信总线。物理层是一种简单的信号交换协议,该协议基于总线设备以及用于驱动或释放总线线路设备之上的集电极开路输出。简单的硬件设计和较低的数据速率使得所有的工程师都能利用
    发表于 06-19 08:25

    i2c通信协议

    个8位的数据。器件地址的组成:4(设备ID)+3(可编程地址)+1(读写控制位)总结i2c通信协议是同步通信,MCU通过器件地址查找要通信
    发表于 03-06 16:15

    I2C总线的要点总结

    [导读] 前文总结了单片机串口个人认为值得注意的一些要点,本文来梳理一下 I2C 总线的一些要点。这个题目有点大,本文对于 I2C 其实很多地方也没整清楚,只为了与前文形成系列,如果大家...
    发表于 07-26 08:01

    什么是IIC通信I2C

    IIC通信I2C(IIC,Inter-Integrated Circuit),两线式串行总线,由PHILIPS公司开发用于连接微控制器及外围设备。它是由数据线SDA和时钟线SCL构成的串行总线,可发
    发表于 08-03 07:46

    I2C的简介

    一、I2C的简介I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、 CAN 等通讯协议
    发表于 08-20 06:58

    I2C通信协议硬软件

    目录12C通信协议硬软件I2CAHT20测温湿度参考12C通信协议I2C
    发表于 08-23 07:42

    I2C协议以及I2C读写EEPROM

    I2C协议以及I2C读写EEPROM实验文章目录I2C协议以及I2C读写EEPROM实验
    发表于 08-23 08:25

    I2C使用步骤

    文章目录一、I2C简介软件I2C硬件I2C软件I2C和硬件I2C的区别二、使用步骤1.引入库2.
    发表于 08-23 06:22

    STM32硬件I2C重新编制I2C通信流程

    怎么用软件模拟I2C?怎样去编制I2C通信流程?
    发表于 12-14 07:09

    I2C通信协议的原理是什么

    I2C通信协议I2C通信原理I2C通信原理:I2C
    发表于 02-17 07:16

    I2C通信详解

    关于蓝桥杯嵌入式板子的I2C,如果你以前没有接触过I2C通信。重点:懂得通过电路图判断出I2C设备的地址会看I2C读写时序图。底层驱动,考试
    发表于 02-28 11:24