搜档网
当前位置:搜档网 › I2C串行接口介绍

I2C串行接口介绍

I2C串行总线通信原理

采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。

常用的串行扩展总线有:I2C (Inter IC BUS)总线、单总线(1-WIRE BUS)、SPI(Serial Peripheral Interface)总线等。本章仅讨论I2C串行总线。

一、IIC概述

IIC(Inter-Integrated Circuit)总线,许多文献写作I2C,主要用于同一电路板内各集成电路模块(IC)之间的连接。IIC采用双向2线制串行数据传输方式,简化IC之间的通信连接。IIC协议是PHILIPS公司于二十世纪八十年代初提出,其后,PHILIPS和其他厂商提供了种类丰富的IIC兼容芯片。目前,IIC总线标准已经成为世界性的工业标准。各大半导体公司推出了大量的带有IIC接口的芯片,如RAM、EEPROM、Flash ROM、A/D、D/A转换、

LED/LCD驱动、I/O接口、实时时钟等。

二、IIC总线特点

在硬件结构上,它采用数据(SDA)和时钟(SCL)两根线来完成数据的传输及外围器件的扩展,任何一个具有IIC总线接口的外围器件,不论其功能差别有多大,都具有相同的电气接口,因

此都可以挂接在总线上,使其连接方式变得十分

简单。

对各器件的寻址是软寻址方式,因此节点上没有必须的片选线,器件地址给定完全取决于器件

类型与单元结构,这也简化了IIC系统的硬件连接。

另外IIC总线能在总线竞争过程中进行总线控制权的仲裁和时钟同步,并且不会造成数据丢失,因此由IIC总线连接的多机系统可以是一个多主机系统,支持多主控。

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

三、IIC总线的相关术语

①主机(主控器):在IIC总线中,提供时钟信号,对总线时序进行控制的器件。主机负责总线

上各个设备信息的传输控制,检测并协调数据的

发送和接收。主机对整个数据传输具有绝对的控

制权,其它设备只对主机发送的控制信息作出响应。如果在IIC系统中只有一个MCU,那么由

MCU担任主机。

②从机(被控器):在IIC系统中,除主机外的其他设备均为从机。主机通过从机地址访问从机,对应的从机作出响应,与主机通信。从机之间无法通信,任何数据传输都必须通过主机进行。

③地址:每一个IIC器件都有自己的地址,以供自身在从机模式下使用。在标准的IIC中定义从机地址是7位(扩展IIC允许10位地址)。

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

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

⑥SDA(Serial DAta):串行数据线。

⑦SCL(Serial CLock):串行时钟线。

四、IIC总线工作原理

下图给出一个由MCU作为主机,通过IIC总线带3个从机的单主机IIC总线系统。这是最常用、最典型的IIC总线连接方式。

IIC系统由一条串行数据线SDA和一条串行时钟线SCL组成。I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。

上拉电阻一般为10k

1、总线上数据的有效性规定

IIC 总线是以串行方式传输数据,I 2C 总线进行数据传送时,从数据字节的最高位开始传送,每一个数据位在SCL 上都有一个时钟脉冲相对应。时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。

(一)、I 2C 总线的数据传送

2、起始、终止信号和应答信号

起始信号(START):如下图所示,当SCL为高电平时,SDA由高电平向低电平跳变,主机就向从机产生开始信号。当总线空闲的时候,主机通过发送开始(START)信号建立通信。

停止信号(STOP):如下图所示,当SCL 为高电平时,SDA由低电平向高电平跳变,产生停止信号。主机通过发送停止信号,结束数据通信。

起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态,其它器件不能再产生开始信号。在终止信号产生后,总线就处于空闲状态。

连接到I2C总线上的器件,若具有I2C总线的硬件接口,则很容易检测到起始和终止信号。

应答信号:

应答信号(A):接收数据的IC在接收到8位数据后,向发送数据的IC发出的低电平脉冲应答。每一个数据字节后面都要跟一位应答信号,表示已收到数据。应答信号在第9个时钟周期出现(scl=1),这时发送器必须在这一时钟位上释放数据线,由接收设备拉低SDA电平来产生应答信号。所以,一个完整的字节数据传输需要9个时钟脉冲。

