首页 IIC总线协议

IIC总线协议

举报
开通vip

IIC总线协议IIC总线协议IIC总线协议IIC总线协议iic总线协议I2C协议是单片机与其它芯片常用通讯协议,由于只需要两根线,所以很好使用。 1.I2C总线特点(1)只要求两条总线线路一条串行数据线SDA一条串行时钟线SCL (2) 每个连接到总线器件都可以通过唯一地址和一直存在简单主机/从机关系软件设定地址;主机可以作为主发送器或主机接收器 (3)它是一个真正多主机总线,如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏 (4)串行8位双向数据传输位速率在标准模式下可达100kbit/s快速模式下可达...

IIC总线协议
IIC总线 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 IIC总线协议IIC总线协议iic总线协议I2C协议是单片机与其它芯片常用通讯协议,由于只需要两根线,所以很好使用。 1.I2C总线特点(1)只要求两条总线线路一条串行数据线SDA一条串行时钟线SCL (2) 每个连接到总线器件都可以通过唯一地址和一直存在简单主机/从机关系软件设定地址;主机可以作为主发送器或主机接收器 (3)它是一个真正多主机总线,如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏 (4)串行8位双向数据传输位速率在标准模式下可达100kbit/s快速模式下可达400kbit/s高速模式下可达.4Mbit/s (5)片上滤波器可以滤去总线数据线上毛刺波保证数据完整(6) 连接到相同总线IC数量只受到总线最大电容400pF限制 I2C协议总线信号时序分析1.数据有效性:SDA线上数据必须在时钟高电平周期保持稳定数据线高或低电平状态只有在SCL线时钟信号是低电平时才能改变。如图3.1I2C总线位传输所示。 HYPERLINK"" 图1.I2C总线位传输 2.起始和停止条件当SCL线是高电平时,SDA线从高电平向低电平切换,这个情况表示起始条件。当SCL线是高电平时,SDA线由低电平向高电平切换表示停止条件。如图3.2I2C起始和停止条件所示。图3.2起始和停止条件3. 总线空闲状态SDA和SCL两条信号线都处于高电平,即总线上所有器件都释放总线,两条信号线各自上拉电阻把电平拉高; 4.数据传输与应答信号ACK发送到SDA线上数据必须是8位。每次传输可以发送数据不受限制。每个字节后必须在时钟第9个脉冲期间释放数据总线(SDA为高),由接收器发送一个ACK(把数据总线电平拉低)来表示数据成功接收。如图3.3I2C总线响应。  图3.3I2C总线响应首先传输是数据最高位(MSB)。如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整数据字节,可以使时钟SCL保持低电平迫使主机进入等待状态。当从机准备好接收下一个数据字节并释放时钟线SCL后,数据传输继续。如图3.4I2C总线数据传输所示。图3.4I2C总线数据传输4.地址格式数据传输遵循如图4.1完整数据传送所示,在起始条件之后,发送一个7位从机地址,紧接着第8位是数据方向(R/—W),0-表示发送数据(写),1-表示接收数据(读)。数据传输一般由主机产生停止位(P)终止。但是如果主机仍希望在总线上通讯,它可以产生重复起始条件(Sr),和寻址另一个从机,而不是首先产生一个停止条件。在这种传输中,可能有不同读/写格式结合。如图3.5I2C总线完整数据传输。图3.5I2C总线完整数据传输C程序#include#defineuintunsignedint#defineucharunsignedcharsbitSDA=P2^4;sbitSCL=P2^5;ucharNackFlag;//***********************************************************voiddelay()  //延时{_nop_();_nop_();_nop_();_nop_();_nop_();}//************************************************************voidstartIIC()  //启动IIC总线{SDA=1;SCL=1;delay();SDA=0;delay();SCL=0;}//*************************************************************voidstopIIC()  //停止IIC总线{SDA=0;SCL=1;delay();SDA=1;delay();SCL=0;}//*************************************************************voidAck_IIC()  //主器件为发送方,主控器发送完数据后,主控器件等待从器件应答{ucharerrtime=200;SDA=1;SCL=1;NackFlag=0;while(SDA)  {  errtime--;  if(errtime==0)    {  stopIIC();  NackFlag=1;  return;  }}SCL=0;}//*************************************************************voidsendIIC(ucharnum)//主控器件发送数据到IIC总线{uchari;for(i=0;i<8;i++)  {  SCL=0;  delay();  SDA=num&0x80;  SCL=1;  delay();  num<<=1;  delay();  }SCL=0;}//*************************************************************ucharreceiveIIC(void)  //主控器件接收IIC总线传来数据{uchari,datax=0;SDA=1;for(i=0;i<8;i++)  {  datax<<=1;  SCL=0;  delay();  SCL=1;  delay();  datax|=SDA;  }SCL=0;returndatax;}//************************************************************voidsendAckIIC(void)//主器件为接收方,从器件发送完数据后,从器件等待主器件应答信号{SDA=0;delay();SCL=1;delay();SCL=0;}  HYPERLINK""\l"content"下一贴>>IIC总线协议,AT24C08储存器IIC总线(InterIntegratedCircuitBus):是Philips公司推出串行总线标准(为二线制)。总线上扩展外围器件及外设接口通过总线寻址,是具备总线仲裁和高低速设备同步等功能高性能多主机总线。I2C总线工作原理串行数据线SDA和串行时钟线SCL构成,可发送和接收数据。所有挂接在I2C总线上器件和接口电路都应具有I2C总线接口,且所有SDA/SCL同名端相连。总线上所有器件要依靠SDA发送地址信号寻址,不需要片选线。特点:组成系统结构简单,占用空间小,芯片管脚数量少,无需片选信号,价格低。允许若干兼容器件共享总线,应用比较广泛。总线长度可达7.6m,传送速度可达400kbps,标准速率为100kbps。支持多个组件。支持多主控器件(某时刻只能有一个主控器件)。I2C总线上所有设备SDA,SCL引脚必须外接上拉电阻。  典型I2C总线系统结构,如图所示  I2C总线器件寻址方式由于所有器件都通过SCL和SDA连接在I2C总线上,因此,主器件在进行数据传输前需要通过寻址,选择需要通信从器件。I2C总线上所有外围器件都需要有唯一7位地址,由器件地址和引脚地址两部分组成。器件地址是I2C器件固有地址编码,器件出厂时就已经给定,不可更改。引脚地址是由I2C总线外围器件地址引脚(A2,A1,A0)决定,根据其在电路中接电源正极、接地或悬空不同,形成不同地址代码。                                                                               I2C总线概述•         I2C总线采用两线制,由数据线SDA和时钟线SCL构成。I2C总线对数据通信时序进行了严格定义。                            I2C总线数据操作          在I2C总线上,数据是伴随着时钟脉冲,一位一位地传送,数据位由高到低传送,每位数据占一个时钟脉冲。I2C总线上在时钟线SCL高电平期间,数据线SDA状态就表示要传送数据,高电平为数据1,低电平为数据0。在数据传送时,SDA上数据改变在时钟线为低电平时完成,而SCL为高电平时,SDA必须保持稳定,否则SDA上变化会被当作起始或终止信号而致使数据传输停止。I2C总线在传送数据过程中共有三种类型信号:开始信号、停止信号和应答信号。开始信号:SCL保持高电平状态下,SDA出现下降沿。出现开始信号以后,总线被认为“忙”。停止信号:SCL保持高电平状态下,SDA出现上升沿。停止信号过后,总线被认为“空闲”。应答信号:接收数据器件在接收到8位数据后,向发送数据器件发出特定低电平脉冲,表示已收到数据。          总线空闲:SCL和SDA都保持高电平。总线忙:在数据传送开始以后,SCL为高电平时候,SDA数据必须保持稳定,只有当SCL为低电平时候才允许SDA上数据改变。 I2C协议起始信号时序起始信号用于开始I2C总线通信。其中,起始信号是在时钟线SCL为高电平期间,数据SDA上高电平向低电平变化下降沿信号。起始信号出现以后,才可以进行后续I2C总线寻址或数据传输等I2C协议终止信号时序终止信号用于终止I2C总线通信。其中,终止信号是在时钟线SCL为高电平期间,数据线SDA上低电平到高电平变化上升沿信号。终止信号一出现,所有I2C总线操作都结束,并释放总线控制权。终止信号时序如下:I2C协议应答信号时序应答信号用于表明I2C总线数据传输结束。I2C总线数据传送时,一个字节数据传送完毕后都必须由主器件产生应答信号。主器件在第9个时钟位上释放数据总线SDA,使其处于高电平状态,此时从器件输出低电平拉低数据总线SDA为应答信号。应答信号时序,如图所示。                    I2C总线传送格式I2C总线传送格式为主从式,对系统中某一器件来说有四种工作方式:主发送方式、从发送方式、主接收方式、从接收方式。只讲主发送从接收(单片机发送24C08接收)主器件产生开始信号以后,发送第一个字节为控制字节。前七位为从器件地址片选信号。最低位为数据传送方向位(高电平表示读从器件,低电平表示写从器件),然后发送一个选择从器件片内地址字节,来决定开始读写数据起始地址。接着再发送数据字节,可以是单字节数据,也可以是一组数据,由主器件来决定。从器件每接收到一个字节以后,都要返回一个应答信号(ASK=0)。主器件在应答时钟周期高电平期间释放SDA线,转由从器件控制,从器件在这个时钟周期高电平期间必须拉低SDA线,并使之为稳定低电平,作为有效应答信号。控制字节在起始条件之后,必须是器件控制字节,其中,高四位为器件类型识别符(不同芯片类型有不同定义,E2PROM为1010),接着三位为片选,最低位为读写控制位,为“1”时为读操作,为“0”时为写操作。如下图所示。写操作写操作分为字节写和页面写两种操作,对于页面写,根据芯片一次装载字节不同有所不同。页面写地址、应答和数据传送时序如下图所示。 读操作读操作有三种基本操作:当前地址读、随机读和顺序读。下图给出是顺序读时序图。应当注意是,为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平,然后发出停止条件。                                   C语言相关程序 为了您安全,请只打开来源可靠网址HYPERLINK""\t"_blank"打开网站    HYPERLINK""\l"#"取消窗体底端
本文档为【IIC总线协议】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_597436
暂无简介~
格式:doc
大小:644KB
软件:Word
页数:14
分类:
上传时间:2019-07-18
浏览量:0