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

    文章

    3555

    浏览量

    68741
  • IIC
    IIC
    +关注

    关注

    11

    文章

    308

    浏览量

    40377
  • IIC接口
    +关注

    关注

    0

    文章

    23

    浏览量

    11968
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    汉威科技薄膜铂电阻温度传感器到底有多强

    测量温度简单吗?简单却也不简单,为了测得准,人类已经努力了上千年!薄膜铂电阻温度传感器到底有多强?为何是高端温度传感器的代表?
    的头像 发表于 11-28 11:51 481次阅读

    【LoRa模组】无卡有人感应开关怎么做?

    在智慧楼宇、宿舍、公寓、办公楼等场景中,一个看似简单的需求越来越普遍: “不刷卡、不按键,只要有人,就自动亮灯/开门;没人就自动关闭、节能。” 实现这个“真正自动”的开关,背后其实并不简单。尤其在
    的头像 发表于 11-25 16:36 337次阅读
    【LoRa模组】无卡有人感应开关怎么做?

    看似简单的自动泊车需要哪些技术支撑?

    [首发于智驾最前沿微信公众号]要实现自动泊车,背后需要哪些技术作为支撑?自动泊车作为现在很多车主应用非常多的一项功能,看似只是简单的入库操作,但想要完美入库,其实需要非常多的技术支持。   感知
    的头像 发表于 10-30 09:09 469次阅读
    看似<b class='flag-5'>简单</b>的自动泊车需要哪些技术支撑?

    使用瑞萨RUHMI工具实现AI模型部署过程

    AI无处不在。在部署AI,的竞争对手也在部署AI,几乎所有人都在做AI。然而,AI并不简单,不仅在生成有效模型上复杂,在部署上同样充满挑战。
    的头像 发表于 10-17 10:00 2338次阅读
    使用瑞萨RUHMI工具实现AI模型部署过程

    LM3881系列 3轨简单功率定序器技术手册

    LM3881 简单电源定序器提供了控制上电和电源的最简单方法 多个电源(开关或线性稳压器)的关闭。通过错开启动 序列,可以避免可能影响 系统的可靠性。
    的头像 发表于 08-19 13:49 724次阅读
    LM3881系列 3轨<b class='flag-5'>简单</b>功率定序器技术手册

    莱姆传感器接线指南:简单易懂的步骤

    实用的接线技巧和注意事项,让轻松上手!什么是莱姆传感器?首先,简单介绍一下莱姆传感器。莱姆传感器(LimeSensor)是一种用于监测土壤或水质的传感器,它能够实
    的头像 发表于 08-04 11:27 639次阅读
    莱姆传感器接线指南:<b class='flag-5'>简单</b>易懂的步骤

    谐波怎么处理最简单的方法

    谐波问题是电力系统中常见的电能质量问题,它不仅影响设备正常运行,还可能造成能源浪费和设备损坏。针对谐波处理的最简单方法,我们可以从以下几个方面入手: 一、理解谐波产生的原因 谐波主要由非线性负载产生
    的头像 发表于 07-13 16:35 1814次阅读
    谐波怎么处理最<b class='flag-5'>简单</b>的方法

    一个简单的串联电池组充放电实验

    文章介绍了电池充放电中的数据采集并简单阶段了电池容量
    的头像 发表于 07-03 14:41 1099次阅读
    一个<b class='flag-5'>简单</b>的串联电池组充放电实验

    MID电表很难,其实一点不简单!# 电能表 #MID认证

    电表
    瑞银电子
    发布于 :2025年04月28日 15:10:41

    RV1126 实现简单的UI开发示例

    在RV1126上实现简单的UI开发实例
    的头像 发表于 04-09 16:08 898次阅读
    RV1126 实现<b class='flag-5'>简单</b>的UI开发示例

    看完这篇,SPI其实也很简单嘛(可下载)

    首先我们来简单介绍一下SPI,SPI是串行外设接口(SerialPeripheralInterface)简单来讲就是它一种高速的,全双工,同步的通信总线被各种总线搞的晕头转向的人来说就会问了
    发表于 03-26 14:29 2次下载

    为什么IIC总线会难住这么多人?

    为什么 IIC 总线让很多人头疼?其实可以把它想象成一场复杂的 "设备对话游戏",新手容易在这些地方栽跟头:
    的头像 发表于 03-12 10:14 810次阅读
    为什么<b class='flag-5'>IIC</b>总线会难住这么多人?

    Samtec分立式电缆组件产品推荐

    对于硬件工程师,互连设计是门基本功。有经验的工程师都知道,互连设计除了要实现所需的电气连接性能,还要满足小型化、可靠性、安全性等诸多方面的要求,做起来并不简单
    的头像 发表于 02-19 11:25 868次阅读
    Samtec分立式电缆组件产品推荐

    map指令简单介绍

    当然这里写的都是官方文档是已经写过的,我简单抄一下哈。
    的头像 发表于 02-13 09:54 674次阅读

    99%的人都不知道,气密性测试仪器竟如此简单

    大上,但气密性测试仪器的原理其实非常简单,甚至比你想象的要容易理解得多。想象一下,给气球充气:当你往气球里吹气时,气球会逐渐膨胀。如果捏住气球的吹气口,气球就会
    的头像 发表于 02-06 14:19 1029次阅读
    99%的人都不知道,气密性测试仪器竟如此<b class='flag-5'>简单</b>!