您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > IIC串行协议及器件
第11章I2C串行协议及I2C器件应用11.1I2C串行总线通信协议11.2I2C串行总线典型器件主讲内容11.3I2C串行总线的应用11.1I2C串行总线通信协议I2C是Philips公司推出的在器件间实现同步串行数据传输的标准总线。以其连接简单、节省I/O口线、缩减空间等特点而得以广泛应用。如I2C的RAM、E2PROM、LCD、LED、A/D、D/A、时钟等器件。I2C串行总线的主要特征如下:1)两条传输线:一条串行数据线(SDA),一条串行时钟线(SCL)。2)总线模式多:主发送模式、主接收模式、从发送模式、从接收模式。3)器件唯一寻址:I2C总线上器件都有唯一地址,主机可对各从机寻址。4)检测和仲裁:冲突检测和仲裁机制保证数据传输完整性和稳定性。5)传输速率高:标准模式、快速模式和高速模式的传输率分别是100k、400k、3.4Mbps。6)漏极开路:总线要接上拉电阻。连接到总线上的IC数量仅受到最大电容400pF的限制。11.1.1I2C串行总线的基本特征11.1I2C串行总线通信协议★I2C接口传输具有线“与”功能。SDA和SCL两条线,均为双向I/O口,通过上拉电阻接正电源。当总线空闲时,两根线都是高电平,连接总线器件的输出极必须是集电极或漏极开路。★I2CSDA上的数据仅在SCL为低电平时才能改变。当SCL为高电平时,SDA的改变表示“开始”和“停止”状态。在时钟高电平期间,数据线上必须保持稳定的逻辑电平。只有在时钟线低电平时,才允许数据线的电平变化。★I2C总线是一个半双工、多主器件的总线。总线上发送数据的发送器(也叫主器件)与接收数据的接收器(也叫从器件)取决于当时数据传送的方向。当一个器件发送数据时,其它被寻址器件均作为接收器。11.1.2.I2C传输接口的特性11.1I2C串行总线通信协议★完整的时序过程由起始信号、器件地址信号、应答信号ACK、字节数据信号和停止信号等几部分组成。11.1.3I2C的时序SDASCL起始信号SP停止信号127893-89MSBACK从器件的响应ACK字节发送完成从器件中断1211.1I2C串行总线通信协议(1)起停信号定义I2C协议中,起始信号(S)和停止信号(P)都由主器件产生。起始信号定义:当SCL线为高电平时,SDA由高到低的负跳变;在总线上出现了起始信号,就认为总线处于工作状态。停止信号定义:当SCL线为高电平时,SDA由低到高的正跳变;总线上出现停止信号,被认为总线是处在不忙或空闲状态。SDASCL起始信号停止信号SP1起始和停止信号11.1I2C串行总线通信协议(2)起停信号的检测●连接到总线上的设备具有I2C硬件接口,检测起、停信号由硬件自动完成。●连接到总线上的设备没有I2C硬件接口,检测起、停信号必须由软件检测跳变。START_IC:CLRSCL;SCL由高变低,因为SCL低电平时才允许SDA更改NOP;加入空指令延时以确保信号可靠NOPSETBSDA;SDA先高NOPNOPSETBSCL;SCL高,起始条件建立时间大于4.7usACALLDS4.7uSCLRSDA;SDA低,起始条件锁定时大于4usACALLDS4uSCLRSCL;SCL低,钳住总线,准备发数据NOPRET图11-3启动信号时序在SCL、SDA全1前提下,SDA由高转为低进入开始,开始完成后,SCL、SDA全0SCLSDA起始信号START_IC00起始条件建立时间=4.7uS起始条件锁定时间=4uS11.1I2C串行总线通信协议(2)起停信号的检测STOP_IC:CLRSCL;SCL低NOPCLRSDANOPNOPSETBSCL;发送结束条件的时钟信号ACALLDS4.7uS;结束总线时间大于4us(取4.7us)SETBSDA;结束总线ACALLDS4.7uS;保证终止和起始空闲大于4.7usNOPRET图11-4停止信号时序当SCL为高电平时,SDA由低转为高。在SCL、SDA高或低的前提下均可进入停止过程;停止过程完成后,SCL、SDA全1SCLSDA停止信号STOP_IC11结束总线时间大于4us;(取4.7us)终止信号和起始信号的空闲时间大于4.7us11.1I2C串行总线通信协议2器件地址A0A1A20101如24C02的地址格式如下WR●器件地址具有唯一性,发送器发出起始信号后,必须紧跟发送一个字节(8位)器件地址信号;●地址信号用SLAVE表示。SLAVE是7位的器件地址位D7~D1,D0位是数据传送方向位,用表示读/写选择位;●SLAVE由一个4位固定部分和3位可编程部分组成。固定部分为器件的标识,表明了器件的类型,出厂时固定的。可编程部分为器件的引脚地址,视硬件接线而定。WRWR11.1I2C串行总线通信协议表7-3常用外围器件的节点地址WRWRWRWRWRWRWR1001A2A1A001110A1A00100A2A1A01010A2A1A01010A2A1A01011A2A1A01010A2A1A011.1I2C串行总线通信协议3应答与非应答信号(1)应答信号与非应答信号定义图11-5应答与非应答信号接收器收到地址字节或一个字节数据后都要产生一个应答信号ACK。在第9个时钟周期时将SDA线拉低,表示收到一个8位数据。发送器必须在这一时钟位上释放数据线SDA,使其处于高电平状态,以便接收器输出ACK应答信号,表示继续接收;若接收器输出高电平则为非应答信号(/ACK),表示结束接收。发送器接收数据时,它收到最后一个数据后,须向接收器发送一个非应答信号,使接收器释放SDA线,发送器产生终止信号,停止数据传送。起始信号S12789响应信号响应时钟脉冲非响应信号主器件发送的数据从器件发送的数据主器件发送的时钟信号11.1I2C串行总线通信协议3应答与非应答信号(2)应答信号时序ACK在接收方,每收到一字节后便将SDA电平拉低,应答完成后,SCL=0,SDA=1。具体时序如下:MACK_IC:CLRSCLNOPCLRSDA;在第9个SLC脉冲,将SDA置0NOPNOPSEIBSCL;保持数据时间,即SCL为高时间大于ACALLDS4.7usCLRSCLNOPNOPSETBSDA;在SDA高或低的任何前提下,应答完成后,SCL=0,SDA=1NOPRET图11-6应答信号ACK时序SCLSDA应答信号MACK_IC01保持数据时间,即SCL为高时间大于4.7us11.1I2C串行总线通信协议3应答与非应答信号(3)非应答信号时序/ACKMNACK_IC:CLRSCLNOPNOPSETBSDA;将SDA置1NOPNOPSETBSCLACALLDS4.7uSNOP;保持数据时间,即SCL为高时间大于4.7usCLRSCLNOPSETBSDANOPRET图11-7非应答信号时序SCLSDA非应答信号MNACK_IC01保持数据时间,即SCL为高时间大于4.7us11.1I2C串行总线通信协议4数据字节信号字节数位:数据字节数没有限制,但是每字节必须是8位长度;发送次序:先发送最高位,每字节数据后必跟一位应答脉冲ACK;等待状态:接收器不能接收下一个字节时,可以把SCL线拉成低电平,迫使发送器处于等待状态。图为多字节数据传输过程的完整时序。图11-8数据传输时序SDASCL起始信号SP停止信号1-7891-7891-789ADDRESSR/WACKDATAACKDATAACK连续写的两个字节之间最好是有10ms的延时。当然,也可以进行页写(PAGEWRITE),即一次性连续写8个字节,但采用页写方式时每个字节后要有一个应答信号。11.1I2C串行总线通信协议(1)向IC卡写一字节数据(WR_BYTE)WR_BYTE:MOVR2,#08;一字节8位数据CLRSCLNOPNOPWR_BYTE1:RLCA;A.8-CMOVSDA,C;改变SDA上的数据NOPSETBSCL;拉高SCL=4.7uSACALLDS4.7uSCLRSCLNOPNOPDJNZR2,WR_BYTE1;依次发8位图11-9字节写时序图SETBSDANOPNOPSETBSCLCLRF0NOPNOPMOVC,SDA;回读IC卡的确认信号JCWR_BYTE2SETBF0;有应答位WR_BYTE2:NOP;非应答CLRSCLNOPRETSDASCLD6D7D0D5高,非应答低,有应答等待确认信号11.1I2C串行总线通信协议(2)从IC卡读取一字节数据(RD_BYTE)RD_BYTE:MOVR2,#08SETBSDA;设备SDA为读状态CLRA;清空A寄存器NOPNOPRD_BTYE1:SETBSCL;时钟线为高,接收数据位NOPNOPMOVC,SDA;读取一位数据到进位位图11-10字节读时序图RLCA;左移数据到ACC.0CLRSCL;将SCL拉低时间大于4.7usACALLDS4.7uSDJNZR2,RD_BYTE1;依次读出8位数据到A中RET;读数据是无应答信号的需要注意的是:读数据的器件不是通过确认状态来应答的,而是随后产生一个停止状态。SDASCLD6D7D0D5发停止状态11.2两线串行总线典型器件1.AT24系列存贮器—I2C串行接口的EEPROM目前用于IC卡的通用存贮器芯片多为EEPROM,其常用的协议主要有两线串行连接协议(I2C)和三线串行链接协议,其中比较常用的是ATMEL公司生产的AT24系列芯片。AT24系列主要有AT24C01/02/04,非加密卡工艺:采用CMOS工艺制造,内置有高压泵,2V~5V的低电压工作。封装:8脚DIP封装;IC卡封装。IC卡封装对触点数目,位置,信号名称和功能都有明确规定,以保证兼容性.其中:C1(VCC)为电源;C2(RST)复位信号;C3(CLK)时钟脉冲;C4(RFU)待用;C5(GND)接地端;C6(VPP)编程电压,用于对EPROM编程;C7(I/O)数据输入输出端;C8(RFU)待用.有些系统中IC卡的C4和C8未用,可见卡上仅有六个触点.引脚:SCL串行时钟;SDA串行数据,开漏极驱动;(DIP封装)A2、A1、A0:器件/页面寻址,器件地址:1010A2、A1、A011.2两线串行总线典型器件1.AT24系列存贮器—I2C串行接口的EEPROM11.2两线串行总线典型器件1.AT24系列存贮器—I2C串行接口的EEPROM11.2两线串行总线典型器件2.SLE4442—2线连接协议(ISO7816)加密卡(磁生电供电)还有射频卡:13.56M非接触IC卡符合ISO14443TYPEA+ISO7816标准ISO7816协议与IIC协议不相同!SLE4442德国西门子SIMENS公司逻辑加密存储卡。具有2K位的存储容量和完全独立的可编程代码存储器PSC。单+5V电压供电,目前国内应用较多的一种IC卡芯片。2线连接协议(串行接口满足ISO7816同步传送协议每字节擦除/写入编程时间为2.5ms。至少10000次的擦写,数据保持10年。芯片引脚SLE4442的触点安排见下图11.2两线串行总线典型器件3.PCF8563—I2C串行接口的实时日历时钟PCF8563---I2C时钟芯片见教材;HYM1302---高性能、低功耗带RAM实时时钟芯片HYM1302(DS1302)可慢速充电实时时钟,含实时时钟/日历和31字节非易失静态RAM。实时时钟/日历可对秒,分,时,日,周,月,和年进行计数,对于小于31天的月,月末的日期自动进行调整,还具有闰年校正的功能。时钟可以采用24小时格式或带AM(上午)/PM(下午)的12小时格式。31字节的RAM可以用来临时保存一些重要数据。通信仅需3根线:(1)RST(复位),(2)I/O(数据线)和(3)SCLK(串行时钟)。宽工作电源电压范围:2.0V~5.5V;2.5V时耗电小于300nA;3线接口,TTL兼容封装形式:DIP8和SOP8;可完全兼容DALLAS的DS1302。11.3I2C在单片机系统中的应用新近推出的增强型高性能单片机大都片内自带标准I2C总线接口。MCS-51系列
本文标题:IIC串行协议及器件
链接地址:https://www.777doc.com/doc-4662567 .html