非应答信号:如果接收设备保持SDA的高电平则产生非应答信号。

如果从机作为接收方向主机发送非应答信号,这样,主机方就认为此次数据传输失败;

如果是主机作为接收方,在从机发送器发送完一个字节数据后,发送了非应答信号,从机就认为数据传输结束,并释放SDA线。不论是以上哪种情况都会终止数据传输。

应答信号由接收器产生,总线上带有IIC总线接口的器件很容易检测到这些信号。

3、数据传送格式

I2C总线发送器送到SDA线上的每个字节必须为8位长,传送时高位在前,低位在后。与之对应,主器件在SCL线上产生8个脉冲;第9个脉冲低电平期间,发送器释放SDA线,接收器把SDA线拉低,以给出一个接收确认位;每传1个字节需要9个时钟脉冲

4、主机向从机读写数据的过程

I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。

(1)主机向从机写入一个字节数据的操作过程STO P

A 数据A 被访A 0从

START W 应答主机写

的一个

字节数

主机要向从机写1个字节数据时,主机首先产生START信号,然后紧跟着发送一个从机地址,这个地址共有7位,紧接着的第8位是数据方向位(R/W),0表示主机发送数据(写),1表示主机接收数据(读),这时候主机等待从机的应答信号(A),当主机收到应答信号时,发送要访问的子地址,继续等待从机的应答信号,当主机收到应答信号时,发送1个字节的数据,继续等待从机的应答信号,当主机收到应答信号时,产生停止信号,结束传送过程。

(2)主机要从从机读出1个字节数据的操作过程

ST A 数据A 1从机地址star A 被子

址A 0

从star 应答信号应答信号R 主机读入

的一个字

节数据

非应答信号

SPII2CUART三种串行总线的原理区别及应用

简单描述: SPI 与I2C这两种通信方式都就是短距离的,芯片与芯片之间或者其她元器件如传感器与芯片之间的通信。SPI与IIC就是板上通信,IIC有时也会做板间通信,不过距离甚短,不过超过一米,例如一些触摸屏,手机液晶屏那些很薄膜排线很多用IIC,I2C能用于替代标准的并行总线,能连接的各种集成电路与功能模块。I2C就是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存这两种线属于低速传输; 而UART就是应用于两个设备之间的通信,如用单片机做好的设备与计算机的通信。这样的通信可以做长距离的。UART与,UART就就是我们指的串口,速度比上面三者快,最高达100K左右,用与计算机与设备或者计算机与计算之间通信,但有效范围不会很长,约10米左右,UART优点就是支持面广,程序设计结构很简单,随着USB的发展,UART也逐渐走向下坡; SmBus有点类似于USB设备跟计算机那样的短距离通信。 简单的狭义的说SPI与I2C就是做在电路板上的。而UART与SMBUS就是在机器外面连接两个机器的。 详细描述: 1、UART(TX,RX)就就是两线,一根发送一根接收,可以全双工通信,线数也比较少。数据就是异步传输的,对双方的时序要求比较严格,通信速度也不就是很快。在多机通信上面用的最多。 2、SPI(CLK,I/O,O,CS)接口与上面UART相比,多了一条同步时钟线,上面UART 的缺点也就就是它的优点了,对通信双方的时序要求不严格不同设备之间可以很容易结合,而且通信速度非常快。一般用在产品内部元件之间的高速数据通信上面,如大容量存储器等。 3、I2C(SCL,SDA)接口也就是两线接口,它就是两根线之间通过复杂的逻辑关系传输数据的,通信速度不高,程序写起来也比较复杂。一般单片机系统里主要用来与24C02等小容易存储器连接。 SPI:高速同步串行口。3~4线接口,收发独立、可同步进行 UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢 SPI:一种串行传输方式,三线制,网上可找到其通信协议与用法的 3根线实现数据双向传输 串行外围接口 Serial peripheral interface UART:通用异步收发器 UART就是用于控制计算机与串行设备的芯片。有一点要注意的就是,它提供了

