首页 > 其他分享 >I2C总线 | I2C总线介绍

I2C总线 | I2C总线介绍

时间:2023-05-12 12:24:58浏览次数:36  
标签:字节 主机 总线 介绍 从机 寻址 I2C

I2C总线 | I2C总线介绍


目录

  • I2C总线介绍

I2CInter - Intergrated Circuit)总线(也称IICI2C)是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备,是微电子通行控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口少控制方式简单器件封装形式少通信速率高等优点。

HW-IIC_CIRCUIT

I2C有如下特点:

  1. (1)两条总线线路:一条串行数据线SDA),一条串行时钟线SCL:控制时序);

  2. (2)每个连接到总线的器件都可以通过唯一的地址联系主机,同时主机可以作为主机发送器或者主机发送器主机接收器

  3. (3)是一个真正的多主机总线,如果两个或更多的主机同时初始化,数据传输可以通过冲突检测仲裁防止数据被破坏;

  4. (4)串行的8位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s

  5. (5)连接到相同总线的I2C数量只受到总线的最大电容400pF限制。

  • I2C总线术语

发送器:发送数据到总线的器件。

接收器:从总线接收数据的器件。

主机:初始化发送产生的时钟信号和终止发送的器件。

多主机:同时有多于一个主机尝试控制总线但不破坏传输。

仲裁:是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使传输不被破坏的过程。

同步:两个或多个器件同步时钟信号的过程。

  • I2C总线位传输

由于连接到I2C总线的器件有不同种类的工艺(CMOSNMOS、双极性),逻辑0)和逻辑1)的电平是不固定的,它是电源VCC的相关电平决定,每传输一个数据位就产生一个时钟脉冲,数据的有效形如下所示:

HW-IIC_DATA_VALID

SDA线上的数据必须在时钟的高电平周期保持稳定。数据线的高或低电平状态IIC位传输数据的有效性在SCL线的时钟信号是低电平时才能改变。起始停止条件如下图所示:

HW-IIC_START_STOP

起始条件SCL线是电平时,SDA线从高电平向低电平切换。

停止条件SCL线是电平时,SDA线从低电平向高电平切换。

起始和停止条件一般都是由主机产生,总线在起始条件后被认为是处于忙碌状态,在停止条件的某段时间后总线被认为处于空闲状态。

  • IIC总线数据传输

1.字节格式

发送到SDA线上的每个字节必须为8位,每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要完成一些其他的功能后(如一个内部中断服务程序)才能接受或者发送下一个完整的数据字节,可以使时钟线SCL保持低电平,迫使主机进入等待状态,当主机准备好接收下一个数据字节并释放时钟SCL后,数据继续传输。

2.应答响应

HW-IIC_ACK

数据传输必须带响应位,相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间发送器释放SDA线(高)。在响应的时钟脉冲期间,接收器必须将SDA线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。通常被寻址的接收器在接收到每个字节后,会产生一个响应。当从机不能响应从机地址时(如它正在执行一些实时函数不能接收或发送),从机必须使数据线保持高电平,主机然后产生一个停止条件终止传输或者产生重复起始条件开始新的传输。

如果从机接收器响应了从机地址,但是在传输了一段时间后不能接收更多字节,主机必须再一次终止传输。这个情况用从机在第一个字节后没有产生响应来表示。从机使数据线保持高电平,主机产生一个停止或重复起始条件。

如果传输中有主机接收器,它必须在从机不产生时钟的最后一个字节不产生响应,向从机发送器通知数据结束。

从机接收器必须释放数据线,允许主机产生一个停止或重复起始条件。

  • IIC总线寻址方式

1.7位寻址

第一个字节的头七位组成了从机地址,最低位(LSB)是第8位,它决定了普通的和带重复开始条件的7位地址格式方向。第一个字节的最低位是“0”,表示主机会写信息到被选中的从机;“1”表示主机会向从机读信息。当发送一个地址后,系统中的每个器件都在起始条件后将头7位与它的自己的地址进行比较,如果一样,器件会判定它被主机寻址,至于是从机接收器还是从机发送器,都有R/W位决定。

2.10位寻址

10位寻址与7位寻址兼容,而且可以结合使用。

10位寻址采用了保留的1111XXX作为起始条件,或重复起始条件的后第一个字节的头7位。10位寻址不会影响已有的7位寻址,有7位和10位地址的器件都可以连接IIC总线的10位地址格式到相同的IIC总线。它们都能用于标准模式和高速模式系统。

10位从机地址由起始条件或重复起始条件后的头两个字节组成。

