I2C 基础原理详解

今天来学习下I2C通信~

I2C(Inter-Intergrated Circuit)指的是 IC(Intergrated Circuit)之间的(Inter) 通信方式。如上图所以有很多的周边设备都是用I2C通信方式进行通信的。

I2C(Inter-Intergrated Circuit)通信使用Clock Line(SCL:Serial Clock)和Data Line(SDA:Serial Data)。数据通过时钟同步经过数据线进行传输。这里生成时钟信号并输出的设备便是Master, 时钟信号作为输入并接受数据的设备便是Slave。一般情况下Master便是MicroController,Slave便是周边的设备,比如RTC, EEPROM, TOUCH等等。

上面我们提到I2C是同步通信的。同步通信需要独立的时钟线进行同步传输数据。我们看上面的图可以知道这里只有一根数据线。我们用一根数据线来同时进行数据发送和数据接受。那么我们为什么需要设定通信速度呢?对于同步通信,有了独立的时钟信号进行同步发送数据根本不需要匹配Bit Width的啊?为什么同步通信还要设置通信速度呢?

在I2C中我们说的通信速度指的是Clock的最大速度(MAX SPEED),比方说Slave最多只能在100KHz下工作,但是Master在400KHz的频率下工作,这样的话他们就不能进行正常数据通信,所以我们需要设定设备时钟的最大速度。

现在我们对I2C的基本通信情况是不是有了初步的了解了呢?

现在我们的Master想发送数据给Slave,但是周边有很多的Slave,那么Master怎么把数据发送给自己向发送的设备呢?用Device Address(设备地址)!

Master为了能将数据发送给想发送的设备就需要能区分设备(slave)的方法。Master通过设备的地址来区分周边的设备并进行数据接发。也就是说Master通过[设备地址&R/W+数据]形式的数据发送到I2C bus中,所有的设备读取bus上的这些数据,判断是不是发送给自己的,如果是发送给自己的就给Master一个响应。

前面我们一直提到I2C是通过同步时钟在数据线(SDA)上进行数据接发的。这里我们来边看图边分析看看。一般情况下同步时钟上升沿或者是下降沿来接受或者发送数据的。但是I2C是在高电平(HIGH)的区间里数据有效,低电平区间内数据进行转换的。

前面我们通过硬件方式了解了下数据是怎么发送接收的。那么数据在发送接收之前数据接发的开始标记和结束标记是如何通过硬件方式来规定的呢?数据接受发送的时候必须要知道开始标记和结束标记才能进行正常的数据接受对吧??

I2C的开始标记和结束正如图所示。时钟信号在高电平的情况下数据信号从高电平转为低电平的话即为I2C通信的开始标记,时钟信号在高电平的情况下数据信号有低电平转为高电平的话即为I2C通信结束标记。

现在我们基本了解了硬件形式下I2C的[START+DATA+STOP]是如果进行工作的。现在我们来了解下I2C通信的最小单位是怎样的。Master在时钟信号为高电平并且数据信号有高电平转为低电平的时候开始I2C通信。然后伴随着时钟的同步进行8bit的数据传送或者是接受。后面第9bit的数据(ACK)是用来确认数据接发是否正常。最后时钟信号高电平并且数据信号有低电平转为高电平,即I2C通信终止结束。就是这样I2C包含ACK总共9bit为通信的最小单位. 了解了这些,下面我们来看看上面提到过的[Device Address&R/W + data]形式的数据是如何传输的。

1. Master在时钟信号->High并且数据信号由高电平转为低电平,I2C通信开始。

2. Maste伴随着时钟同步传输8bit的数据。这里说的8bit数据指的是7bit的Device Address和1bit的R/W。

3. 这里的Device Address在我们用的设备DataSheet里面有说明的。这里需要注意到是比方说设备地址是1101000(0x68, 7bit),数据传输的时候因为要和1bit的W/R一起,所以这里要将device address左移一位,然后和W/R进行OR操作。

4. Master传输的设备地址对应的设备是否正确接发通过ACK进行响应确认。

5. 如果Master只是以 START + data 8bit(device address&R/W) + ACK这种格式发送后就结束的话也可以。但是一般情况下在地址发送之后紧接着会发送数据。

6. Master能对特定的设备进行数据发送或者是数据接受。在设备地址数据发送之后便可紧接着要发送的数据或者是要接受的数据。

7. Master在发送或者接受数据的时候不需要规定要发送或者接受多少bit 的数据。因为这个依据不同设备而不同,所以依据设备自己想要的格式进行收发数据即可。

8. Master在时钟信号为高电平并且数据信号有低电平转为高电平的话便终止结束通信。

现在我们已经了解了I2C整个通信过程中的数据格式以及通信方式。实际写代码过程中依据Datasheet中说明的Register情况来写就可以了。

I2C部分到此结束~

