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

    文章

    2921

    浏览量

    64746
  • IIC
    IIC
    +关注

    关注

    11

    文章

    285

    浏览量

    37792
  • IIC接口
    +关注

    关注

    0

    文章

    23

    浏览量

    11576
收藏 人收藏

    评论

    相关推荐

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

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

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

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

    QT串口通信的简单使用

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

    简单认识无源器件

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

    智能驾驶芯片TOP20排名

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

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

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

    ACTBOX恒温恒湿试验箱:选择温度湿度其实简单

    ACTBOX恒温恒湿试验箱:选择温度湿度其实简单
    的头像 发表于 11-14 23:52 180次阅读
    ACTBOX恒温恒湿试验箱:选择温度湿度<b class='flag-5'>其实</b>很<b class='flag-5'>简单</b>

    如何写一个简单的装饰器

    今天介绍的是一个已经存在十三年,但是依旧不红的库 decorator,好像很少有人知道他的存在一样。 这个库可以帮你做什么呢 ? 其实简单,就是可以帮你更方便地写python装饰器代码,更重
    的头像 发表于 11-01 09:54 269次阅读
    如何写一个<b class='flag-5'>简单</b>的装饰器

    STM32基础知识:IIC概述与软件模拟IIC

    内部集成电路(Inter Integrated circuit )的简称叫做IIC,是一种简单的、半双工同步通信的串行通信接口,IIC总线是上世纪80年代(1982年)由飞利浦公司设计出来,当时的目的是为了给MCU和外围芯片提供
    的头像 发表于 10-26 11:47 670次阅读
    STM32基础知识:<b class='flag-5'>IIC</b>概述与软件模拟<b class='flag-5'>IIC</b>

    PCB板子上一坨黢黑的可不简单,你知道吗?

    软封装是一种芯片封装工艺,也称为邦定封装。它用金线将芯片内部电路与封装管脚连接,用环氧树脂将芯片贴装在印刷电路板上。这种封装技术成本低、空间节省、轻薄、散热效果好、封装方法简单。但是,它可能导致维修困难,因为管脚可能被黑胶覆盖,无法重新焊接合。封工艺则更先进,封装的单片机性能更优异。
    的头像 发表于 10-11 17:46 364次阅读

    IIC总线学习笔记

    IIC是飞利浦提出的一种通信总线结构,其硬件架构比较简单,仅包含SCL和SDA两条线。根据最新的IIC总线标准,IIC总线包含Standard-mode(100kbit/s)、Fast
    发表于 09-20 15:18 503次阅读
    <b class='flag-5'>IIC</b>总线学习笔记

    “简约而不简单”的射频开关设计

    在你拿着手机打电话或者上网时,你可能不会想到,在手机里有种小小的射频器件,在以每秒钟近千次的速度快速切换,帮助你享受到高速、低延迟、高清晰度的通信服务。这个小器件就是射频开关(RF Switch)。
    发表于 07-04 14:27 394次阅读
    “简约而<b class='flag-5'>不简单</b>”的射频开关设计

    如何自己构建一个简单的传感器模块

    传感器模块广泛用于许多数字和模拟应用。传感器的复杂程度差异很大,可以根据我们将要使用的应用进行选择。构建传感器模块并不难,我们可以使用最简单的组件自己完成。本文将带您演练如何自行构建简单的传感器模块。
    的头像 发表于 06-29 17:50 1017次阅读
    如何自己构建一个<b class='flag-5'>简单</b>的传感器模块

    测算不简单电源使用多久,可能会稍长一些

    计算UPS运行时间的常用公式非常简单,但是您必须首先知道一些额外的值。计算UPS电源能用多长时间?找出UPS电池的容量,单位为安培小时(Ah)。此信息应包含在UPS文档中、列表页上或电池本身上。找出
    的头像 发表于 06-27 14:52 460次阅读
    测算<b class='flag-5'>不简单</b>电源使用多久,可能会稍长一些

    连接器不简单

    连接器,作为电流或信号连接的关键元件,也是工业体系的重要组成部分。
    发表于 05-29 11:00 451次阅读
    连接器<b class='flag-5'>不简单</b>