I2C接口基本知识
I2C总线接口详解
应用领域拓展
智能家居
i2c总线接口在智能家居领域的应用不断拓展,如智能照明、智 能安防等。
工业控制
i2c总线接口在工业控制领域的应用也越来越广泛,如传感器数 据采集、电机控制等。
医疗设备
随着医疗技术的进步,i2c总线接口在医疗设备领域的应用也在 逐步增加,如医疗监测设备、医疗机器人等。
未来展望
标准化
i2c总线接口详解
• i2c总线接口概述 • i2c总线接口工作原理 • i2c总线接口硬件设计 • i2c总线接口软件编程 • i2c总线接口常见问题及解决方案 • i2c总线接口发展趋势与展望
01
i2c总线接口概述
i2c总线接口定义
I2C总线是一种串行总线,用于连接微控制器和各种外围设 备。它由两条线组成:一条是数据线(SDA),另一条是 时钟线(SCL)。
I2C总线允许多个主设备 同时工作,提高了系统
的灵活性。
I2C总线具有强大的寻址 能力,可以连接多个外
围设备。
i2c总线接口应用场景
传感器接口
I2C总线可以方便地连接各种传 感器,如温度传感器、光传感 器等。
存储器接口
I2C总线可以连接各种类型的存 储器,如EEPROM、RAM等。
实时时钟
I2C总线的实时时钟(RTC)外 围设备可以用于提供系统时间。
根据设备地址的寻址方式,选择合适的寻址模式, 以实现正确的设备寻址。
寻址操作
发送设备地址
在开始数据传输之前,主设备需要发送目标设备的地址,以标识 要与之通信的设备。
接收应答信号
主设备发送地址后,等待从设备返回的应答信号,以确认从设备已 准备好进行数据传输。
发送操作指令
主设备根据需要发送相应的操作指令,如读或写,以指示接下来的 数据传输方向。
第17章 - I2C接口 - mpc83xx中文手册
第17章 - I2C接口 - mpc83xx中文手册第17章 I2C 接口本章介绍该设备上实现的两个I2C总线接口。
注意,在大多数情况下,这两个I2C接口完全相同,因此作为一个一般的控制器来介绍。
必要时标出这两个接口的不同之处。
17.1 绪论IC间(IIC或I2C)总线是一种两线制――串行数据(SDA)和串行时钟(SCL)――双向串行总线,在本设备与其他设备之间提供一种简单有效的数据交换方法,例如与微控制器、EEPROM、实时时钟设备、A/D转换器和LCD等。
I2C接口的结构图如图17-1所示。
图17-1 I2C结构图17.1.1 概述两线制I2C总线将设备之间的互联最小化。
同步、多主控I2C总线允许将其他设备连接到总线上,以进行扩展和系统开发。
总线包括冲突检测和仲裁功能,防止当两个或多个主控设备试图同时控制总线时发生数据错误。
17.1.2 特性每个I2C总线接口包括以下特性: ? 两线制接口 ? 多主控操作? 仲裁丢失中断,具有从主设备到从设备的自动模式切换。
? 调用地址标识中断? START与STOP信号的产生与检测 ? 确认位的产生与检测 ? 总线忙检测? 软件可编程的时钟频率 ? 软件可选择的确认位? 总线上尖峰信号的片上滤波17.1.3 操作模式该设备上的I2C单元有以下几种操作模式: ? 主设备模式。
I2C总线驱动SDAn信号线。
它不能使用它自己的从设备地址作为调用地址。
2IC不能同时作为主设备和从设备。
? 从设备模式。
I2C总线不驱动SDAn信号。
这个模块必须在检测到I2C主设备发来的START状态前启用。
? 中断驱动的逐字节的数据传输。
当成功获得从设备地址(并且SCLn回到零状态)时,数据传输以逐字节的方式进行,数据传输的方向由调用主机发出的R//W位决定。
每个数据字节的后面必须跟一个确认位,该位由接收设备发出。
在一个数据传输会话期间可以传送多个字节。
? 引导定序器模式。
I2C1控制器支持引导定序器模式。
I2C详解——精选推荐
I2C详解1、基本概念主机初始化发送,产⽣时钟信号和终⽌发送的器件从机被主机寻址的器件发送器发送数据到总线的器件接收器从总线接收数据的器件多主机同时有多于⼀个主机尝试控制总线但不破坏报⽂仲裁是⼀个在有多个主机同时尝试控制总线,但只允许其中⼀个控制总线并使报⽂不被破坏的过程同步两个或多个器件同步时钟信号的过程2、硬件结构每⼀个I2C总线器件内部的SDA、SCL引脚电路结构都是⼀样的,引脚的输出驱动与输⼊缓冲连在⼀起。
其中输出为漏极开路的场效应管、输⼊缓冲为⼀只⾼输⼊阻抗的同相器。
这种电路具有两个特点:(1)由于SDA、SCL 为漏极开路结构,借助于外部的上拉电阻实现了信号的“线与”逻辑;(2)引脚在输出信号的同时还将引脚上的电平进⾏检测,检测是否与刚才输出⼀致。
为“时钟同步”和“总线仲裁”提供硬件基础。
3、时钟同步如果从机希望主机降低传送速度可以通过将SCL主动拉低延长其低电平时间的⽅法来通知主机,当主机在准备下⼀次传送发现SCL的电平被拉低时就进⾏等待,直⾄从机完成操作并释放SCL线的控制控制权。
这样以来,主机实际上受到从机的时钟同步控制。
可见SCL 线上的低电平是由时钟低电平最长的器件决定;⾼电平的时间由⾼电平时间最短的器件决定。
这就是时钟同步,它解决了I2C总线的速度同步问题。
4、主机发送数据流程(1)主机在检测到总线为“空闲状态”(即SDA、SCL 线均为⾼电平)时,发送⼀个启动信号“S”,开始⼀次通信的开始(2)主机接着发送⼀个命令字节。
该字节由7 位的外围器件地址和1 位读写控制位R/W 组成(此时R/W=0)(3)相对应的从机收到命令字节后向主机回馈应答信号ACK(ACK=0)(4)主机收到从机的应答信号后开始发送第⼀个字节的数据(5)从机收到数据后返回⼀个应答信号ACK(6)主机收到应答信号后再发送下⼀个数据字节(7)当主机发送最后⼀个数据字节并收到从机的ACK 后,通过向从机发送⼀个停⽌信号P结束本次通信并释放总线。
linux系统i2c协议详解
linux系统i2c协议详解I2C总线概述I2C(两线接口)是一种串行通信协议,用于连接嵌入式系统中的集成电路(IC)。
它以其低成本、低功耗和高可靠性著称。
I2C总线需要两条双向信号线:串行数据线(SDA)和串行时钟线(SCL)。
这些信号线由一个主设备控制,可以与多个从设备通信。
I2C通信I2C通信由以下步骤组成:起始条件:主设备将SDA线下拉至低电平,同时保持SCL线为高电平。
设备地址:主设备发送7位或10位从设备地址,后跟一个读/写位。
数据传输:主设备和从设备交换数据。
停止条件:主设备将SDA线拉至高电平,同时保持SCL线为高电平。
主设备和从设备I2C总线上的设备分为两种:主设备和从设备。
主设备:发起通信并控制总线。
通常是主微控制器或处理器。
从设备:响应主设备请求并提供或接收数据。
可以是传感器、执行器或其他外围设备。
I2C寻址从设备通过唯一的7位或10位地址进行寻址。
地址的最高位表示是否可读/写,0表示写,1表示读。
I2C模式I2C协议支持以下模式:主写从读:主设备向从设备写入数据,然后从从设备读取数据。
主读从写:主设备从从设备读取数据,然后向从设备写入数据。
从读从写:两个从设备在主设备的监督下进行通信。
I2C传输速率I2C传输速率通常在10kbps到400kbps之间。
速率由主设备设置。
I2C错误检测I2C协议包含几个错误检测机制,例如校验和和超时。
这些机制有助于确保数据的可靠传输。
I2C应用I2C总线用于各种应用,包括:传感器和执行器接口EEPROM和闪存编程LED和LCD控制模拟-数字转换器(ADC)和数字-模拟转换器(DAC)接口电源管理时钟同步I2C优点I2C协议的优点包括:低成本:无需额外的硬件接口低功耗:仅使用两根信号线高可靠性:错误检测机制确保数据完整性容易使用:简单的协议易于实施广泛采用:支持广泛的设备和库I2C缺点I2C协议的缺点包括:数据速率低:与其他串行接口相比,数据速率较低主机限制:总线上只能有一个主设备总线无仲裁:在总线冲突的情况下,没有内置的仲裁机制有限的寻址范围:仅支持有限数量的设备地址I2C技术演进I2C协议正在不断发展,以满足新应用的需求。
I2C通信原理及程序详细讲解
I2C通信原理及程序详细讲解I2C(Inter-Integrated Circuit)是一种串行通信协议,常用于连接微控制器、传感器和其他外部设备。
I2C通信协议由荷兰飞利浦公司于1982年开发,它使用两根信号线(SDA和SCL)进行数据传输。
I2C通信协议采用主从结构,一个主设备(如微控制器)可以连接多个从设备(如传感器)。
主从设备之间通过SDA和SCL线进行数据传输。
SDA线是双向数据线,用于传输数据,SCL线是时钟线,用于同步数据传输。
I2C通信协议中,设备的地址是一个重要概念。
每个设备都有一个唯一的地址,通过该地址可以选择和通信特定的设备。
地址由7个位组成,其中最高位是固定的,并取决于设备是主设备还是从设备。
如果最高位为0,则表示该设备是主设备;如果最高位为1,则表示该设备是从设备。
通过以下步骤,让我们详细了解如何在I2C总线上进行通信。
1.初始化I2C总线:在程序开始时,需要初始化I2C总线。
这通常包括初始化SDA和SCL引脚,设置时钟频率等。
具体的初始化步骤取决于使用的硬件和软件环境。
2.发送开始信号:开始信号表示I2C数据传输的开始。
它由主设备发送,并且SDA线从高电平转为低电平时发出。
发送开始信号后,SDA线上的数据将被解释为地址数据。
3.发送设备地址:主设备发送一个包含设备地址和读/写位(R/W)的数据字节。
设备地址是唯一的,并且由主设备选择。
读/写位指示从设备是要读取数据还是写入数据。
4.等待从设备响应:主设备发送设备地址后,会等待从设备的响应。
从设备将响应一个应答位(ACK)来确认地址接收成功。
如果收到ACK位,则继续进行下一步,否则可能是设备未连接或通信错误。
5.发送数据:主设备发送数据给从设备。
数据可以是命令、配置或实际数据,具体取决于应用场景。
发送数据的方式是将每个数据字节传输到SDA线上,并在每个数据字节后发送一个ACK位。
6.接收数据:从设备将数据发送给主设备。
数据可以是传感器读数、存储器数据等。
I2C接口
SDA入
• I2C简介——总线时序
在数据传送过程中,必须确认数据传送的开始和 结束,这通过起始和结束信号识别。
SDA SCL S 起始信号 P 结束信号
发送起始信号后传送的第一字节数据具有特别的意 义,其中前七位为从机地址,最后一位为读写方向位 (0表示写,1表示读)。
S 从器件地址 R/W
第一字节
I2C接口
• I2C简介——电气连接
I2C总线接口均为开漏或开集电极输出,因此需要 为总线增加上拉电阻Rp。
VDD Rp Rp
总线速率越高,总线上拉电阻 就越小,100Kbit/s总线速率, 通常使用5.1K欧姆的上拉电阻
I2C BUS
SDA SCL
SDA SCL
SCL出
SDA出
器件1
器件2
SCL入
S = 起始信号
P = 停止信号 RS = 重复起始信号
I2C接口
• I2C简介
I2C接口是Philips推出的一种串行总线方式,用于 IC器件之间的通信。它通过SDA(串行数据线)和SCL (串行时钟线)两根线在连到总线上的器件之间传送 信息,并通过软件寻址识别每个器件,而不需要片选 线。 I2C接口的标准传输速率为100Kbit/s,最高传输速 率可达400Kbit/s。
主发送模式:
S S S S 从器件地址 W 从器件地址 R A A A A 数据 数据 数据 数据 A A A A 数据… 数据… 数据… 数据… A/A A P P
主接收模式: 从发送模式:
从器件地址 W 从器件地址 R A/A P/RS
从接收模式:
A
P
主机到从机 主机到从机
A = 应答(SDA为低) A = 非应答(SDA为高)
【基本知识】I2C接口
【基本知识】I2C接⼝1.简介 I2C总线是PHILIPS公司推出的⼀种在电⼦通信控制领域常⽤的串⾏通信总线,是⼀种简单、双向通信、⼆线制、同步的串⾏总线,具有连接线少、控制简单、通信速率⾼等优点。
⽤数据线SDA和时钟线SCL构成通信线路,各器件可并联到总线上实现数据收发,器件间彼此独⽴,通过唯⼀的总线地址区分。
I2C标准速率为100kb/s,快速模式500kb/s 除了发送器和接收器外,在执⾏数据传输时,器件也可以被看作主器件(主机)或从器件(从机)。
主器件是⽤于启动总线传送数据,并产⽣时钟的器件,此时任何被寻址的器件均被认为是从器件(⼀主多从)。
在总线上主和从、发和收的关系取决于此时的数据传送⽅向,⽽不是恒定的。
如果主机要发送数据给从器件,则主机⾸先寻址从器件,然后主动发送数据⾄从器件,最后由主机终⽌数据传送;如果主机要接收从器件的数据,⾸先由主器件寻址从器件,然后主机接收从器件发送的数据,最后由主机终⽌接收过程。
在这种情况下,主机负责产⽣定时时钟和终⽌数据传送。
I2C总线的接⼝均为集电极开路(OC)或漏极开路(OD)的形式输出,其主要是为防⽌I2C总线上的信号混乱, I2C总线上的输出端没有安装上拉电阻时,只能输出低电平,如果需要保证I2C总线正常⼯作,就需要在I2C总线的输出端加上拉电阻R1和R2。
所有I2C设备的SDA或是SCL的端⼝连接到⼀块,如果任意⼀个I2C设备输出低电平都将控制I2C总线(即总线处于“忙”状态),即各I2C 设备的时钟串⾏线SCL是线“与”的关系,各I2C设备的数据串⾏线SDA也是线“与”的关系。
2.⼯作信号 默认状态(IDLE):当I2C不⼯作时,SDA和SCL都处于⾼电平; 开始传输(START):当 SCL保持为⾼电平,SDA由⾼电平变成低电平时表⽰传输开始(简写S); 停⽌传输(STOP):当 SCL保持为⾼电平,SDA由低电平变成⾼电平时表⽰传输结束(简写SP)。
第四章I2C串行总线接口电路设计
第四章I2C串行总线接口电路设计I2C(Inter-Integrated Circuit)是一种串行总线接口,广泛应用于各种电子设备中。
在本章中,我们将讨论如何设计一个I2C串行总线接口电路。
首先,我们需要了解I2C总线的基本原理。
I2C总线由两根线组成,即串行数据线(SDA)和串行时钟线(SCL)。
数据在SDA线上传输,而时钟信号在SCL线上传输。
每个设备都有一个唯一的7位地址,可以通过该地址在总线上寻址。
接下来,我们将介绍如何设计一个基本的I2C接口电路。
首先,我们需要一个主设备和一个或多个从设备。
主设备负责发送数据和控制总线的时钟信号,而从设备负责接收数据并响应主设备的命令。
在电路设计中,我们需要考虑以下几个关键点:1.I2C总线电平:I2C总线使用的是开漏输出,因此我们需要在总线上加上上拉电阻,将总线拉高至VCC电平。
同时,我们还需要确保总线上的电平向下兼容,以适应不同的设备。
2.I2C总线保护:由于I2C总线是一个共享总线,因此我们需要保护总线免受外部噪声和电磁干扰的影响。
我们可以通过使用滤波电容和抑制器来过滤掉噪声,并使用瞬态电压抑制器来保护总线免受电磁干扰。
3.I2C总线速率:I2C总线可以工作在不同的速率下,通常有标准模式(100kHz)和快速模式(400kHz)两种速率。
我们需要根据具体的应用需求选择合适的速率,并相应地配置主设备和从设备。
4.I2C总线电源:由于I2C总线上的设备可以使用不同的电源电压,我们需要确保电源电压的稳定性,并根据设备的要求为主设备和从设备提供适当的电源。
5.I2C总线延长:在一些特殊应用中,I2C总线的长度可能超过规定的最大长度(一般为一到两米)。
为了解决这个问题,我们可以使用I2C 总线延长器或者光电耦合器来实现远距离传输。
最后,我们需要对设计的I2C接口电路进行测试和验证。
我们可以使用示波器或逻辑分析仪来检查总线上的信号波形,并确保数据的准确传输和设备的正常通信。
EEPROM I2C操作说明知识讲解
E E P R O M I2C操作说明I2C协议2条双向串行线,一条数据线SDA,一条时钟线SCL。
SDA传输数据是大端传输,每次传输8bit,即一字节。
支持多主控(multimastering),任何时间点只能有一个主控。
总线上每个设备都有自己的一个addr,共7个bit,广播地址全0.系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定,看datasheet。
1.1 I2C位传输数据传输:SCL为高电平时,SDA线若保持稳定,那么SDA上是在传输数据bit;若SDA发生跳变,则用来表示一个会话的开始或结束(后面讲)数据改变:SCL为低电平时,SDA线才能改变传输的bit1.2 I2C开始和结束信号开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
1.3 I2C应答信号Master每发送完8bit数据后等待Slave的ACK。
即在第9个clock,若从IC发ACK,SDA会被拉低。
若没有ACK,SDA会被置高,这会引起Master发生RESTART或STOP流程,如下所示:1.4 I2C写流程写寄存器的标准流程为:1. Master发起START2. Master发送I2C addr(7bit)和w操作0(1bit),等待ACK3. Slave发送ACK4. Master发送reg addr(8bit),等待ACK5. Slave发送ACK6. Master发送data(8bit),即要写入寄存器中的数据,等待ACK7. Slave发送ACK8. 第6步和第7步可以重复多次,即顺序写多个寄存器9. Master发起STOP写一个寄存器写多个寄存器1.5 I2C读流程读寄存器的标准流程为:1. Master发送I2C addr(7bit)和w操作1(1bit),等待ACK2. Slave发送ACK3. Master发送reg addr(8bit),等待ACK4. Slave发送ACK5. Master发起START6. Master发送I2C addr(7bit)和r操作1(1bit),等待ACK7. Slave发送ACK8. Slave发送data(8bit),即寄存器里的值9. Master发送ACK10. 第8步和第9步可以重复多次,即顺序读多个寄存器读一个寄存器读多个寄存器1.前言对于大多数工程师而言,I2C永远是一个头疼的问题。
I2C的原理与应用
I2C的原理与应用I2C(Inter-Integrated Circuit)是一种串行通信协议,由飞利浦公司于1980年代开发,用于在数字电子系统中连接各个芯片。
它主要使用两根线进行通信,即SDA(Serial Data Line,串行数据线)和SCL (Serial Clock Line,串行时钟线),同时支持多主机和多从机的通信方式。
I2C协议被广泛应用于各种数字设备的互连,包括传感器、存储器、协处理器等。
I2C的通信原理如下:1.总线结构:I2C总线包含一个主机和多个从机。
主机负责控制总线,并发起数据传输请求;从机等待主机发送命令,并根据命令执行相应操作。
2.时序:I2C总线上的通信需要依靠时钟信号进行同步。
主机通过时钟信号SCL驱动数据传输。
数据线SDA上的数据在时钟信号的上升沿或下降沿进行采样和发送。
3.起始和停止位置:数据传输始于主机发送一个起始信号,结束于主机发送一个停止信号。
起始信号通知所有从机总线上的数据传输即将开始;停止信号表示数据传输已经结束。
4.地址与数据传输:在起始信号之后,主机发送一个地址帧给从机。
地址帧的最高位表示读写操作,从机通过地址帧判断自身是否为数据传输的对象,并相应地进行操作。
主机可以在同一个传输过程中多次发送数据,并且可以从一个从机读取多个字节的数据。
I2C的应用广泛,以下是一些常见的应用领域:1.传感器:I2C通信协议在许多传感器和芯片中得到应用,例如加速度计、陀螺仪、温度传感器和压力传感器等。
这些传感器通过I2C协议与主处理器进行通信,并将采集到的数据传输到主处理器进行处理。
2. 存储器:I2C接口也广泛应用于存储器设备,如EEPROM (Electrically Erasable Programmable Read-Only Memory)和FRAM (Ferroelectric Random Access Memory)。
这些存储器设备可以通过I2C总线进行读写操作,从而存储和检索数据。
mcu内i2c解析
MCU内I2C通信原理与应用范围一、I2C的原理I2C,即Inter-Integrated Circuit,是一种串行通信协议,广泛应用于微控制器和其他集成电路之间的通信。
它由飞利浦公司在1980年代开发,现已成为电子行业的标准。
I2C总线通过两根线——串行数据线(SDA)和串行时钟线(SCL)——在设备之间传输数据。
I2C通信基于主从模式,其中一个设备作为主设备,控制总线上的通信,其他设备作为从设备,响应主设备的请求。
主设备通过发送一个起始信号来启动通信,然后发送一个设备地址,从设备接收到地址后,通过发送应答信号来确认收到。
然后,主设备可以发送数据,从设备接收到数据后,再次发送应答信号。
当所有数据传输完毕,主设备发送一个停止信号来结束通信。
I2C通信的数据是8位的,可以在SDA线上同时传输多达8个数据位。
数据传输速率由SCL线的时钟信号决定,最高可达400kHz。
I2C通信还支持多主设备模式,即多个主设备可以在同一总线上同时通信。
二、MCU内I2C的硬件结构在微控制器(MCU)内部,I2C接口通常由一个或多个硬件模块组成,这些模块包括:1.I2C控制逻辑:这是I2C接口的核心,负责实现I2C协议的所有规则,包括起始和停止信号的产生、数据传输、应答信号的发送等。
控制逻辑通常由微控制器内部的硬件逻辑电路实现。
2.SDA和SCL信号线驱动器:这些驱动器负责将I2C控制逻辑产生的信号线连接到I2C总线上。
它们需要能够承受总线上的噪声和干扰,并确保信号质量。
3.总线仲裁器:在多主设备模式下,总线仲裁器负责协调多个主设备之间的通信,确定哪个主设备拥有总线的控制权。
4.缓冲区/FIFO存储器:为了提高数据传输效率,微控制器内部的I2C接口通常配备缓冲区或FIFO存储器,用于存储待传输的数据。
5.地址解码器:用于识别接在总线上的不同设备。
当主设备发送设备地址时,地址解码器将比较接收到的地址与预设的地址,以确定哪个从设备需要响应。
I2C接口基本知识
a
9
• I2C总线上所有的外围器件都需要唯一的地址,由器件地址和引脚地址两 部分构成,共七位。器件地址是I2C器件固有的地址编码,器件出厂时就 已经给定,不可更改。引脚地址由I2C总线外围器件的地址引脚(A2,A1, AO)决定,根据其在电路中接电源正极,接地或悬空的不同,形成不同 的地址代码。引脚地址数决定了同一种器件可接入总线的最大数目。
a
3
a
4
两根线
• I2C 串行总线有两根信号线:一根双向的数据线 SDA;另一根是时 钟线 SCL。所有接到 I2C 总线上的设备的串行数据都接到总线的 SDA 线,各设备的时钟线 SCL接到总线的 SCL。
a
5
a
6
上拉电阻与传输速率
I2C总线的SCL和SDA端口输出为漏极开路,因此使用时必须连接上拉电阻。上拉电阻的大 小与电源电压,传输速率等由关系。这是由于外围器件是漏极开路,上拉电阻的大小在一 定程度上影响外围器件信号传输的延迟时间。
I2C总线接口基本知识
a
1
总线和接口的区别:
总线是一组传输通道,比如说IIC总线。 接口是一种连接标准,比 如说IIC接口。 两者之间的关系就是IIC接口的设备都要通过IIC总线 来进行通信,而IIC总线上走的设备并不全是IIC接口的。
a
2
什么是I2C总线?
I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开 发的两线式串行总线,一根数据线SDA,一根串行时钟线SCL, 用于连接微处理器及其外围设备,实现全双工同步数据处理。 是微电子通信控制领域广泛采用的一种总线标准。它是同步通 信的一种特殊形式,具有接口线少,控制方式简单,器件封装 形式小,通信速率较高等优点。
I2C串行接口技术
发送应答信号子程序
MACK: CLR SDA NOP NOP SETB SCL NOP NOP NOP NOP NOP CLR SCL NOP NOP RET ;将SDA置0 (由接收器发送,SDA稳定后)
;保持数据时间,即SCL为高时间大于4.7s
发送非应答信号
MNACK: SETB SDA ;将SDA置1 NOP NOP SETB SCL NOP NOP ;保持数据时间,即SCL为高时间大于4.7s NOP NOP NOP CLR SCL NOP NOP RET
是近距离的通信。
♣.iic串行总线:仅有两根线:SDA(数据线)和SCL(时钟线)。
♣.iic总线的特点:半双工、同步、多主总线、串行。 ♣.iic串行总线的连接电路:
节点1 节点2
iic总线
♣.SDA(数据线)和SCL(时钟线)都是集电极开路或漏极开路结构 的,只能输出“0”,不能输出“1”,都必须接上拉电阻。
第8章单片机系统扩展及接口技术
在主控器发送数据时,被控器接收完一个数据字节后都要向主控器发回一个 应答信号(A),主控器据此便可进行下一字节的发送。但如果被控器由于某 种原因需要进行其他处理而无法继续接收SDA线上数据时,便可向SDA线输出 一个非应答信号(A),使SDA线保持高电平,主控器据此便可产生一个停止 信号来终止SDA线上的数据传输。 当主控器作为接收器接收被控器送来的最后一个数据时,必须给被控器发送
回一个应答信号。但与应答信号相对应的时钟仍由主控器在SCL线上产生,因 此主控发送器必须在被控接收器发送应答信号前,预先释放对SDA线的控制, 以便主控器对SDA线上应答信号的检测。
应答信号在第9个时钟位上出现,接收器在SDA线上输出低电平为应答信号 (A),输出高电平为非应答信号(A)。时钟信号以及应答和非应答信号间 的关系如图8-14所示。
I2C介绍
I2C介绍I2C总线是两线式串行总线。
I2C总线最主要的优点是其简单性和有效性,支持多主控(multimastering)。
占用空间小,芯片管脚数量少。
总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。
最高传送速率100kbps。
I2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。
CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。
若未收到应答信号,由判断为受控单元出现故障。
I2C规程运用主/从双向通讯。
器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。
主器件和从器件都可以工作于接收和发送状态。
总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。
SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。
I2C总线是一种用于IC器件之间连接的二线制总线。
它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件:不管是单片机、存储器、LCD驱动器还是键盘接口。
1.I2C总线的基本结构采用I2C总线标准的单片机或IC器件,其内部不仅有I2C接口电路,而且将内部各单元电路按功能划分为若干相对独立的模块,通过软件寻址实现片选,减少了器件片选线的连接。
CPU不仅能通过指令将某个功能单元电路挂靠或摘离总线,还可对该单元的工作状况进行检测,从而实现对硬件系统的既简单又灵活的扩展与控制。
I2C接口通讯资料
数据
说明
1 CMD_ICC_READ=0x21 读取 IC 卡命令
2 Low address
读取地址的低 8 位
3 High address
读取地址的高 8 位
4 number
读取的数据个数,范围 1-128
5 - n data[0:number-1]
读取的数据
失败返回格式:
字节数
数据
说明
1 CMD_ICC_FAILED=0x24 IC 卡操作失败
说明
1 CMD_ICC_VERIFY=0x23 校验 IC 卡密码命令
2 CODE
成功代码为 0;非零为失败
应用举例: 发送: 上位机:START ...data(n) STOP 下位机:
ACK ACK 成功返回:
上位机:
下位机地址 CMD_ICC_VERIFY number data0
ACK NOACK
ACK ACK ACK
ACK
ACK NOACK
data1 ACK
下位机:START 上位机地址 失败返回:
CMD_ICC_VERIFY 0
STOP
上位机:
ACK
ACK
NOACK
下位机:START 上位机地址 CMD_ICC_FAILED ICC_FAILED_VERIFYERR
STOP
6、解密使用 CMD_SEC_DESCRYPT 命令。 发送格式:
B、读取 IC 卡使用 CMD_ICC_READ 命令。
发送格式:
字节数
数据
说明
1 CMD_ICC_READ=0x21 读取 IC 卡命令
2 Low address
读取地址的低 8 位
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
I2C接口应用
由于串行总线连线少,结构简单,往往不用专用的母 板和插座而直接用导线连接各个设备即可。因此,采 用串行总线大大简化了系统硬件设计。PHILIPS公司 早在十几年就前推出了I2C串行总线,它是具备多主 机系统所需的包括裁决和高低速设备同步等功能的高 性能串行总线。最初为音频和视频设备开发,如今主 要在服务器管理中使用,其中包括单个组件状态的通 信。例如管理员可对各个组件进行查询,以管理系统 的配置或掌握组件的功能状态,如电源和系统风扇。 可随时监控内存、硬盘、网络、系统温度等多个参数, 增加了系统的安全性,方便了管理。
I2C总线上所有的外围器件都需要唯一的地址,由器 件地址和引脚地址两部分构成,共七位。器件地址是 I2C器件固有的地址编码,器件出厂时就已经给定, 不可更改。引脚地址由I2C总线外围器件的地址引脚 (A2,A1,AO)决定,根据其在电路中接电源正极, 接地或悬空的不同,形成不同的地址代码。引脚地址 数决定了同一种器件可接入总线的最大数目。 R/W ̄是方向位,R/W ̄=0表示主器件向从器件发送 数据,R/W ̄=1表示主器件读取从器件数据。
位序 D7 定义
D6
D5
D4
D3
D2
D1
D0 方向 位 _ R/W
ห้องสมุดไป่ตู้
器件地址
引脚地址
DA3 DA2 DA1 DA0 A2
A1
A0
主从通信
I2C规程运用主/从双向通讯。I2C总线的运行 (数据传输)由主机控制。所谓主机即启动数 据的传送时(发出启动信号)发出时钟信号, 传送结束时发出停止信号的设备,通常主机是 微处理器。被主机寻访的设备都称为从机。主 机和从机的数据传送,可以由主机发送数据到 从机,凡是发送数据到总线的设备称为发送器, 也可以是从机发到主机。从总线上接收数据的 设备被称为接受器。
I2C总线在传送数据过程中共有三种类型信号, 它们分 别是:启动信号、停止信号和应答信号。 启动信号:SCL为高电平时,SDA由高电平向低电平跳变, 开始传送数据。 停止信号:SCL为低电平时,SDA由低电平向高电平跳变, 结束传送数据。 应答信号:接收数据的IC在接收到8bit数据后,向发送 数据的IC发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答 信号,CPU接收到应答信号后,根据实际情况作出是否继 续传递信号的判断。若未收到应答信号,由判断为受控单 元出现故障。
I2C总线上的外围扩展器件的数量
I2C总线上的外围扩展器件为电压型负载的 CMOS器件,因此总线上的器件数量不是由电 流负载能力决定,而是由电容负载能力决定。 通常I2C总线的负载能力为400PF。同时由于 外围器件的地址唯一,所以外围器件的数量还 受器件地址空间的限制。
地址唯一
I2C总线上所有的外围器件都需要唯一的地址 由器件地址和引脚地址两部分构成,共七位。 器件地址是I2C器件固有的地址编码,器件出 厂时就已经给定,不可更改。引脚地址由I2C 总线外围器件的地址引脚(A2,A1,AO)决 定,根据其在电路中接电源正极,接地或悬空 的不同,形成不同的地址代码。引脚地址数决 定了同一种器件可接入总线的最大数目。 R/W ̄是方向位,R/W ̄=0表示主器件向从器 件发送数据,R/W ̄=1表示主器件读取从器件 数据。
I2C总线接口基本知识
总线和接口的区别:
总线是一组传输通道,比如说IIC总线。 接口 是一种连接标准,比如说IIC接口。 两者之间 的关系就是IIC接口的设备都要通过IIC总线来 进行通信,而IIC总线上走的设备并不全是IIC 接口的。
什么是I2C总线?
I2C(Inter-Integrated Circuit)总线是由 PHILIPS公司开发的两线式串行总线,一 根数据线SDA,一根串行时钟线SCL,用 于连接微处理器及其外围设备,实现全双 工同步数据处理。是微电子通信控制领域 广泛采用的一种总线标准。它是同步通信 的一种特殊形式,具有接口线少,控制方 式简单,器件封装形式小,通信速率较高 等优点。
两根线
I2C 串行总线有两根信号线:一根双向的数据 线 SDA;另一根是时钟线 SCL。所有接到 I2C 总线上的设备的串行数据都接到总线的 SDA 线,各设备的时钟线 SCL接到总线的 SCL。
上拉电阻与传输速率
I2C总线的SCL和SDA端口输出为漏极开路,因此使用时必须连接 上拉电阻。上拉电阻的大小与电源电压,传输速率等由关系。这 是由于外围器件是漏极开路,上拉电阻的大小在一定程度上影响 外围器件信号传输的延迟时间。 串行的8位双向数据传输位速率在: 标准模式下可达 100kbit/s,采用10K欧姆的上拉电阻。 快速模式下可达 400kbit/s,采用2K欧姆的上拉电阻。 高速模式下可达3.4Mbit/s,高速模式下不执行仲裁和时钟同步 以加速位处理能力,同时高速模式主机器件有一个SDAH 信号的 开漏输出缓冲器和一个在SCLH 输出的开漏极下拉和电流源上拉 电路。这个电流源电路缩短了SCLH 信号的上升时间,任何时侯 在Hs 模式,只有一个主机的电流源有效
总线竞争的仲裁
总线上可能挂接有多个器件,有时会发生两个或多个 主器件同时想占用总线的情况,这种情况叫做总线竞 争。I2C总线具有多主控能力,可以对发生在SDA线上 的总线竞争进行仲裁,其仲裁原则是这样的:当多个 主器件同时想占用总线时,如果某个主器件发送高电 平,而另一个主器件发送低电平,则发送电平与此时 SDA总线电平不符的那个器件将自动关闭其输出级。 总线竞争的仲裁是在两个层次上进行的。首先是地址 位的比较,如果主器件寻址同一个从器件,则进入数 据位的比较,从而确保了竞争仲裁的可靠性。由于是 利用I2C总线上的信息进行仲裁,因此不会造成信息 的丢失。