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

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

3天内不再提示

通信教程03_I2C简史 基础原理及协议

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 作者:黄工的嵌入式技术 2020-02-05 13:14 次阅读

教程由作者strongerHuang于2019年09月原创发布。

标签:串口、 I2C通信

版权所有:禁止商用

申明:该文档仅供个人学习使用,转载请公众号联系作者授权。

1写在前面

本打算先写点UART相关内容,但UART基础知识在前面第一篇文章都简单写过,也相信大家不陌生,这里就不再次赘述。

I2C是目前使用较多的一种总线,一般用于连接各种从设备,比如:EEPROM存储器、温湿度传感器、角速度计等。

额外提一句,初入职场的人有必要学习了解下,掌握I2C算是最基本的技能。

2I2C简史

1980年,飞利浦公司为了让各种低速设备(飞利浦芯片)连接起来,就开始着手研发通信的总线。

1982年,原始版本,使用了100KHz通信速率,提供7位地址,将总线上的器件数量限制为112(有几个保留地址)。

1992年,发布第一个规范,增加了400kHz的快速模式以及扩展的10位地址空间。

1998年,随着技术的进步,通信速率要求越来越高,达到了高速3.4 MHz,再到后面升级至5MHz,同时使用差分信号以改进抗噪声能力等。

I2C版本历史:

额外说一下SMBus:

1995年,英特尔在I2C基础上推出了一种变体称为“系统管理总线”(SMBus)。SMBus是一种更严格控制的格式,旨在最大限度地提高PC主板上支持IC之间通信的可预测性。

SMBus之间最显着的区别在于它将速度限制在10kHz至100kHz之间,而I2C则可以支持0kHz至5MHz的器件。

3I2C基础内容

I²C:Inter-Integrated Circuit,字面意思是集成电路之间,是I²C Bus简称。

I2C只需要两根电线,这两根线最多可支持1008个从设备,实现同步串行通信。

与SPI不同的是,I2C可以支持多主机,多从机的总线。

3.1 I2C两线信号

每个I2C总线由两个信号组成:SCL时钟信号,SDA数据信号。时钟信号总是由当前总线主机产生。

与UART、SPI不同,I 2 C总线驱动器是开漏(不了解开漏的请自行百度),意思是它们可以将相应的信号线拉低,但不能将其驱动为高电平。

每条信号线上都有一个上拉电阻,当没有器件将其置为低电平时,将信号恢复为高电平。

3.2 信号电平

通常,I2C总线信号电平5V、3.3V居多,如果总线上器件兼容这两种电平,可以直接使用。

如果信号电压相差很大(5V和2.5V),或者电平不兼容,就需要进行电平转换才行。

4I2C协议

I2C对初学者来说,难点就在于理解其中协议,下面从几个简单角度说一下。

4.1 收发基本原理

I2C的两个总线:SCL时钟信号,SDA数据信号。SCL由主机产生,SDA由主机或者从机产生。

I2C是同步串行通信,同时它属于半双工,也就是说同一时间SDA只能由一个设备发送信号。

这样,你就会发现,SDA上的信号(数据),有时候是主机的,有时候是从机的。

4.2 基本协议:7/10位地址

I2C支持7位地址和10位地址,消息主要分为两种:地址和数据。

7位地址:

10位地址:

除了地址和数据,还有开始条件、停止条件、读写,以及应答信息(上图小字描述)。

4.3 开始和停止

SDA数据线由高 -> 低 为总线开始条件;

SDA数据线由低 -> 高 为总线结束条件;

4.4 应答(ACK)和非应答(ACK)

应答和非应答发生在每个字节之后,是由接收方向发送方发出确认信号,表明“数据”已成功接收,并且可以继续发送下一字节数据。

应答有很多种情况,初学者可以参考协议手册,里面有详细讲述。

I2C协议手册地址:

https://www.nxp.com/docs/en/user-guide/UM10204.pdf

我之前结合模拟I2C代码讲述I2C的文章:

更加深入理解I2C总线、协议及应用

5

说明

1.该文档仅供个人学习使用,版权所有,禁止商用。

2.本文由我一个人编辑并整理,难免存在一些错误。

3.本文收录于公众号『嵌入式专栏』,关注微信公众号回复【通信教程】即可查看全系列教程。

6最后

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

    关注

    28

    文章

    922

    浏览量

    40581
  • 通信
    +关注

    关注

    18

    文章

    6114

    浏览量

    136769
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1499

    浏览量

    125372
