I2C协议详解

文章目录

  • 概念
    • 工作模式
  • 原理
    • 工作原理
    • 工作流程
    • IIC协议的关键特点
    • IIC通信过程
  • 优点与缺点
    • 优点
    • 缺点

概念

IIC(Inter-Integrated Circuit)协议,也常被称为TWI(Two-Wire Interface)协议,是一种用于短距离通信的串行总线,主要设计用于连接微控制器和其外围设备。IIC协议使用两根线:串行数据线(SDA)和串行时钟线(SCL)。这种通信方式允许多个设备共享同一总线,并且可以以主设备或从设备模式进行通信。

工作模式

主设备模式: 设备可以发送数据到其它设备,或者从其它设备接收数据。
从设备模式: 设备只能被主设备读取或写入数据。这种工作方式的优点在于,它可以简化系统设计,减少设备间的连接线,提高系统的可靠性。
I2C的另一种工作模式是多主设备模式。在这种模式下,总线上可以有多个主设备。这种模式可以提供更灵活的设备控制方式,但其实现相对复杂。如果两个主设备同时尝试控制总线,会发生冲突,必须通过仲裁机制解决。

在I2C总线上,每个设备都有一个唯一的地址,主设备通过这个地址来识别和访问从设备。这个地址通常是7位或10位,可以通过编程来设置。I2C总线使用两线进行通信,一线用于数据(SDA),另一线用于时钟(SCL)。

原理

I2C(Inter-Integrated Circuit)是一种串行通信协议,因其简单易用而广泛应用于微控制器和各种外围设备之间的通信。I2C通信只需两条线路:数据线SDA和时钟线SCL。其中,SDA用于在设备之间传输数据,而SCL则提供时钟信号,控制数据传输的速度。

工作原理

I2C的工作原理很简单。在I2C通信中,主设备控制时钟线SCL,而数据线SDA用于在主设备和从设备之间双向传输数据。主设备通过SDA发送数据给从设备,同时使用SCL产生时钟信号,从设备根据时钟信号读取SDA上的数据。反过来,从设备也可以在主设备的控制下,通过SDA发送数据给主设备。

工作流程

在这里插入图片描述
在这里插入图片描述
以下是I2C通信的一般工作流程:

  • 主设备产生开始信号: 主设备通过将SDA从高电平拉低到低电平,同时保持SCL处于高电平,来产生开始信号。这个信号会被所有从设备检测到,从而知道I2C通信即将开始。
  • 主设备发送地址: 主设备发送一个7位的地址(有些设备可能是10位地址),这个地址用于指示要通信的从设备。地址后面还跟着一个位,用于指示主设备是要读取从设备的数据,还是要向从设备写入数据。
  • 从设备响应: 如果从设备检测到自己的地址,它就会在SDA上产生一个低电平的应答信号,以告诉主设备它已经准备好了。
  • 数据传输: 主设备和从设备开始互相传输数据。每传输完8位数据,接收方就需要产生一个应答信号。
  • 主设备产生停止信号: 数据传输完成后,主设备会产生一个停止信号,以结束I2C通信。停止信号是通过将SDA从低电平拉高到高电平,同时保持SCL处于高电平来产生的。

IIC协议的关键特点

  • 两线制通信: 如上所述,IIC协议使用SDA和SCL两根线进行通信。
  • 多主多从: 总线上可以有多个主设备和多个从设备。主设备负责生成时钟信号并开始通信,从设备响应主设备的请求。
  • 地址寻址: 每个从设备都有一个唯一的地址。当主设备想要与特定的从设备通信时,它会发送这个地址。
  • 数据传输速率: IIC协议定义了不同的速度标准,包括标准模式(最高100 kbps)、快速模式(最高400 kbps)、快速模式加(最高1
    Mbps)和高速模式(最高3.4 Mbps)。
  • 应答机制: 在数据传输过程中,接收方需要发送一个应答(ACK)信号来确认数据已成功接收。如果接收方没有发送ACK,发送方将停止传输。
  • 仲裁和冲突检测: 如果两个主设备尝试同时控制总线,IIC协议通过仲裁机制来决定哪个设备继续控制总线。此外,协议还包含冲突检测机制,以确保数据的完整性。
  • 支持不同类型的传输: IIC协议支持不同类型的数据传输,如字节传输、字传输和块传输。
  • 可扩展性: 理论上,IIC总线可以连接很多设备,但实际上受到总线电容和信号衰减的限制。

