arduino i2c 如何写16位寄存器_通信教程03_I2C简史,基础原理及协议

关注、星标公众,不错过精彩内容

8798d46095b72b997634065d75655bd6.png

本教程由作者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版本历史:

bb5dca4f5142d48feeef43033e81be63.png

额外说一下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可以支持多主机,多从机的总线。

f8fb8f818c5291eca0ce39f2bd26432d.png

3.1 I2C两线信号

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

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

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

1acda5b358f79d7f80dd1b441793a2a4.png

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位地址:

ba2879cbabbd381d76898e1d94a3b24a.png

10位地址:

1e1be049b9e63bf60ef2c0cbe49fda70.png

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

4.3 开始和停止

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

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

e431c673d5f4a25cbb43930fc0f7eec9.png

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

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

61cd5ad1e0cc667e3d790411f997e866.png

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

I2C协议手册地址:

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

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

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

5

说明

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

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

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

6最后

我的知乎:strongerHuang

我的网站:www.strongerhuang.com

若觉得文章对你有帮助, 随手点『在看』、分享到朋友圈,也是对我的支持和鼓励 扫描下面二维码、关注公众号,在底部菜单中查看更多精彩内容!

550b14789d4f8d8380b85f54c6dba24c.png

长按识别图中二维码关注

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值