收藏 人收藏

    评论

    相关推荐

    如何实现iic协议通信

    )和时钟线(SCL)。所有连接到I2C总线的设备都共享这两条线。I2C协议是主从模式的,即有一个主设备控制通信,而其他设备作为从设备响应主设备的请求。 1. 信号线 SDA(数据线)
    的头像 发表于 02-05 11:27 263次阅读

    I2C总线通信原理 如何设计I2C总线电路

    I2C总线通信原理 I2C(Inter-Integrated Circuit)总线是一种用于集成电路之间进行通信的串行通信协议。它最早由飞利
    的头像 发表于 01-31 15:01 387次阅读

    基于I2C总线的智能家居应用

    随着科技的飞速发展,智能家居系统已经成为现代生活的一个重要组成部分。I2C(Inter-Integrated Circuit)总线是一种串行通信协议,广泛应用于微控制器和各种传感器之间,因其简单
    的头像 发表于 01-17 16:21 219次阅读

    I2C总线的工作模式介绍

    在现代电子系统中,I2C总线作为一种多主机、多从机的串行通信协议,扮演着至关重要的角色。它允许多个设备共享同一总线,进行数据传输,从而简化了系统设计并降低了成本。 I2C总线的基本特性 I2C
    的头像 发表于 01-17 15:32 296次阅读

    I2C总线故障排除技巧

    I2C总线是一种广泛使用的串行通信协议,它允许多个设备在两条线上(数据线SDA和时钟线SCL)进行通信。由于其简单性和灵活性,I2C总线在嵌入式系统中非常流行。然而,当
    的头像 发表于 01-17 15:20 868次阅读

    I2C总线与单片机的连接

    在现代电子系统中,单片机(MCU)是核心控制单元,而I2C总线作为一种多主机、多从机的串行通信协议,因其简单、高效和节省引脚的特性而被广泛应用于各种电子设备中。 I2C总线概述 I2C
    的头像 发表于 01-17 15:18 322次阅读

    I2C总线与SPI总线的比较

    在现代电子系统中,微控制器与各种外设之间的通信是必不可少的。I2C和SPI是两种流行的串行通信协议,它们各自具有独特的特点和应用场景。 I2C总线
    的头像 发表于 01-17 15:08 337次阅读

    I2C协议的基础知识

    本文从I2C协议的概述开始,描述协议的历史、不同速度模式、物理层和数据帧结构,最后介绍I2C混合电压系统中电平兼容性以及上拉电阻大小计算。
    的头像 发表于 10-22 15:51 860次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>协议</b>的基础知识

    简单认识I2C通信协议

    I2C(Inter-Integrated Circuit)通信协议是由飞利浦公司(现为恩智浦半导体)开发的一种简单、双向二线制同步串行总线协议。自1982年发布以来,I2C
    的头像 发表于 07-25 18:06 1824次阅读

    如何使用Dave 3.1.10在XMC4400微控制器上实现I2c通信协议 软件?

    我一直在尝试使用 Dave 3.1.10 与 XMC4400 执行 I2c 通信协议,以实现传感器接口。 软件但我做不到。 Dave 3.1.10 的语法有所不同。 我无法使用 Dave
    发表于 06-03 07:21

    I2C总线协议的工作原理和寻址格式

    I2C(Inter-Integrated Circuit)总线协议,即集成电路总线协议,是一种用于连接微控制器及其外围设备的串行总线协议I2C
    的头像 发表于 05-27 15:47 2116次阅读

    I2C、SPI、UART的通信过程还可以这样理解

    到目前为止,I2C、SPI和UART等仍然是电子嵌入式设备中最常用的通信协议,本文,我们将剖析这三种协议,让大家清楚、直观的了解它们的功能、优点和局限性,并辅以GIF动图展示。一、IIC协议
    的头像 发表于 05-23 08:10 8018次阅读
    <b class='flag-5'>I2C</b>、SPI、UART的<b class='flag-5'>通信</b>过程还可以这样理解

    SPI和I2C通信协议:应用与区别

    本文深入解析了SPI和I2C这两种通信协议的特点、工作原理和应用场景。SPI适用于高速数据传输,常用于存储器芯片和显示器驱动等领域;I2C适用于低速控制和传感器数据传输,常用于温度传感器和ADC
    的头像 发表于 04-22 16:45 2109次阅读

    逼真动画展示I2C、SPI、UART的通信过程

    到目前为止,I2C、SPI和UART等仍然是电子嵌入式设备中最常用的通信协议,本文,我们将剖析这三种协议,让大家清楚、直观的了解它们的功能、优点和局限性,并辅以GIF动图展示。I2C
    的头像 发表于 04-12 08:27 1114次阅读
    逼真动画展示<b class='flag-5'>I2C</b>、SPI、UART的<b class='flag-5'>通信</b>过程

    什么是I2C协议 I2C总线的控制逻辑

    在实际使用过程中,I2C比较容易出现的一个问题就是死锁 ,死锁在I2C中主要表现为:I2C死锁时表现为SCL为高,SDA一直为低。
    发表于 03-12 09:17 1316次阅读
    什么是<b class='flag-5'>I2C</b><b class='flag-5'>协议</b> <b class='flag-5'>I2C</b>总线的控制逻辑