SPI、I2C、UART三种串行总线的区别

SPI、I2C、UART三种串行总线的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS:意为IC之间总线) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI 设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。 如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。 I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。 如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这里的描述可能很不完备) UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。 显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。 第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行; 第四,看看牛人们的意见吧! wudanyu:I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且I2C使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI 则无所谓,因为它是有时钟的协议。 quickmouse:I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。

I2C总线原理及应用实例

I2C总线 原理及应 用实例 I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为 音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的 通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能 状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数, 增加了系统的安全性,方便了管理。 1 I2C总线特点 I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互 联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持 40个组件。I2C总线的另一个优点是,它支持多主控(multimastering),其中 任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传 输和时钟频率。当然,在任何时间点上只能有一个主控。 2 I2C总线工作原理 2.1 总线的构成及信号类型 I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种 被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工 作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并 接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决 于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码 用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别 (如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线 上,却彼此独立,互不相关。 I2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。 开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。 应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单 元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递 信号的判断。若未收到应答信号,由判断为受控单元出现故障。 目前有很多半导体集成电路上都集成了I2C接口。带有I2C接口的单片机有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX 系列等。很多外围器件如存储器、监控芯片等也提供I2C接口。 3 总线基本操作 I2C规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件和从器件都可以工作于接收和发送状态。总

SPI、I2C、UART三种串行总线的原理、区别及应用

简单描述: SPI 和I2C这两种通信方式都是短距离的,芯片和芯片之间或者其他元器件如传感器和芯片之间的通信。SPI和IIC是板上通信,IIC有时也会做板间通信,不过距离甚短,不过超过一米,例如一些触摸屏,手机液晶屏那些很薄膜排线很多用IIC,I2C能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C 是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存这两种线属于低速传输; 而UART是应用于两个设备之间的通信,如用单片机做好的设备和计算机的通信。这样的通信可以做长距离的。UART和,UART就是我们指的串口,速度比上面三者快,最高达100K左右,用与计算机与设备或者计算机和计算之间通信,但有效范围不会很长,约10米左右,UART优点是支持面广,程序设计结构很简单,随着USB的发展,UART也逐渐走向下坡; SmBus有点类似于USB设备跟计算机那样的短距离通信。 简单的狭义的说SPI和I2C是做在电路板上的。而UART和SMBUS是在机器外面连接两个机器的。 详细描述: 1、UART(TX,RX)就是两线,一根发送一根接收,可以全双工通信,线数也比较少。数据是异步传输的,对双方的时序要求比较严格,通信速度也不是很快。在多机通信上面用的最多。 2、SPI(CLK,I/O,O,CS)接口和上面UART相比,多了一条同步时钟线,上面UART 的缺点也就是它的优点了,对通信双方的时序要求不严格不同设备之间可以很容易结合,而且通信速度非常快。一般用在产品内部元件之间的高速数据通信上面,如大容量存储器等。 3、I2C(SCL,SDA)接口也是两线接口,它是两根线之间通过复杂的逻辑关系传输数据的,通信速度不高,程序写起来也比较复杂。一般单片机系统里主要用来和24C02等小容易存储器连接。 SPI:高速同步串行口。3~4线接口,收发独立、可同步进行 UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢 SPI:一种串行传输方式,三线制,网上可找到其通信协议和用法的 3根线实现数据双向传输 串行外围接口 Serial peripheral interface UART:通用异步收发器 UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了

SPI、I2C、UART三种串行总线协议的区别

第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输 入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以 实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。如果用通用IO 口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现 的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输 出口即可,若只实现从设备,则只需输入口即可。 I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。 在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现 设备组网。如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入 输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这 里的描述可能很不完备) UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般 由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、 UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。显然, 如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。 第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行; 第四,看看牛人们的意见吧! 1、I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单 一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无 所谓,因为它是有时钟的协议。 2、I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。

SPI、I2C、UART三种串行总线协议的区别

SPI、I2C、UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS:意为IC之间总线) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。 如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。 I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。 如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这里的描述可能很不完备) UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART 发送器组成,硬件上由两根线,一根用于发送,一根用于接收。 显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。 第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行;

