您当前的位置:首页 > 电脑百科 > 硬件技术 > 硬件知识

一篇文章讲透I2C总线协议

时间:2020-07-10 10:55:02  来源:  作者:

最近一段时间工作上比较忙,一直没有抽出空来写文章与大家分享,这两天腾出些时间静下心来沉淀一番。看标题大家已经知道了是来总结I2C总线,我相信大家或多或少的都接触过I2C总线,这篇文章我们就由浅入深的仔细来研究研究,看看能不能挖掘些新东西,加深一下理解。

先说概念

I2C英文全称Inter-Integrated Circuit,字面意思是集成电路之间,也就是我们常说的I方C总线—I2C bus。它是一种串行通讯总线,使用多主从架构,由飞利浦公司(恩智浦NXP的母公司)在80年代开发,用于主板、嵌入式系统连接周边低速设备。

I2C由两条双向开漏线组成,这是一个很大的优势,接线简单。两条线利用上拉电阻将电位上拉。典型电位为+3.3V或+5V。标准传输速率为100Kb/s,低速模式10Kb/s。

物理层

下图为I2C总线的物理拓扑图,大家可以看到一共只有两条总线,一条SDA(serial data)数据线用来承载数据、一条SCL(serial clock line)时钟线用来控制数据收发时序。所有I2C设备的SDA都接到了总线的SDA上,SCL都接到了总线的SCL上。每个设备都有自己的唯一地址,以保证设备之间访问的准确性。

一篇文章讲透I2C总线协议

I2C总线的物理拓扑图

I2C在物理层的连接可以说是非常简单,这也是它最大的优势,原理就是通过控制SDA和SCL线的高低电平时序,来产生I2C总线协议所需要的信号进行数据传输。在总线处于空闲状态时SCL和SDA被上拉电阻拉高,保持高电平。

需要注意的是I2C的通讯方式为半双工,因为只有一条数据线,某一时刻只可能单向通讯。这也说明了I2C不适合大数据量的传输应用。

对于主机、从机的区分很简单,发布主要命令的就是主机,接受命令的就是从机,同一条I2C总线允许多个主机的存在。

协议层

作为基础我们先来了解几个重要的小概念。

1、初始状态(即空闲状态):SDA与SCL均为上拉电阻所致的高电平时为初始状态;
2、开始信号:当SCL为高电平的时候,SDA被拉低,此为开始信号,表明通讯开始。
3、终止信号:当SCL为高电平的时候,SDA被拉高,此为终止信号,表明本次通讯结束。

一篇文章讲透I2C总线协议

 

到这里大家有没有发现点什么?当SCL处于高电平的时候,SDA电平一旦变化就会是一种信号,要么开始要么是终止。所以在数据传输过程中SCL处于高电平时,SDA必须保持状态稳定,只有SCL处于低电平时SDA才可以变化。

4、应答信号:当发送器向接收器发送完一个字节/8位数据后,第9个时钟周期内,接收器必须给发送器一个应答信号,这样数据才算传输成功。高电平表非应答,低电平表应答。

一篇文章讲透I2C总线协议

 

我们了解这几个信号状态后,来一步一步看看数据是如何传输的。

1、向从机设备的某一个寄存器写一个字节数据:开始信号+设备地址(7位)+读/写(1位)+等待从机应答+寄存器地址(8位)+等待从机应答+要写的数据(8位)+等待从机应答+终止信号。下图为24C02 EEPROM存储器写数据的时序图。

一篇文章讲透I2C总线协议

 

2、写我们见识了,那读一个试试:下图为读取24C02当前地址一个字节数据的时序图,是不是一目了然了。值得注意的是当读的时候地址7位后的读写状态位为1。这里说一下为什么最后是NO ACK,在“读”这个操作下,主机为接收器,主机的NO ACK表示停止接收24C02的数据,不然24C02会继续发。

一篇文章讲透I2C总线协议

 

3、我们再读一个长一点的:下图为读取24C02任意地址一个字节数据的时序图。开始信号+设备地址(7位)+写(1位)+等待从机应答+数据地址(8位)+等待从机应答。前面这一步为假写,目的是告诉24C02要读哪个地址的数据。继续,开始信号+设备地址(7位)+读(1位)+等待从机应答+读到的数据(8位)+等待主机(接收机)应答+终止信号

一篇文章讲透I2C总线协议

 

补点干货

1、设备的地址。I2C设备的地址为8位,但是时序操作时最后一位不属于地址,而是读or写状态位。这就是为什么arduino的SH1106库里操作的地址不是0x7-而是0x3-,因为有用的是前7位,地址整体右移一位处理了。再一个设备地址的前四位是固定死的,是厂家用来表示设备类型的,比如接口为I2C的温度传感器类设备地址前四位一般为1001即9X、EEPROM存储器地址前四位一般为1010即AX、oled屏地址前四位一般为0111即7X等等。

2、I2C接口的致命缺点就是传输距离近同时速度慢。大家在使用I2C总线接口的时候切记不要长线传输,尽量只在PCB板内传输,不然偶尔丢数据甚至读不到数据会让人崩溃,不要问我是怎么知道的,问只有眼泪。