IIC通信过程

  • 启动条件: 主设备通过设置SDA为高电平,然后在SCL为高电平时将其拉低来产生启动条件。
  • 地址和读/写位: 主设备发送7位从设备地址,后面跟随一个读/写位(0表示写操作,1表示读操作)。
  • 应答位: 从设备通过拉低SDA来发送ACK(如果准备好接收或发送数据)或NACK(如果无法响应请求)。
  • 数据传输: 数据以8位字节传输,每个字节后面跟随一个ACK或NACK位。
  • 停止条件: 主设备通过在SCL为高电平时将SDA从低电平拉高来产生停止条件,表示通信结束。
  • 时钟同步: SCL线上的时钟信号用于同步数据传输,确保数据在SDA线上稳定后发生变化

优点与缺点

优点

  • 硬件资源节约: IIC协议只需要两条线(SDA数据线和SCL时钟线)来完成通信,大大减少了所需引脚数量,从而节省了硬件资源。
  • 支持多主多从设备: IIC协议允许多个主设备和多个从设备在同一总线上通信,增强了系统的灵活性和可扩展性。
  • 简单的时序控制: IIC协议的时序逻辑相对简单,易于软件实现和硬件设计,降低了开发难度。
  • 易于实现和调试: 由于其协议规范明确,通信过程直观,因此在实际应用中容易实现和故障排查。
  • 广泛应用: IIC协议因其上述优势,被广泛应用于各种微控制器、传感器、显示器等设备之间的通信。

缺点

  • 传输速率有限: 标准模式下IIC的最大传输速率为100kbps,高速模式下可达400kbps,但对于某些高速数据传输应用而言,这样的速率可能不够。
  • 总线长度和负载限制: IIC总线上的设备数量和总线的物理长度受限,过长的总线或过多的挂载设备会导致信号衰减和干扰问题,影响通信稳定性。
  • 缺乏错误检测和纠正机制: 虽然有ACK/NACK机制来确认数据传输,但在噪声环境下,IIC协议缺乏有效的错误检测和纠正机制,可能影响数据的完整性。
  • 半双工通信: IIC协议是半双工的,意味着数据线在某一时刻只能进行发送或接收,不能同时进行,这限制了数据交换的效率。
  • 不支持多点广播: IIC协议不支持多点或多播通信,每一个数据包都必须明确指定一个单独的从设备地址,这在需要广播消息到多个设备的场景下不太适用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/662600.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CyberDAO M级共识交流会·西安站圆满落幕:共筑Web3美好未来

CyberDAO M级共识交流会于2024年5月28日在西安隆重举行,这是一场CyberDAO精英汇聚的盛会,以同心共筑,志在必达为主题口号与DAO精英携手并进,共筑CyberDAO美好宏图。CyberDAO的使命是降低WEB3的门槛,帮助用户轻松抓住行…

STM32的时钟介绍

目录 前言1. 简介1.1 时钟是用来做什么的1.2 时钟产生的方式 2. 时钟树的组成2.1 时钟源2.1.1 内部时钟2.1.2 外部时钟 2.2 PLL锁相环2.3 SYSCLK2.4 AHB和HCLK2.5 APB和PCLK2.6 总结 3. STM32时钟的使用步骤4.我的疑问4.1 使用MSI和HSI有什么区别吗?4.2 MSI的频率为…

【ai】livekit:Agents 4: livekit-plugins-openai和LiveKit Plugins Silero安装与分析

先提高下性能然后本文 继续按照 上一篇【ai】livekit:Agents 3 : pythonsdk和livekit-agent的可编辑模式下的安装构建 livekit-gent的插件。pycharm 工程 配置Microsoft Defender 排除列表 livekit-plugins-openai 本地安装

window自动启动bat文件

开机自动开启远程桌面, WinR 执行netplwiz 命令进入设置;取消勾选,可选择所需用户,点击应用,输入远程的密码即可 开机自动开启远程桌面, WinR 执行netplwiz 命令进入设置;取消勾选&#xff0…

新书推荐—华为HCIA路由交换技术实战

新书推荐—华为HCIA路由交换技术实战 由HCIE认证讲师、技术能手、ICT大赛优秀指导教师、教学名师、国家规划教材作者联袂编撰,让学习不再是“硬”茬,而是“嗨”起来! 《华为HCIA路由交换技术实战》 作者黄君羡组编正月十六工作室书号978-7-12…

Linux 编译器gcc/g++使用

gcc/g同理 编译器运行过程 1. 预处理(进行宏替换) gcc -E a.c -o a.i 预处理后还是c语言 -E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面 告诉gcc,从现在开始进行程序的翻译,将预处理工作做完停下 2. 编译&#x…

ETLCloud中如何执行SQL脚本