未经允许不得转载:浩瀚先森 » I2C 基础原理详解

时间: 2024-11-07 12:12:24

I2C 基础原理详解的相关文章

虚拟化技术基础原理详解

DISK : IO调度模式 CFQ deadline anticipatory NOOP /sys/block/<device>/queue/scheduler Memory: MMU TLB vm.swappiness={0..100},使用交换分区的倾向性,默认60% overcommit_memory=2过量使用内存 RAM,swap overcommit_ratio=50 允许使用交换分区的比例 所有的swap +RAM*ratio swap=4G RAM=8G 可以使用为4+8*50

kickstart安装系统原理详解

前言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装. 常规的办法有什么? 光盘安装系统===>一个服务器DVD内置光驱百千块,百台服务器都配光驱就浪费了,因为一台服务器也就开始装系统能用的上,以后用的机会屈指可数.用USB外置光驱,插来插去也醉了. U盘安装系统===>还是同样的问题,要一台一台服务器插U盘. 网络安装系统(ftp,http,nfs) ===>这个方法不错,只要服务器能联网就可以装系统了

Storm概念、原理详解及其应用(一)BaseStorm

本文借鉴官文,添加了一些解释和看法,其中有些理解,写的比较粗糙,有问题的地方希望大家指出.写这篇文章,是想把一些官文和资料中基础.重点拿出来,能总结出便于大家理解的话语.与大多数"wordcount"代码不同的是,并不会有如何运行第一storm代码等内容,只有在运行完代码后,发现需要明白:"知其然,并知其所以然". Storm是什么?为什么要用Storm?为什么不用Spark? 第一个问题,以下概念足以解释: Storm是基于数据流的实时处理系统,提供了大吞吐量的实

JSPatch实现原理详解&lt;二&gt;

本文转载至 http://blog.cnbang.net/tech/2855/ 距离上次写的<JSPatch实现原理详解>有一个月的时间,在这段时间里 JSPatch 在不断地完善和改进,代码已经有很多变化,有一些修改值得写一下,作为上一篇的补充. Special Struct 先说下 _objc_msgForward,在上一篇提到为了让替换的方法走 forwardInvocation,把它指向一个不存在的 IMP: class_getMethodImplementation(cls, @se

Influxdb原理详解

本文属于<InfluxDB系列教程>文章系列,该系列共包括以下 15 部分: InfluxDB学习之InfluxDB的安装和简介 InfluxDB学习之InfluxDB的基本概念 InfluxDB学习之InfluxDB的基本操作 InfluxDB学习之InfluxDB的HTTP API写入操作 InfluxDB学习之InfluxDB数据保留策略(Retention Policies) InfluxDB学习之InfluxDB连续查询(Continuous Queries) InfluxDB学习之

Android中Canvas绘图之PorterDuffXfermode使用及工作原理详解

概述 类android.graphics.PorterDuffXfermode继承自android.graphics.Xfermode.在用Android中的Canvas进行绘图时,可以通过使用PorterDuffXfermode将所绘制的图形的像素与Canvas中对应位置的像素按照一定规则进行混合,形成新的像素值,从而更新Canvas中最终的像素颜色值,这样会创建很多有趣的效果.当使用PorterDuffXfermode时,需要将将其作为参数传给Paint.setXfermode(Xfermo

SVM -支持向量机原理详解与实践之三

SVM -支持向量机原理详解与实践之三 什么是核 什么是核,核其实就是一种特殊的函数,更确切的说是核技巧(Kernel trick),清楚的明白这一点很重要. 为什么说是核技巧呢?回顾到我们的对偶问题:     映射到特征空间后约束条件不变,则为:     在原始特征空间中主要是求,也就是和的内积(Inner Product),也称数量积(Scalar Product)或是点积(Dot Product),映射到特征空间后就变成了求,也就是和的映射到特征空间之后的内积,就如我前面所提到的在原始空间

[转] VLAN原理详解

VLAN原理详解 标签: VLANAccess-LinkTrunk-Link802.1QISL 2013-07-26 18:05 27901人阅读 评论(15) 收藏 举报  分类: 网络通信/流媒体(30)  目录(?)[+] 1.为什么需要VLAN 1.1 什么是VLAN? VLAN(Virtual LAN),翻译成中文是“虚拟局域网”.LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络.VLAN所指的LAN特指使用路由器分割的网络——也就是广播域. 在此让我

图像处理中的数学原理详解18——内积与外积

欢迎关注我的博客专栏"图像处理中的数学原理详解" 全文目录请见 图像处理中的数学原理详解(总纲) http://blog.csdn.net/baimafujinji/article/details/48467225 图像处理中的数学原理详解(已发布的部分链接整理) http://blog.csdn.net/baimafujinji/article/details/48751037 1.3.2 内积与外积 因为cos(π/2)=0.当然,这也是众多教科书上介绍向量内积最开始时常常用到的一