第一个字节的头7位是11110XX的组合,其中最后两位XX是10位地址的两个最高位(MSB)。第一个字节的第8位是R/W,决定传输的方向。第一个字节的最低位是“0”,表示主机将写信息到选中的从机,“1”表示主机将向从机读信息。如果R/W位是“0”,则第二字节是10位从机地址剩下的8位;如果R/W位是“1”,则下一个字节是从机发给主机的数据。

  • 快速和高速模式

1.快速模式

快速模式器件可以在400kbit/s下接收和发送。

快速模式可以向下兼容,可以和标准模式器件在0~100kbit/sIIC总线系统通讯。

2.高速模式

高速模式Hs模式)可以在高达3.4Mbit/s的位速率下传输信息。

向下兼容快速模式和标准模式器件。

高速模式传输除了不执行仲裁和时钟同步外,与快速模式系统有相同的串行总线协议和数据格式

标签:字节,主机,总线,介绍,从机,寻址,I2C
From: https://www.cnblogs.com/feige1314/p/17393725.html

相关文章

  • 基于can总线的dsp280049c升级方案 提供bootloader源代码,上位机,上位机
    基于can总线的dsp280049c升级方案提供bootloader源代码,上位机,上位机源码,使用说明。已经通过项目验证。ID:473000679427129206......
  • 第一章 Ansible 基础介绍及安装
    1.1Ansible基础介绍Ansible是一个开源自动化运维平台。Ansible是一个可以在Ansibleplaybook中在完美描述IT应用架构的简单的自动化语言。它也是一个运行AnsiblePlaybook的自动化引擎。Ansible可以管理强大的自动化任务,并且可以适应许多不同的工作流和环境。同时,Ansible的新......
  • 第二节:编程语言与Python介绍
    一引子基于上一节所学,有了计算机硬件,再在硬件之上安装好操作系统,我们就有了一个应用程序的运行平台,我们接下来的任务就是学习如何使用某款编程语言来开发应用程序。本章的主题是先带大家了解下编程语言,然后重点介绍Python这门编程语言二编程语言分类:2.1机器语言机器语言......
  • ubus消息总线
    Ubus是新的openWrt中引入的一个消息总线,主要作用是实现不同应用程序之间的信息交互。Ubus的编译和运行依赖libubox中的一些内容,而libubox又依赖于json-c中的内容,环环相扣。因此,我们需要按照先json-c,后libubox,最后ubus的顺序来编译。 (155条消息)移植编译libubox、ubus、json-c......
  • Zookeeper中watcher介绍-通知状态事件类型
    1.ZookeeperWatcher简介1.1)提供了分布式数据发布、订阅功能。1.2)引入了watcher机制来实现这种分布式的通知功能(主要触发事件:节点创建、节点删除、节点改变等)。1.3)watcher包括以下三个过程:客户端向服务端注册watcher、服务端事件发生触发watcher、客户端回调watcher得到触发事......
  • HTTP协议客户端之HttpClient介绍及使用
    1.HttpClient介绍HttpClient是ApacheJakartaCommon下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient相比JDK自带的URLConnection,增加了易用性和灵活性,使客户端发送Http请求变得更加容......
  • 聚合报告列表项介绍
    聚合报告列表项介绍1、Label:请求的名称,就是脚本中Sampler的名称。2、#Samples(样本):总共发给服务器的请求数量,如果模拟10个用户,每个用户迭代10次,那么总的请求数为:10*10=100次。3、Average(平均值):默认情况下是单个Request的平均响应时间,当使用了TransactionController(事务控制器)......
  • 优雅的操作文件:java.nio.file 库介绍
    概述在早期的Java版本中,文件IO操作功能一直相对较弱,主要存在以下问题:缺乏对现代文件系统的支持:只提供的基础的文件操作,不支持很多现代的文件系统API不够直观:文件操作的API设计相对较为复杂和冗长,使用体验感很差对于大文件处理和并发性能不够:简单的I/O模型,没有充分......
  • C++ Lambda表达式的完整介绍
    c++在c++11标准中引入了lambda表达式,一般用于定义匿名函数,使得代码更加灵活简洁。lambda表达式与普通函数类似,也有参数列表、返回值类型和函数体,只是它的定义方式更简洁,并且可以在函数内部定义。什么是Lambda表达式最常见的lambda的表达式写法如下autoplus=[](intv1,int......
  • 入门1-pytest测试框架功能及常用第三方插件介绍
    安装1. 安装Python2. 安装pytest: pipinstall-Upytest3. 安装常用插件pipinstall-rrequirement.txtPS: 常用插件:pytestallure-pytestrequestsPyYAMLpandasopenpyxljsonpathrequests_toolbeltPrettyTablepytest-htmlpytest-xdist https://docs.py......