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

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

3天内不再提示

你眼中简单的IIC,其实并不简单

电子工程师 来源:网易号 作者:创易栈 2021-04-03 11:02 次阅读

01我们习以为常的IIC通常是什么样子?

在我们研发/应用工程师眼中,IIC的形象通常是如图这样的吧?(你们说是不是?)

JjEnei.png

nuEZZr.png

EJzmYz.png

是的,对于理想的硬件调程序,这个层面已经基本够用。(我是已经get到了)

02IIC还可以是这样的

Mn2m22.png

简单实用的IIC电平匹配电路,原理很简单、也很巧妙。

v2Qn2a.jpeg

Si8400芯片,做UART或者IIC隔离是很不错的。做隔离也有实际意义的:

比如涉及强电的板子,需要隔离后的UART口打印调试信息,方便debug;电容触摸按键调试中,某些产品采用隔离的IIC接口(如Azoteq,Cypress等芯片大部分采用IIC)调试能得到更准确的数据(原理上涉及到人体大地等构成的寄生电容,挺有意思,可以看创易栈的触摸按键相关内容)。

有朋友会问,我见过5V芯片和3V芯片,直接把IIC接在一起的,不需要做电压匹配呀?

这个不建议用。需要仔细看数据手册的:一般来说3V芯片的I/O都有如图的保护结构,导致SCL、SDA信号高电平被限制在3V+0.3V,5V芯片经常不能正确识别的。

EJZfem.png

03支持双电压的高速IIC接口

7zq6ra.jpeg

TI的TXS0102带OE功能的高速IIC接口芯片。

这个有什么好处呢?

当然有,除了支持电平匹配;从它的MOS结构也可以看出,对SCL和SDA的上升边缘有个加速过程,速度可以支持到2Mbps喔。

04触碰IIC的核心

每一个IIC总线器件内部的SDA、SCL引脚电路结构都是一样的,引脚的输出驱动与输入缓冲连在一起。其中输出为漏极开路的场效应管、输入缓冲为一只高输入阻抗的同相器[1]。这种电路具有两个特点:

①由于SDA、SCL为漏极开路结构,借助于外部的上拉电阻实现了信号的“线与”逻辑;

②引脚在输出信号的同时还将引脚上的电平进行检测,检测是否与刚才输出一致。为 “时钟拉伸”和“总线仲裁”提供硬件基础。

jURJje.jpeg

I2C总线接口内部结构

IIC设备对总线的操作仅有“把线路拉到地”——输出逻辑0。基于IIC总线的设计,线路上不可能出现电平冲突现象。如果一设备发送逻辑0,其他发送逻辑1,那么线路看到的只有逻辑0。也就是说,如果出现电平冲突,发送逻辑0的始终是“赢家”。总线的物理接法允许主设备往总线写数据的同事读取数据。这样两主设备争总线的时候“赢家”并不知道竞争的发生,只有“输家”发现了冲突——当写一个逻辑1,却读到了0——而退出竞争。

时钟拉伸(Clock stretching)

如果被控器希望主控器降低传送速度可以通过将SCL主动拉低延长其低电平时间的方法来通知主控器,当主控器在准备下一次传送发现SCL的电平被拉低时就进行等待,直至被控器完成操作并释放SCL线的控制控制权。这样以来,主控器实际上受到被控器的时钟同步控制。可见SCL线上的低电平是由时钟低电平最长的器件决定;高电平的时间由高电平时间最短的器件决定。这就是时钟拉伸,它解决了I2C总线的速度同步。

7b2AN3.jpeg

总线仲裁

假设主控器1要发送的数据DATA1为“101 ……”;主控器2要发送的数据DATA2为“1001 ……”总线被启动后两个主控器在每发送一个数据位时都要对自己的输出电平进行检测,只要检测的电平与自己发出的电平一致,他们就会继续占用总线。在这种情况下总线还是得不到仲裁。当主控器1发送第3位数据“1”时(主控器2发送“0” ),由于“线与”的结果SDA上的电平为“0”,这样当主控器1检测自己的输出电平时,就会测到一个与自身不相符的“0”电平。这时主控器1只好放弃对总线的控制权;因此主控器2就成为总线的唯一主宰者。

总结

① 对于整个仲裁过程主控器1和主控器2都不会丢失数据;

② 各个主控器没有对总线实施控制的优先级别;

③总线控制随即而定,他们遵循“低电平优先”的原则,即谁先发送低电平谁就会掌握对总线的控制权。

根据上面的描述,“时钟拉伸”与“总线仲裁”可以总结如下规律:

①主控器通过检测SCL上的电平来调节与从器件的速度同步问题——时钟拉伸;

②主控器通过检测SDA上自身发送的电平来判断是否发生总线“冲突”——总线仲裁。因此,I2C总线的“时钟同步”与“总线仲裁”是靠器件自身接口的特殊结构得以实现的。
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 硬件
    +关注

    关注

    11

    文章

    3228

    浏览量

    66073
  • IIC
    IIC
    +关注

    关注

    11

    文章

    298

    浏览量

    38249
  • IIC接口
    +关注

    关注

    0

    文章

    23

    浏览量

    11668
