我相信互联网搜索引擎可为我提供可靠、快速的答案,因此当我第一次遇到I2C协议时,我首先寻求互联网搜索引擎获得帮助。我的搜索给出如下响应:内部集成电路(I2C)协议是双向双线串行总线,其提供集成电路之间的通信链路。这一解释已经很清楚了,但我还有更多的问题:它究竟是什么?什么类型的设备使用I2C?I2C如何帮我解决系统中遇到的实际问题?

I2C是使主设备(例如处理器,微控制器(MCU)或专用集成电路(ASIC))能够与同一双线总线上的其它外围设备通信的流行通信协议。一条线专用于数据传输,而另一条用于时钟信号。想象它就像一个双车道公路:每个车道都有汽车从一端流向另一端,就像数据包将从主设备(处理器、MCU、ASIC)传输到外围设备(温度传感器、湿度传感器及其它设备)。

那I2C到底是什么呢……现在,为什么要使用它?I2C可以在同一总线上轻松实现多个外设 - 例如,使用各种传感器来监视服务器的温度。I2C协议实际上设计用于在单个总线上支持多个设备,而如串行外设接口(SPI)的其他协议的设计用于点对点单设备支持。双线I2C接口还可以帮助简化对四线SPI接口的布线,并减少通用输入/输出(GPIO)。

TI的用于构建I2C树状图的产品组合可以分为三个功能,如图1所示:缓冲转换器、I / O扩展器和I2C开关。

1:具有各种I2C功能设备的电子系统

 

当您的设计在集成电路(IC)之间的长走线和/或电压失配时遇到劣化信号时,I2C缓冲转换器可以帮助您。例如,如果您发现3.3V MCU I2C I / O和5V温度传感器之间存在电压失配,则可以使用I2C电压转换器(如PCA9306)。此外,对于长走线上的相同电压失配,您可使用缓冲转换器(如TCA9617B)来解决输出刷新信号时的电压差。

I2C I / O扩展器顾名思义 - 当选定的处理器无可用端口时,它们会扩展I / O数量,如图2所示。这些设备与标准GPIO扩展器不同,因为它们直接与I2C总线上的设备通信。该组合还提供了多种功能,具体取决于您的特定系统需求,例如通道数、复位引脚和电平转换。

2:微控制器或处理器使用I / O扩展器控制外设

 

I2C开关可以解决两个不同的问题。第一个问题与地址冲突有关。当同一总线上的两个设备具有相同地址时通常会发生冲突。如果系统在同一I2C总线上有两个温度传感器和两个湿度传感器,所有地址为0xFF - 一个I2C开关可以一次切换到单个传感器;见图3。第二个问题与功耗有关。I2C开关一次只为I2C总线的一部分供电,从而在不使用时保持总线的未使用部分掉电。

3:具有八个通道的I2C开关示例

 

起初,互联网搜索将会告诉您,I2C使系统设计人员能够轻松实现鲁棒的系统控制。这一协议不仅有用,而且还具有很多设备功能,可令您的系统受益。您可以使用缓冲中继器、I / O扩展器和I2C开关来增强,扩展并修改I2C总线实现,以满足您的独特设计目标。有关I2C设计的更多信息,请阅读应用注释“了解I2C总线”。

其信息

详细了解TI的I2C缓冲转换器、I / O扩展器和开关产品系列。

下载“I2C总线选择指南”。

