iic协议特点,iic通信协议的特点
本作品内容为iic协议特点,格式为 docx ,大小 45634 KB ,页数为 39页
('第1页共39页竭诚为您提供优质文档/双击可除iic协议特点篇一:iic总线协议通信协议:所谓通信协议是指通信双方的一种约定。约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。因此,也叫做通信控制规程,或称传输控制规程,它属于isososi七层参考模型中的数据链路层。目前,采用的通信协议有两类:异步协议和同步协议。同步协议又有面向字符和面向比特以及面向字节计数第2页共39页三种。其中,面向字节计数的同步协议主要用于dec公司的网络体系结构中。异步协议:一个字符一个字符地传输,每个字符一位一位地传输,传输一个字符时,以起始位开始,然后传输字符本身的各位,接着传输校验位,最后以停止位结束该字符的传输。一次传输的起始位、字符各位、校验位、停止位构成一组完整的信息,称为帧(Frame-)。帧与帧之间可有任意个空闲位。起始位之后是数据的最低位。串口通信(serialcommunication),是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。当前比较流行的串行通信协议主要有eia-232、eia-232、eia-485、usb、ieee1394几种:第3页共39页以下着重介绍i2c总线:一、i2c总线概述:i2c总线是phlips公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。i2c总线只有两根双向信号线。一根是数据线sda,另一根是时钟线scl。如下图:i2c总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的sda及scl都是线“与”关系。如下图:每个接到i2c总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器。在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免混乱,i2c总线要通过总线仲裁,以决定由哪一台主机控制总第4页共39页线。二、i2c总线数据传送:1、数据位的有效性规定i2c总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。如下图:2、起始信号和终止信号scl线为高电平期间,sda线由高电平向低电平的变化表示起始信号;scl线为高电平期间,sda线由低电平向高电平的变化表示终止信号。如下图:起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。连接到i2c总线上的器件,若具有i2c总线的硬件接口,则很容易检测到起始和终止信号。接收器件收到一个完整的数据字节后,有可能需要完成一些其它第5页共39页工作,如处理内部中断服务等,可能无法立刻接收下一个字节,这时接收器件可以将scl线拉成低电平,从而使主机处于等待状态。直到接收器件准备好接收下一个字节时,再释放scl线使之为高电平,从而使数据传送可以继续进行。3、数据传送格式(1)字节传送与应答每一个字节必须保证是8位长度。数据传送时,先传送最高位(msb),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。如下图:由于某种原因从机不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收总线上的数据),它必须将数据线置于高电平,而由主机产生一个终止信号以结束总线的数据传送;如果从机对主机进行了应答,但在数据传送一段时间后无法继续接收更多的数据时,从机可以通过对无法接收第6页共39页的第一个数据字节的“非应答”通知主机,主机则应发出终止信号以结束数据的继续传送;当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。这个信号是由对从机的“非应答”来实现的。然后,从机释放sda线,以允许主机产生终止信号。(2)数据帧率格式i2c总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/t),用“0”表示主机发送数据(t),“1”表示主机接收数据(R)。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。第7页共39页在总线的一次数据传送过程中,可以有以下几种组合方式:①主机向从机发送数据,数据的传送方向在整个传送过程中不变:【注】有阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送。a表示应答,a非表示非应答(高电平)。s表示起始信号,p表示终止信号。②主机在第一个字节后,立即从从机读数据:③在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反相。4、总线的寻址i2c总线有明确规定:采用7bit寻址字节(寻址字节是起始信号后的第一个字节)。【注】d7~d1位组成从机的地址。d0位是数据传送方第8页共39页向位,为“0”时表示主机向从机写数据,为“1”时表示主机由从机读数据。主机发送地址时,总线上的每个从机都将这7位地址码和自己的地址比较,如果相同,则认为自己被主机寻址,根据R/t位将自己确认为发送器或者接收器。从机的地址由固定部分和可编程部分组成。在一个系统中,可能希望接入多个相同的从机,从机地址中可以编程的部分决定了可接入总线该类器件的最大数目。如一个从机的7位寻址位有4位是固定位,3位是可编程位,这时仅能寻址8个同样的器件,即可以有8个同样的器件接入到该i2c总线系统中。附:单片机i2c串行总线数据传送模拟子程序:1)总线的初始化Voidinit(){第9页共39页sda=1;delay();scl=1;delay();}将总线都拉高以释放总线2)启动信号voidstart(){sda=1;delay();scl=1;delay();sda=0;delay();}scl在高电平期间,sda一个下降沿启动信号3)应答信号voidrespons(){uchari=0;scl=1;delay();while((sda==1)scl=0;delay();}}scl在高电平期间,sda被从设备拉为低电平表示应答,上面的代码中有一个(sda==1)和(i4)停止信号voidstop(){sda=0;delay();scl=1;delay();sda=1;delay();}scl在高平期间,sda一个上升沿停止信号。第10页共39页5)写一个字节voidwritebyte(uchardata){uchari,temp;temp=data;for(i=0;i{temp=tempscl=0;delay();sda=1;delay();}串行发送一个字节时,需要把这个字节中的8位一位一位的发出,temp=temp6)读一个字节ucharreadbyte(){uchari,k;scl=0;delay();sda=1For(i=0;iscl=1;delay();k=(kdelay();Retrunk;}串行接受一个字符时需要将8位一位一位的接收,然后再组合成一个字节,上面代码中我们定义了一个临时变量k,将k左移一位后与sda进行或运算,依次把8个独立的第11页共39页位放入一个字节中来完成接收。篇二:iic协议iic是作为英特尔ic的互补,这种总线类型是由菲利浦半导体公司在八十年代初设计出来的,主要是用来连接整体电路(ics),iic是一种多向控制总线,也就是说多个芯片可以连接到同一总线结构下,同时每个芯片都可以作为实施数据传输的控制源。这种方式简化了信号传输总线。例如:内存中的spd信息,通过iic,与bx芯片组联系,iic存在于英特尔piix4结构体系中。随着大规模集成电路技术的发展,把cpu和一个单独工作系统所必需的Rom、Ram、i/o端口、a/d、d/a等外围电路集成在一个单片内而制成的单片机或微控制器愈来愈方便。目前,世界上许多公司生产单片机,品种很多。其中包括各种字长的cpu,各种容量的Rom、Ram以及功能各异的i/o接口电路等等,但是,单片机的品种规格仍然有限,第12页共39页所以只能选用某种单片机来进行扩展。扩展的方法有两种:一种是并行总线,另一种是串行总线。由于串行总线的连线少,结构简单,往往不用专门的母板和插座而直接用导线连接各个设备。因此,采用串行线可大大简化系统的硬件设计。philips公司早在十几年前就推出了i2c串行总线,利用该总线可实现多主机系统所需的裁决和高低速设备同步等功能。因此,这是一种高性能的串行总线。1、i2c总线的硬件结构i2c串行总线一般有两根信号线,一根是双向的数据线sda,另一根是时钟线scl。所有接到i2c总线设备上的串行数据sda都接到总线的sda上,各设备的时钟线scl接到总线的scl上。典型的i2c总线结构如图1所示。为了避免总线信号的混乱,要求各设备连接到总线的输出端时必须是开漏输出或集电极开路输出。设备与总线的接口电路如图2所示。设备上的串行数据线sda接口电路第13页共39页应该是双向的,输出电路用于向总线上发送数据,输入电路用于接收总线上的数据。而串行时钟线也应是双向的,作为控制总线数据传送的主机,一方面要通过scl输出电路发送时钟信号,另一方面还要检测总线上的scl电平,以决定什么时候发送下一个时钟脉冲电平;作为接受主机命令的从机,要按总线上的scl信号发出或接收sda上的信号,也可以向scl线发出低电平信号以延长总线时钟信号周期。总线空闲时,因各设备都是开漏输出,上拉电阻Rp使sda和scl线都保持高电平。任一设备输出的低电平都将使相应的总线信号线变低,也就是说:各设备的sda是“与”关系,scl也是“与”关系。总线对设备接口电路的制造工艺和电平都没有特殊的要求(nmos、cmos都可以兼容)。在i2c总线上的数据传送率可高达每秒十万位,高速方式时在每秒四十万位以上。另外,总线上允许连接的设备数以其电容量不超过第14页共39页400pF为限。总线的运行(数据传输)由主机控制。所谓主机是指启动数据的传送(发出启动信号)、发出时钟信号以及传送结束时发出停止信号的设备,通常主机都是微处理器。被主机寻访的设备称为从机。为了进行通讯,每个接到i2c总线的设备都有一个唯一的地址,以便于主机寻访。主机和从机的数据传送,可以由主机发送数据到从机,也可以由从机发到主机。凡是发送数据到总线的设备称为发送器,从总线上接收数据的设备被称为接受器。i2c总线上允许连接多个微处理器以及各种外围设备,如存储器、led及lcd驱动器、a/d及d/a转换器等。为了保证数据可靠地传送,任一时刻总线只能由某一台主机控制,各微处理器应该在总线空闲时发送启动数据,为了妥善解决多台微处理器同时发送启动数据的传送(总线控制权)冲突,以及决定由哪一台微处理器控制总线的问题,i2c总线允许连接不同传送速率第15页共39页的设备。多台设备之间时钟信号的同步过程称为同步化。2、i2c数据传输在i2c总线传输过程中,将两种特定的情况定义为开始和停止条件(见图3):当scl保持“高”时,sda由“高”变为“低”为开始条件;当scl保持“高”且sda由“低”变为“高”时为停止条件。开始和停止条件均由主控制器产生。使用硬件接口可以很容易地检测到开始和停止条件,没有这种接口的微机必须以每时钟周期至少两次对sda取样,以检测这种变化。sda线上的数据在时钟“高”期间必须是稳定的,只有当scl线上的时钟信号为低时,数据线上的“高”或“低”状态才可以改变。输出到sda线上的每个字节必须是8位,每次传输的字节不受限制,但每个字节必须要有一个应答ack。如果一接收器件在完成其他功能(如一内部中断)前不能接收另一数据的完整字节时,它可以保持时钟线scl为第16页共39页低,以促使发送器进入等待状态;当接收器准备好接受数据的其它字节并释放时钟scl后,数据传输继续进行。i2c数据总线传送时序如图4所示。数据传送具有应答是必须的。与应答对应的时钟脉冲由主控制器产生,发送器在应答期间必须下拉sda线。当寻址的被控器件不能应答时,数据保持为高并使主控器产生停止条件而终止传输。在传输的过程中,在用到主控接收器的情况下,主控接收器必须发出一数据结束信号给被控发送器,从而使被控发送器释放数据线,以允许主控器产生停止条件。合法的数据传输格式如下:i2c总线在开始条件后的首字节决定哪个被控器将被主控器选择,例外的是“通用访问”地址,它可以在所有期间寻址。当主控器输出一地址时,系统中的每一器件都将开始条件后的前7位地址和自己的地址进行比较。如果相同,该器件即认为自己被主控器寻址,而作为被控接收器第17页共39页或被控发送器则取决于R/w位。3、i2c总线的应用i2c总线是各种总线中使用信号线最少,并具有自动寻址、多主机时钟同步和仲裁等功能的总线。因此,使用i2c总线设计计算机系统十分方便灵活,体积也小,因而在各类实际应用中得到广泛应用。下面举二个应用示例。3.1伺服控制系统用i2c扩展lcd显示器图5是一个伺服系统的结构图。它用8xc752单片机的pwm输出经放大后来驱动电机,电机的转速由测速机测取并直接送到8xc752片内的a/d电路。处理后的有关信息经i2c总线送到lcd驱动芯片pcF8577以驱动64段lcd显示板。3.2通用i/o端口作为i2c总线接口目前,51、96系列的单片机应用很广,但是由于它们都没有i2c总线接口,从而限制了在这些系统中使用具有i2c总线接口的器件。通过对i2c总线时序的分析,可以用第18页共39页51单片机的两根i/o线来实现i2c总线的功能。接i2c总线规定:scl线和sda线是各设备对应输出状态相“与”的结果,任一设备都可以用输出低电平的方法来延长scl的低电平时间,以迫使高速设备进入等待状态,从而实现不同速度设备间的时钟同步。因此,即使时钟脉冲的高、低电平时间长短不一,也能实现数据的可靠传送,可以用软件控制i/o口做i2c接口。下面就是用gms97c2051的通用i/o口来作为i2c总线接口,并由软件控制实现数据传送的例子,图6为其连线图。在单主控器的系统中,时钟线仅由主控器驱动,因此可以用51系列的一根i/o线作为scl的信号线,将其设备为输出方式,并由软件控制来产生串行时钟信号。在实际系统中使用了p1.3。另一根i/o线p1.2作为i2c总线的串行数据线,可在软件控制下在时钟的低电平期间读取或输出数据。系统传输数据的过程如下:先由单片机发出一个第19页共39页启始数据信号,接着送出要访问器件的7位地址数据,并等待被控器件的应答信号。当收以应答信号后,根据访问要求进行相应的操作。如果是读入数据,则数据线可一直设为输入方式,中间不需要改变sda线的工作方式,每读入一个字节均应依次检测应答信号;如果是输出数据,则首先将sda设置为输出方式,当发送完一个字节后,需要改变sda线为输入方式,此时读入被控器件的应答信号就完成了一个字节的传送。当所有数据传输完毕后,应向sda发出一个停止信号,以结束该次数据传输。下面给出51系列用汇编语言实现启始、停止、读、写、应答的程序,读者也可以根据i2c总线时序在96系列或其它单片机上实现i2c总线接口。p1.2==sdap1.3==scla.启动位程序ack:clRp1.3第20页共39页nopnopsetbp1.2nopnopnopcplp1.3;p1.3=1nopnopnopdengdai:jbp1.2,dengdaiRetb.读数据程序读字节可以在当前地址读(cuRRentRead),也可以随机读(RandomRead),读出数据的第21页共39页最后一个字节后不用加应答信号。Read:push0ehclRp1.4lcallbstaRt;staRtmoVa,#0a0h;sendthecnotRolbytelcallsendbytelcallackmoVa,R1;sendtheaddResslcallsendbytelcallacklcallbstaRt;staRtmoVa,#0a1h;sendthecnotRolbytelcallsendbytelcallacklcallReadbyte第22页共39页lcallbstoppop0ehRet送字节程序:sendbyte:push0ehpush00hmoVR0,#08hloop1:clRp1.3nopnopRlcamoVp1.2,ccplp1.3;p1.3=1nopnop第23页共39页djnzR0,loop1pop00hpop0ehRet读字节子程序:Readbyte:push0ehpush00hmoVR0,#08h;ReadthecontentclRaloop4:clRp1.3nopnopnopsetbp1.3;p1.3=1moVc,p1.2第24页共39页RlcadjnzR0,loop4moVR2,apop00hpop0ehRetc.写数据程序:wRite:push0ehclRp1.4lcallbstaRtmoVa,#0a0hclallsendbyte;sendthecontRolbytelcallackmoVa,R1;sendtheaddResslcallsendbyte第25页共39页lcallackmoVa,R2;wRitethecontentlcallsendbytelcallacklcallbstoppop0ehRet连续写的两个字节之间最好是有10ms的延时。当然,也可以进行页写(pagewRite),即一次性连续写8个字节,但采用页写方式时每个字节后要有一个应答信号。d.停止位程序:bstop:clRp1.3nopnopclRp1.2第26页共39页nopnopnopsetbp1.3nopnopnopsetbp1.2Ret篇三:iic协议使用iic协议使用i2c总线串行接口应用设计i2c是一种较为常用的串行接口标准,具有协议完善、支持芯片较多和占用i/o线少等优点。i2c总线是philips公司为有效实现电子器件之间的控制而开发的一种简单的第27页共39页双向两线总线。现在,i2c总线已经成为一个国际标准,在超过100种不同的ic集成电路上实现,得到超过50家公司的许可,应用涉及家电、通信、控制等众多领域,特别是在aRm嵌入式系统开发中得到广泛应用。1实例说明本实例介绍i2c总线接口在aRm中的应用,以及它在aRm平台中的i/o交互拓展能力。在aRm嵌入式系统开发中,系统和外围设备的信息交换能力非常重要。传统的方式多采用地址和数据总线来完成,但是由于嵌入式系统总线资源的限制,利用有限的i/o接口和足够的通信速度来扩展多功能的外围器件就显得十分必要。i2c总线正好可以满足这一嵌入式系统设计的需要。在嵌入式系统中应用i2c总线,可以在很大程度上简化系统结构,模块化系统电路,而i2c总线上各节点独立的电气特性也可以使整个系统具有最大的灵活性。第28页共39页2i2c设计原理2.112g主从模式i2c采用两根i/o线:一根时钟线(scl串行时钟线),一根数据线(sda串行数据线),实现全双工的同步数据通信。i2c总线通过scl/sda两根线使挂接到总线上的器件相互进行信息传递。aRm通过寻址来识别总线上的存储器、lcd驱动器、i/o扩展芯片及其他i2c总线器件,省去了每个器件的片选线,因而使整个系统的连接极其简洁。总线上的设备分为主设备(aRm处理器)和从设备两种,总线支持多主设备,是一个多主总线,即它可以由多个连接的器件控制。典型的系统构建如图15-1所示。每一次i2c总线传输都由主设备产生一个起始信号,采用同步串行传送数据,数据接收方每接收一个字节数据后都回应一个应答信号。一次i2c总线传输传送的字节数不受第29页共39页限制,主设备通过产生停止信号来终结总线传输。数据从最高位开始传送,数据在时钟信号高电平时有效。通信双方都可以通过拉低时钟线来暂停该次通信。2.2i2c工作原理sda和scl都是双向线路,各通过一个电流源或上拉电阻连接到正的电源电压。当总线空闲时这两条线路都是高电平,连接到总线的器件输出必须是漏极开路或集电极开路才能执行线与的功能。i2c总线上数据的传输速率在标准模式下可达100kb/s,在快速模式下可达400kb/s,在高速模式下可达3.4mb/s。连接到总线的接口数量由总线电容是400pF的限制决定。图15-2(a)显示了i2c总线上的数据稳定规则,scl为高电平时sda上的数据保持稳定,scl为低电平时允许sda变化。如果scl处于高电平时,sda上产生下降沿,则认为是起始位,sda上的上升沿认为是停止位。通信速率分为常第30页共39页规模式(时钟频率100khz)和快速模式(时钟频率400khz)。同一总线上可以连接多个带有i2c接口的器件,每个器件都有一个唯一的地址,既可以是单接收的器件,也可以是能够接收发送的器件。图15-2(b)显示了i2c总线的起始位和停止位。每次数据传输都是以一个起始位开始,而以停止位结束。传输的字节数由aRm控制和决定,没有限制。最高有效位将首先被传输,接收方收到第8位数据后会发出应答位。数据传输通常分为两种:主设备发送从设备接收和从设备发送主设备接收。这两种模式都需要主机发送起始位和停止位,应答位由接收方产生。从设备地址一般是1或2个字节,用于区分连接在同一i2c上的不同器件。3i2c硬件电路设计3.1i2c串口存储器在嵌入式系统中会用到各种带i2c接口的芯片,这里以第31页共39页i2c串口存储器csl24wc256为例,说明i2c电路在aRm嵌入式系统中的应用。csl24wc256是美国callalxst公司的一款芯片,是一个256k位支持i2c总线数据传送协议的串行cmos串口存储器,可用电擦除,可编程自定时写周期(包括自动擦除时间不超过10ms,典型时间为5ms),具有64字节数据的页面写能力。串行存储器一般具有两种写入方式,一种是字节写入方式,另一种是页写入方式。允许在一个写周期内同时对1个字节到一页的若干字节的编程写入,1页的大小取决于芯片内页寄存器的大小。先进的cmos技术实质上降低了器件的功耗,可在电源电压低到1.8V的条件下工作,等待电流和额定电流分别为0和3ma,特有的噪声保护施密特触发输入技术,可保证芯片在极强的干扰下数据不丢失。芯片管脚排列图如图15-3所示,其管脚功能描述如表第32页共39页15-l所示。其中:·scl:串行时钟。输入管脚,用于产生器件所有数据发送或接收的时钟。·sda:串行数据/地址。双向传输端,用于传送地址和所有数据的发送或接收。它是一个漏极开路端,因此要求接一个上拉电到Vcc端(典型值为100khz时为10k,400khz时为lk)。对于一般的数据传输,仅在scl为低期间sda才允许变化;在scl为高期间变化,留给指示start(开始)和stop(停止)条件。·ao/a1/a2:器件地址输入端。这些输入端用于多个器件级联时设置器件地址,当这些脚悬空时默认值为空。·wp:写保护。如果wp管脚连接到Vcc,则所有的内容都被写保护(只能读):当wp管脚连接到Vss或悬空时,则允许器件进行正常的读/写操作。第33页共39页3.2电路原理图如图15-4所示为串行存储器电路原理图,具有串行存储的功能,速率为100khz,所R2/R3为iok。如果将编码开关任一位打开,则对应的地址线为“l”;如果将编码开关任一位闭合则对应的地址线就为“0”。4软件设计4.1i2c读写过程设计aRm在系统中一直作为主设备,所以在i2c总线中只有主发送和主接收两种操作方式。在系统初始化时,由指令控制cpu送出相关的数据,经接口送到i2c寄存器内。通过初始化这些寄存器,可以实现i2c总线的主模式控制,以及实现i2c总线上的从设备读写。当主设备和其中的一个从设备交换数据时,主设备首先发出一个启动start信号,这个信号被所有的从设备接收。即从设备准备接收cpu的信号,然后主设备再发出它要第34页共39页通信的从设备地址。接下来,所有的从设备将收到的这个地址和它们自己的地址进行比较。如果收到的地址和它们自己的地址不同,则什么都不做,只是等待主设备发出停止stop信号;如果收到的地址和它自己的地址相同,它就发出一个信号给主设备,这个信号称为应答acknowledge信号。当主设备收到应答信号后,它就开始向从设备发送数据或者从从设备接收数据。当所有操作都进行完毕时,主设备发出一个stop信号,通信完毕,释放i2c总线;然后所有的从设备都等待下一次start信号的到来。而在i2c串口存储器中,主要涉及的是读和写过程。读写流程图如图15-5所示。1.写过程(1)上电后等待一个延时(1ms)。(2)器件寻址,给一个起始信号(scl为高电平时sda给第35页共39页一个下降沿)。发送从器件地址,高5位为10110,然后根据a1/a0(如果和器件的地址相同则那个器件会应答)进行读/写控制(o为读)。(3)应答,器件在scl的第9个周期时sda给出一个低电平,作为应答信号。(4)开始写有两种模式:字节写模式和页写模式。·字节模式:给出a15~a8应答,给出a7~a0应答;然后给出data和停止信号(scl为高电平时,sda给出一个上升沿),接着要等待一个擦写时间。·页写模式:给出地址以后连续给出64个数据。如果多于64个数据,则地址计数器自动翻转。(如果少于64昵,估计是没有问题的,但是需要实验验证。)(5)判断擦写操作是否完毕的一个方法(应答查询),如果器件还处于擦写状态,则不会应答器件寻址;如果有应答,则说明擦写完毕。第36页共39页2.读过程(1)上电以后等待一个延时(lms)。(2)器件寻址。(3)应答。(4)开始读有三种模式:立即当前地址读、选择/随机读、连续读。·立即当前地址读:如果上次读/写的操作地址为n,则现在是n+1。不需要ack,但是需要stop信号。·选择/随机读:先伪写(用于给出一个地址),然后再次启动,读取数据。·连续读:读取一个以后给一个应答,这样器件会再给出下一个地址的数据内容。(5)开始数据传输start后、停止数据传输stop前,scl高电平期间,sda上为有效数据。4.2程序代码说明第37页共39页以下是i2c函数的程序代码,其中databuff为读写数据输入/输出缓冲区的首址,bytequantity为要读写数据的字节数量,address为i2c串口存储器片内地址,controlbyte为i2c串口存储器的控制字节,具体形式为(1)(0)(1)(o)(a2)(a1)(a0)(e/w)。其中R/w=1表示读操作,R/w=0为写操作。eRRoRcount为允许最大次数,若出现eRRoRcount次操作失效,则函数中止操作,并返回1。sda和scl由用户自定义。此程序设计时考虑了通用性,与aRmcpu无关,与aRm速度也无关。时序的等待时间严格按照芯片文档上描述的,定义在i2c.h文件中。使用时只需要定义scl和sdl的引脚,以及i2c使用的电压(修改Ⅱc_v宏定义)。5实例总结第38页共39页i2c总线硬件电路结构简单,符合系统设计向小型化低功耗方向发展的趋势。在其软件方面,由于使用平台模式的Ⅱc软件包,保证了在较短的时间内开发出高稳定性的驱动程序。同一总线上可以连接多个带有i2c接口的器件,每个器件都有一个惟一的地址,既可以是单接收的器件,也可以是能够接收发送的器件。发送器或接收器可以在主模式或从模式下操作,这取决于芯片是否必须启动数据的传输还是仅仅被寻址。本章以i2c串口存储器为例,给出了在aRm平台中i2c总线的软硬件实现方法,软件设计上i2c总线读和写模块的函数流程图,以及具体驱动程序的设计。实验证明,i2c总线能很好地扩展aRm系统的i/o交互能力。在设计i2c串口存储器时需注意以下几点问题。·scl不能太快,这只要限制高低电平的时间就可以第39页共39页了。·start信号需要建立和保持一段时间。·stop信号需要一定的建立时间,之后就是总线空闲时间。',)
提供iic协议特点,iic通信协议的特点会员下载,编号:1700665974,格式为 docx,文件大小为39页,请使用软件:wps,office word 进行编辑,PPT模板中文字,图片,动画效果均可修改,PPT模板下载后图片无水印,更多精品PPT素材下载尽在某某PPT网。所有作品均是用户自行上传分享并拥有版权或使用权,仅供网友学习交流,未经上传用户书面授权,请勿作他用。若您的权利被侵害,请联系963098962@qq.com进行删除处理。