收藏 人收藏

    评论

    相关推荐

    简单了解SDK与APK的区别

    不少小伙伴在开发软件中会提到两个词:API和SDK。虽然它们看起来很专业,但其实背后的概念并不复杂。这篇文章能简单的帮你了解SDK与APK的区别。
    的头像 发表于 10-11 10:08 598次阅读

    SMBus变得简单

    电子发烧友网站提供《SMBus变得简单.pdf》资料免费下载
    发表于 09-18 14:45 3次下载
    SMBus变得<b class='flag-5'>简单</b>

    PCB打样不简单:这些特殊工艺知道吗?

    在电子产品的设计与制造过程中,印制电路板(PCB)扮演着至关重要的角色。PCB打样,即小批量试产PCB的过程,是电子工程师在设计好电路并完成绘制PCB后,向线路板工厂提交生产请求的关键环节。PCB打样不仅涉及标准的工艺流程,还包含多种特殊工艺,以满足不同设计需求和应用场景。本文将深入探讨PCB打样中的几种特殊工艺,包括金手指处理、阻抗控制、盲孔与埋孔技术、厚
    的头像 发表于 09-18 13:39 631次阅读
    PCB打样<b class='flag-5'>不简单</b>:这些特殊工艺<b class='flag-5'>你</b>知道吗?

    简单的C程序设计

    电子发烧友网站提供《最简单的C程序设计.pptx》资料免费下载
    发表于 05-28 16:41 9次下载

    学串口屏可以做什么简单的作品

    学习串口屏(通常指的是通过串行接口(如UART、SPI等)与微控制器通信的显示屏)后,可以制作多种简单的作品。
    的头像 发表于 05-09 10:13 387次阅读
    学串口屏可以做什么<b class='flag-5'>简单</b>的作品

    步进电机的简单介绍

    步进电机的命名,参数,转速简单介绍
    的头像 发表于 04-17 21:40 893次阅读

    热电阻与热电偶区别与测温原理分析

    热电偶是常见的温度测量元件,热电偶原理比较简单,它直接把温度信号转换成热电动势信号,通过电气仪表转换成被测介质的温度,虽然原理简单,但测量并不简单
    发表于 04-11 11:36 3310次阅读

    压榨辊轴颈磨损修复其实简单

    电子发烧友网站提供《压榨辊轴颈磨损修复其实简单.docx》资料免费下载
    发表于 03-13 15:37 0次下载

    如何确定芯片的方向 最简单的芯片原理

     最简单的芯片原理可以使用逻辑门芯片来说明。逻辑门芯片是由几个晶体管组成的电路,用于执行基本的逻辑运算。   最简单的逻辑门芯片包括与门(AND gate)、或门(OR gate)、非门(NOT gate)和异或门(XOR gate)等。
    的头像 发表于 01-25 15:47 1.4w次阅读
    如何确定芯片的方向 最<b class='flag-5'>简单</b>的芯片原理

    QT串口通信的简单使用

    QT串口通信是上位机和下位机通信常用的通信方式, 也是学习QT必须学会的基础知识, 这篇就简单介绍一下QT串口通信的简单使用.
    的头像 发表于 01-15 09:27 1773次阅读
    QT串口通信的<b class='flag-5'>简单</b>使用

    简单认识无源器件

    简单认识无源器件
    的头像 发表于 01-12 09:56 558次阅读
    <b class='flag-5'>简单</b>认识无源器件

    【CW32学习笔记】IIC接口-主机发送

    接着就是比较重要的部分了,IIC接口的收发并不是全自动的,因为一个完整的通信不仅包括发数据(地址、数据什么的),还包含收数据(啥也不干也得接收ACK信号),所以IIC通信的每个部分基本上都是收发易位的过程,
    的头像 发表于 01-10 15:59 594次阅读
    【CW32学习笔记】<b class='flag-5'>IIC</b>接口-主机发送

    智能驾驶芯片TOP20排名

    智能驾驶芯片排名并不简单只看AI算力,CPU、存储带宽、功耗和AI算力数值一样重要,这个下文会详细分析。
    的头像 发表于 12-28 10:29 2532次阅读
    智能驾驶芯片TOP20排名

    连接器端子压接:看似简单其实其中有门道……

    连接器端子压接:看似简单其实其中有门道……
    的头像 发表于 12-06 15:41 961次阅读
    连接器端子压接:看似<b class='flag-5'>简单</b>,<b class='flag-5'>其实</b>其中有门道……

    python最简单for循环例子

    Python是一种简单而又强大的编程语言,通过其清晰的语法和丰富的功能库,我们可以实现各种各样的任务。其中一个最基本的语法结构就是for循环,让我们来看一下如何使用for循环来编写一个最简单的例子
    的头像 发表于 11-21 14:53 928次阅读