I2C与UART的区别与比较

I2C IIC本身是为板级通讯设计,没有考虑远距离通讯.UART通讯编程简单,通讯速度远比IIC 快,可以直接使用RS485延伸通讯距离达到1km,通讯速度很容易做高。 UART是一个并行输入成为串行输出的芯片...有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信. I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用 于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优 点。 发送器:发送数据到总线的器件; 接收器:从总线接收数据的器件; 主机:初始化发送产生时钟信号和终止发送的器件; 从机:被主机寻址的器件; 多主机:同时有多于一个主机尝试控制总线但不破坏传输; 仲裁:是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使传输不被破坏 的过程; 同步:两个或多个器件同步时钟信号的过程。 两条总线线路:一条串行数据线SDA,一条串行时钟线SCL;SDA 线上的数据必须在 时钟的高电平周期保持稳定。数据线的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变。

SCL 线是高电平时,SDA 线从高电平向低电平切换,这个情况表示起始条件; SCL 线是高电平时,SDA 线由低电平向高电平切换,这个情况表示停止条件。 发送到SDA 线上的每个字节必须为8 位,每次传输可以发送的字节数量不受限制。每个 字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平,迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL 后数据传输继续。 数据传输必须带响应,相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间发送器 释放SDA 线(高)。在响应的时钟脉冲期间,接收器必须将SDA 线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。 写操作 写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不 同有所不同。 读操作

TMS320F28335笔记-I2C串行总线

I2C串行总线 I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。 每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器。 I2C总线的数据传送 一、数据位的有效性规定 I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。 二、起始和终止信号 SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。 起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。 连接到I2C总线上的器件,若具有I2C总线的硬件接口,则很容易检测到起始和终止信号。 三、数据传送格式 (1)字节传送与应答 每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。

由于某种原因从机不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收总线上的数据),它必须将数据线置于高电平,而由主机产生一个终止信号以结束总线的数据传送。 如果从机对主机进行了应答,但在数据传送一段时间后无法继续接收更多的数据时,从机可以通过对无法接收的第一个数据字节的“非应答”通知主机,主机则应发出终止信号以结束数据的继续传送。 当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。这个信号是由对从机的“非应答”来实现的。然后,从机释放SDA线,以允许主机产生终止信号。 (2)数据帧格式 I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。 在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/T),用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。 在总线的一次数据传送过程中,可以有以下几种组合方式: a、主机向从机发送数据,数据传送方向在整个传送过程中不变: 注:有阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送。 A表示应答,A非表示非应答(高电平)。S表示起始信号,P表示终止信号。 b、主机在第一个字节后,立即从从机读数据: c、在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反相。 四、总线的寻址 I2C总线协议有明确的规定:采用7位的寻址字节(寻址字节是起始信号后的第一个字节)。 (1)寻址字节的位定义 D7~D1位组成从机的地址。D0位是数据传送方向位,为“0”时表示主机向从机写数据,为“1”时表示主机由从机读数据。 ?主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,根据R/T位将自己确定为发送器或接收器。 ?从机的地址由固定部分和可编程部分组成。在一个系统中可能希望接入多个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。如一个从机的7位寻址位有4位是固定位,3位是可编程位,这时仅能寻址8个同样的器件,即可以有8个同样的器件接入到该I2C总线系统中。

I2C 串行总线的组成及工作原理

I2C 串行总线的组成及工作原理 I2C 串行总线的组成及工作原理 1 I2C串行总线的组成及工作原理 采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。 常用的串行扩展总线有:I2C (Inter IC BUS)总线、单总线(1-WIRE BUS)、SPI(Serial Peripheral Interface)总线及Microwire/PLUS等。 1.1 I2C串行总线概述 I2C总线是一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与

”关系。 每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器。在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免混乱,I2C总线要通过总线仲裁,以决定由哪一台主机控制总线。在80C51单片机应用系统的串行总线扩展中,我们常以80C51单片机为主机,其它接口器件为从机的单主机情况。 1.2 I2C总线的数据传送 一、数据位的有效性规定 I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。 二、起始和终止信号 SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。 起始和终止信号都是由主机发出的,在起始信号产生后,总