I2C是什么,什么类型设备支持I2C,为什么要使用它?相关推荐

  1. Linux I2C核心、总线与设备驱动

    Linux I2C核心.总线与设备驱动 I2C总线仅仅使用SCL. SDA这两根信号线就实现了设备之间的数据交互,极大地简化了对硬件资源和PCB板布线空间的占用.因此, I2C总线非常广泛地应用在EE ...

  2. Linux I2C核心、总线与设备驱动(二)

    从上面的分析可知,虽然I2C硬件体系结构比较简单,但是I2C体系结构在Linux中的实现却相当复杂.当工程师拿到实际的电路板,面对复杂的 Linux I2C子系统,应该如何下手写驱动呢?究竟有哪些是需 ...

  3. Linux I2C核心、总线与设备驱动(一)

    本章导读 I2C总线仅仅使用SCL.SDA两根信号线就实现了设备之间的数据交互,极大地简化对硬件资源和PCB板布线空间的占用.因此,I2C总线被非常广泛地应用在EEPROM.实时钟.小型LCD等设备与 ...

  4. I2C子系统之适配器的设备接口分析(i2c-dev.c文件分析)

    1.驱动实现的原理 (1)驱动实现的思路:将I2C控制器的操作方法直接提供给应用,驱动本身只实现最简单的I2C总线收发数据的方法,具体I2C接口硬件的操作时序由应用去控制: (2)驱动只做了最基本的收 ...

  5. Arduino与Proteus仿真实例-I2C总线多个M24C01设备数据储存仿真

    I2C总线多个M24C01设备数据储存仿真 I2C 总线是一种非常流行且功能强大的总线,用于主机(或多个主机)与单个或多个从设备之间的通信. 下图说明了有多少不同的外设可以共享仅通过 2 条线连接到处 ...

  6. ZWAVE通过Alarm TypeSupported Get Command获得设备支持的告警类型

    Alarm TypeSupported Get Command qq:380939960 The Alarm TypeSupported Get Command is used to request ...

  7. linux kernel 2.6 i2c设备驱动程序框架介绍,linux设备驱动程序-i2c(2)-adapter和设备树的解析...

    linux设备驱动程序-i2c(2)-adapter和设备树的解析 (注: 基于beagle bone green开发板,linux4.14内核版本) 而在linux设备驱动程序--串行通信驱动框架分 ...

  8. I2C driver编写指导二:编写i2c client driver指南

    原文地址::http://blog.csdn.net/guoshaobei/archive/2010/06/08/5656001.aspx 译者:郭少悲 日期:2010/06/08 源文:linux- ...

  9. I2C协议详解 (Based Philips I2C spec)

    前言 Version 1.0 - 1992 此版本的 1992 I2C 总线规范包括以下修改: 省略了软件对从地址的编程. 这个功能的实现比较复杂,没有使用过. 省略了"低速模式" ...

最新文章

  1. 敏捷结果30天之第六天:周五回顾,找到三件做的好以及三件需要改善的事情...
  2. 【深度学习】基于注意力机制的Transformer处理医疗影像
  3. alipay html5 app,H5App支付宝开发详解
  4. 【STM32】串口通信编程
  5. 【TCP三次握手与四次挥手最强解析】
  6. JavaScript代码优化实战之一:缓存变量,关键字过滤
  7. Jenkins Ci系列目录
  8. ApacheCN 2019.4~7 总结
  9. 计算机容量单位比T,容量单位.比G大是T.比T大是E.比E大是什么?
  10. html5整个桌面背景图片,HTML5 body设置全屏背景图片 如何让body的背景图片自适应整个屏----实战经验...
  11. Platform(平台)
  12. Latex、XeLatex无法加粗
  13. 微信公众号跳转到指定的第三方微信小程序页面
  14. IRQL深入解析--IRQL级别
  15. 简单盘点游戏开发引擎
  16. c语言用switch编写春夏秋冬,利用switch实现春夏秋冬
  17. MAC主机eclipse连接parallels内win7虚拟机oracle
  18. Jmeter 添加kafka支持
  19. Excel按相同列内容合并表
  20. escape()和unescape()函数的使用方法

热门文章

  1. jqGrid资料总结
  2. Informatica_(2)第一个例子
  3. 递归 dfs 记忆化搜索 动态规划
  4. 利尔达NB-IOT的PSM和eDRX低功耗模式笔记
  5. HDU——T 1573 X问题
  6. js转义html,反转义
  7. 常见的Mule Esb下载地址
  8. Ubuntu在系统栏 给应用程序添加提示图标
  9. Linux shell中2>1的含义
  10. 源码安装Tomcat及配置