3、关于两线为什么设计成开漏,这个问题我记得我之前在写《STM32单片机I/O的8种工作模式》时给大家埋下过伏笔。今天就来说一下具体原因。主要有两点①防止短路:大家想想如果不设为开漏,而设为推挽,几个设备连在同一条总线上,这时某一设备的某个IO输出高电平,另有一台设备的某一个IO输出低电平,这时你会发现这两个IO的VCC和GND短路了;但是开漏就不会有这个问题,如下图示:

一篇文章讲透I2C总线协议

 

第二个原因是“线与”,我们想个场景:如果总线上的一个A设备将SDA拉高,这时总线上另一个B设备已将SDA拉低,这时由于1&0=0,所以A设备检查SDA的时候会发现不是高电平而是低电平,这就表明总线上已经有其他设备占用总线了,A只好放弃,如果检测是高电平那就可以使用。如下图示为24C02芯片内部图,可以看到状态检测脚。

一篇文章讲透I2C总线协议

 

总结

I2C总线作为一个常见的总线协议,是非常值得我们来仔细研究琢磨的,通透以后我们再使用任意I2C接口的设备时就可以信手拈来了。我一直觉得在学习的过程中,“会使用”不一定就是我们追求的终点,会用的同时把一些更深的东西搞懂搞透会收获意想不到的喜悦。



Tags:I2C总线协议   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
最近一段时间工作上比较忙,一直没有抽出空来写文章与大家分享,这两天腾出些时间静下心来沉淀一番。看标题大家已经知道了是来总结I2C总线,我相信大家或多或少的都接触过I2C总线...【详细内容】
2020-07-10  Tags: I2C总线协议  点击:(121)  评论:(0)  加入收藏
▌简易百科推荐
首先我们要弄懂什么是“雷电”接口。其实“雷电”本质上和咱们常见的HDMI,DP等一样是一种传输协议的简称,全程英文名叫做Thunderbolt。请注意与其说他是一个接口倒不如说他是...【详细内容】
2021-12-27  小伊评科技    Tags:雷电接口   点击:(2)  评论:(0)  加入收藏
畅谈关于装修的那些事,分享装修的各种经验和知识。大家好,我是畅谈装修,关注我即可了解更多关于装修的那些事!路由器现在已经是居家生活中“不可缺少的伙伴”,没有了它,相信连饭吃...【详细内容】
2021-12-27  畅谈装修    Tags:路由器   点击:(1)  评论:(0)  加入收藏
此前有关厂商销售的显示器上,HDMI 2.1的标示问题闹得沸沸扬扬。按照官方的说法,HDMI 2.0标准已经不存在了,以后只有HDMI 2.1标准,后者的功能是可选的,显示器制造商只要具体说明该...【详细内容】
2021-12-24  超能网    Tags:HDMI   点击:(8)  评论:(0)  加入收藏
声卡本身会包含一个DAC。DAC字面上直接翻译,就是“数字到模拟转换器”。有时候,人们认为声卡的DAC不够好,所以从声卡的数字输出接口,外接独立的DAC,来改善声音。DAC首选的接口是...【详细内容】
2021-12-10  亲爱的客户    Tags:解码器   点击:(15)  评论:(0)  加入收藏
1.为什么要有虚拟内存 在早期的计算机中,是没有虚拟内存的概念的。我们要运行一个程序,会把程序全部装入内存,然后运行。 当运行多个程序时,经常会出现以下问题: 1)进程地址空间...【详细内容】
2021-12-08  linux上的码农    Tags:虚拟地址   点击:(21)  评论:(0)  加入收藏
CPU、GPU、FPGA三者能力相加就是芯片的未来!很多粉丝问我,嵌入式方向中的FPGA怎么样?收入如何?前言讲述FPGA前,我们先讲讲当年中兴被制裁的问题。美国前总统特朗普曾经发布过一条...【详细内容】
2021-12-01  一口Linux    Tags:FPGA   点击:(48)  评论:(0)  加入收藏
现在市面上常用的视频线有HDMI线、VGA线、DP线、DVI线,其中HDMI线是用的比较多的,平时直播也有很多朋友会问HDMI相关的问题,今天小泽总结了一些高频的HDMI使用问题,赶紧收藏! 所...【详细内容】
2021-11-25  SAMZHE山泽    Tags:HDMI线   点击:(32)  评论:(0)  加入收藏
本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:殇小辛 apple tv 4K使用近2年了,分享下深度使用体验 整个盒子比想象中小很多,放在电视柜里不占空间,还很好看 遥控器顶部区...【详细内容】
2021-11-09  什么值得买    Tags:Apple TV   点击:(31)  评论:(0)  加入收藏
近年来摩尔定律“失速”,使得中央处理器(CPU)的性能增长边际成本急剧上升。有研究数据表明,现在CPU的性能年化增长率(面积归一化之后)仅有3%左右。然而,人们对计算的需求依然爆发性增长。...【详细内容】
2021-11-05  赵广立  中国科学报  Tags:DPU   点击:(44)  评论:(0)  加入收藏
分享屏幕的分辨率与像素点,让大家更加直观了解显示屏清晰度。 分辩率: 分辩率是液晶显示屏像素点排列的密度,密度排列越高,显示的画面就会越清晰。 举例:2K55寸显示屏,显示尺寸为:1...【详细内容】
2021-11-04  深圳盛诚专显科技    Tags:分辨率   点击:(46)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条