I2C串行总线的组成及工作原理

I2C串行总线的组成及工作原理 ?采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充 极为容易。 ?常用的串行扩展总线有:I2C (Inter IC BUS)总线、单总线(1-WIRE BUS)、SPI(Serial Peripheral Interface) 总线及Microwire/PLUS等。 本章仅讨论I2C串行总线。 8.1.1 I2C串行总线概述 I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。 I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。 I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。 每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器。 在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免混乱,I2C总线要通过总线仲裁,以决定由哪一台主机控制总线。 在80C51单片机应用系统的串行总线扩展中,我们经常遇到的是以80C51单片机为主机,其它接口器件为从机的单主机情况。

8.1.2 I2C总线的数据传送 一、数据位的有效性规定 I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。 二、起始和终止信号 SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。 起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。 连接到I2C总线上的器件,若具有I2C总线的硬件接口,则很容易检测到起始和终止信号。对于不具备I2C总线硬件接口的有些单片机来说,为了检测起始和终止信号,必须保证在每个时钟周期内对数据线SDA采样两次。 接收器件收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接收下一个字节,这时接收器件可以将SCL线拉成低电平,从而使主机处于等待状态。直到接收器件准备好接收下一个字节时,再释放SCL线使之为高电平,从而使数据传送可以继续进行。 三、数据传送格式 (1)字节传送与应答 每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。

I2C与UART的区别与比较

I2C lie本身是为板级通讯设计,没有考虑远距离通讯.UART通讯编程简单,通讯速度远比lie 快,可以直接使用RS485延伸通讯距离达到1km,通讯速度很容易做高。 UART是一个并行输入成为串行输出的芯片…有一点要注意的是,它提供了RS-232C数据终 端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信. I2C (Inter —Integrated Circuit )总线是由PHILIPS公司开发的两线式串行总线,用 于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。 发送器:发送数据到总线的器件;接收器:从总线接收数据的器件;主机:初始化发送产生时钟信号和终止发送的器件;从机:被主机寻址的器件;多主机:同时有多于一个主机尝试控制总线但不破坏传输;仲裁:是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使传输不被破坏的过程;同步:两个或多个器件同步时钟信号的过程。 两条总线线路:一条串行数据线SDA 一条串行时钟线SCL;SDA线上的数据必须在 时钟的高电平周期保持稳定。数据线的高或低电平状态只有在SCL线的时钟信号是低电平时才能改变。

SCL 线是高电平时,SDA 线从高电平向低电平切换,这个情况表示起始条件; SCL 线是高电平时,SDA 线由低电平向高电平切换,这个情况表示停止条件。 发送到SDA 线上的每个字节必须为 8位,每次传输可以发送的字节数量不受限制。每个 字节后必须跟一个响应位。首先传输的是数据的最高位 (MSB ,如果从机要完成一些其他功 能后(例如一个内部中断服务程序) 才能接收或发送下一个完整的数据字节, 可以使时钟线 SCL 保持低电平,迫使主机进入等待状态, 当从机准备好接收下一个数据字节并释放时钟线 SCL 后 数据传输继续。 数据传输必须带响应,相关的响应时钟脉冲由主机产生。在响应的时钟脉冲期间发送器 释放SDA 线(高)。在响应的时钟脉冲期间,接收器必须将 SDA 线拉低,使它在这个时钟脉 冲的高电平期间保持稳定的低电平。 SDA 写操作 写操作分为字节写和页面写两种操作, 对于页面写根据芯片的一次装载的字节不 同有所不同。 读操作 SDA SCL SCL MSB AcknowlEMigGmont Achnowlodgomo Si^al Frocn Receiver Signal From Rec? I. —J START Cofidition (S) /\Z\7\ 7 8 R/W 9 ACK Achrtowlodgomant Signal Frorii Rewiver /XZXZX/X/V^^^ i 2 3 9 斫矗 ACK Condition (P) 起姑条件 停止条

相关主题