SQL脚本 在数据库管理与数据分析的广阔领域中,SQL(Structured Query Language,结构化查询语言)脚本扮演着举足轻重的角色。作为一门专为关系型数据库设计的编程语言,SQL不仅能够执行数据的检索、更新、插入及删除等基…

python列表元素操作与函数应用详解

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、列表元素加一的实现方法 示例代码 二、列表生成式的简化操作 三、列表反转函数revers…

解密网络流量监控:优化IT运维的利器

引言: 在当今数字化时代,网络流量监控是维护网络稳定与业务连续性的关键。作为一名资深网络工程师,我将分享一些关于网络流量监控的重要知识,并探讨如何在IT运维中运用这一工具优化网络性能,确保业务的顺畅进行。 1. 网…

jquery---ajax方法示例

ajax方法 $.ajax({name:value, name:value, ... }) ajax方法有一个参数,一定长度的对象,内部指定了ajax的请求地址和格式,方式等等,它可以有以下的属性和值 示例 这里展示了一个简单的get请求图片url的实例 let data; let url…

压力测试JMeter

压力测试JMeter 1 下载JMeter1.1 测试计划1.2 JMeter Address Already in use 错误解决1.3 java 内存模型1.4 jconsole与jvisualvm1.5 优化方向1.6 Nginx动静分离 1 下载JMeter 官网地址:https://jmeter.apache.org/download_jmeter.cgi 运行apache-jmeter-5.6.3\…

Linux 驱动设备匹配过程

一、Linux 驱动-总线-设备模型 1、驱动分层 Linux内核需要兼容多个平台,不同平台的寄存器设计不同导致操作方法不同,故内核提出分层思想,抽象出与硬件无关的软件层作为核心层来管理下层驱动,各厂商根据自己的硬件编写驱动…

手把手从0到1教你做STM32+FreeRTOS智能家居--第10篇之ASR-PRO语音识别模块

前言 先看实验效果,通过ASR-PRO语音智能识别控制模块,来控制STM32单片机实现对应的控制功能。因为后台好多小伙伴私信问用的是什么语音模块,并且很少在网上看到如何使用此模块相关的文章,所以我将会在本篇文章详细介绍一下此模块…

国际数字影像产业园|科技与文创产品创意集市,共筑创新文化新高地

5月29日,为进一步增强园区与企业之间粘性,不断激发企业的创新活力,园区举办了“数媒大厦科技与文创产品创意集市活动”。本次活动由成都树莓信息技术有限公司主办,成都目莓商业管理有限公司、树莓科技(成都&#xff09…

成都欣丰洪泰文化传媒有限公司助力品牌快速崛起

在当今数字化浪潮汹涌的时代,电商行业作为新经济的代表,正以其独特的魅力和无限的潜力,引领着商业模式的创新与变革。在这个充满机遇与挑战的领域里,成都欣丰洪泰文化传媒有限公司凭借其专业的电商服务能力和前瞻性的战略眼光&…

【Paddle】Inplace相关问题:反向传播、影响内存使用和性能

【Paddle】Inplace相关问题:反向传播、影响内存使用和性能 写在最前面inplace 的好处有哪些?能降低计算复杂度吗在反向传播时,Inplace为什么会阻碍呢?“计算图的完整性受损”表达有误原地操作 sin_()为什么原地操作会阻碍反向传播…

IPFoxy Tips:海外代理IP适用的8个跨境出海业务

在当今数字化时代,互联网已经成为商业和个人生活不可或缺的一部分。IP代理作为出海业务的神器之一,备受跨境出海业务人员关注。IPFoxy动态、静态纯净代理IP也根据业务需求的不同,分为静态住宅、动态住宅、静态IPv4、静态IPv6四种类型代理。那…

祝贺!阿里云PolarDB斩获数据库国际顶会ICDE 2024工业赛道最佳论文

5月17日消息,在荷兰举行的国际顶级数据库学术会议ICDE 2024上,阿里云斩获工业和应用赛道的“最佳论文奖”,这也是中国企业首次获此殊荣。阿里云PolarDB创新性地解决了数据库Serverless中跨机事务迁移的核心难题,将跨机迁移时间压缩…

零经验转行的人,嵌入式软件开发项目经历咋办?

零基础转行,首先一定要系统的把基础知识学一遍,这样就有个系统的概念。先说一下前置知识,因为你完全没基础,这些知识还是有必要了解的,要了解一下刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌…

2024年03月 Python(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,共50分) 第1题 以下选项中,创建类正确的是?() A: class test1:def prt(self):……B: class Mg(