项目四I2C总线技术组员:彭国峰周君胜高腾飞杨奇峰•项目功能•项目知识点与技能点•项目知识准备•软件设计•硬件电路•项目程序【项目功能】1、利用I2C总线技术,完成ATmega16单片机对I2C器件PCF8563T时钟芯片的读写操作。2、通过完成项目,掌握I2C总线技术,并能合理运用到实际项目中。【项目知识点与技能点】1、I2C总线的协议。2、时钟芯片PCF8563的相关知识。3、如何用I/O口模拟I2C通讯时序。【项目知识准备】•1、I2C总线概述•2、I2C总线的协议•3、时钟芯片PCF8563的相关知识1、I2C总线概述I2C总线,是INTER-IC串行总线的缩写。它是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。这种串行总线上的各单片机或集成电路模块通过一条串行数据线(SDA)和一条串行时钟线(SCL)进行信息传送。同其他形式的总线相比,I2C总线具有可靠性好、传输速度快、结构简单等优点,因此也被广泛地应用在单片机应用系统中。2、I2C总线的协议按照I2C总线的通信规则,每个总线上的电路模块都有的地址,总线通过这个地址识别连在总线上的器件。每个设备既可以是主控器(能控制总线,又能完成一次传输过程的初始化,并产生时钟信号及传输终止信号的器件)或被控器(被主控器寻址的器件),也可以是发送器(在总线上发送信息的器件)或接收器(从总线上接收信息的器件)。(1)I2C总线的基本结构通常,采用I2C总线标准的单片机或IC器件,其内部不仅有I2C接口电路,而且还有将内部各单元电路按功能划分的独立模块,它们通过软件寻址实现片选功能,因此减少了器件片选线的连接。总线控制设备不仅能通过指令将某个功能单元电路挂接到总线或摘离总线,还可对该单元的工作状况进行监测,从而实现对硬件系统的简单灵活的扩展与控制。I2C总线接口电路结构如图(2)起始和终止信号若SCL为高电平,则SDA上的信息必须保持稳定不变若SCL为低电平,则SDA上的信息允许变化。若SCL没有时钟信号,SDA上的数据也将停止传输。当SCL保持高电平期间,SDA由高电平向低电平变化这中状态定义为起始信号SDA由低电平向高电平变化则定义为终止信号。SDA上的每一位数据都和SCL上的时钟脉冲相对应。且SCL和SDA的线“与”逻辑关系,下图为I2C总线起始信号和终止信号时序图。在I2C总线上,SDA上的数据传输必须以字节为单位(最高位最先传送),每个传送字节后还必须跟随一应答位。这个应答信号由发送器发出。整个数据传送过程中,传输的字节数目是没有限制的。但是若数据传输一段时间后,接收器无法继续接收时,主控器也可以终止数据的传送。(3)I2C总线的仲裁I2C总线上可以挂接多个器件,这样当两个或多个主控器同时想占用总线时,就会产生总线竞争。I2C总线具有多主控能力,可以对发生在SDA线上的总线竞争产生仲裁过程,仲裁是在SCL为高电平时,根据SDA状态进行的。在总线仲裁期间,如有其他以主控器已经在SDA上传送低电平,则发送高电平的主控器就会发现此时SDA上的最平与它发送的信号不一致,这样,该主控器就自动裁决失去总线控制权。I2C总线协议的详细仲裁过程为:当主控器在发送某个字节时,若被仲裁失去主控权时,它的时钟信号继续输出,并直到整个字节发送结束为止。若主控器在寻址阶段被仲裁失去主控权,它就立刻进入被旁若被控接收状态,并判断取得主控权的主控器是否正在对它进行寻址。在仲裁过程中,一旦有个主控器低电平时钟信号,则SCL也变为低电平状态,它将影响所有有关的主控器,并使它们的计时器复位。如果有一个主控器首先由低电平向高电平转换,这时由于还有其他主控器处于低电平状态,因此它只能处于高电平状态等待状态,直至所有主控器都结束低电平状态,SCL才转为高电平。仲裁过程中的具体时序同步如图所示。(4)I2C总线的数据传输I2C总线上的数据传输主要是以18位的字节进行的,其传输过程如图9.3.4所示。图中1时刻时字节传送完成,接收器内产生中断信号;图中2时刻则为当中断服务处理过程中,接收器保持低电平信号。在I2C总线上,每个数据的逻辑“0”和逻辑“1”的信号电平取决于相应的正端电压。当I2C总线进行数据传送时,时钟信号的高电平使数据线上的数据保持稳定;时钟信号在低电平时,数据线上的高电平或低电平状态才允许变化。在时钟线保持高电平期间,由于数据线由高电平向低电平然变化是一种稳定的状态,所以就将其状态规定为起始条件;而时钟线保持高电平期间,数据线是由低电平向高电平变化,则规定为停止条件。因此,只有I2C总线中的主控器件产生的起始条件和停止条件才能使总线进入“忙”或“闲”状态。在I2C总线上,比特位传送字节的后面都必须有一位应答位,并且数据是以最高有效位首先发出。由于进行数据传输的接收器收到完整的一个数据字节后,有可能还要进行相应的数据处理,因此,接收器也就无法立刻接收下一个字节的数据。为了解决这一问题,I2C协议规定:接收器可以通过总线上的时钟保持为低电平,使发送器进入等待状态,直到接收器准备好接收新的数据。并释放时钟线使数据传输继续进行。字节传送与应答当一个字节的数据被总线上的另一个已被寻址的接收器接收后,总线上都要求产生一个确认信号,并在这一位时钟信号的高电平期间,使数据保持稳定的低电平状态,从而完成应答确认信号的输出。确认信号通常是指起始信号和停止信号,如果这个信息从一个起始字节,或是总线寻址,则总线上不允许有应答信号产生。如果接收器对被寻址做出了确认应答,但在数据传输的一段时间以后,又无法继续接收更多的数据,则主控器也将停止数据的继续传送。I2C总线的数据传输格式如图所示。其中1~7位为地址位,第8位为读/写位,第九位为应答位。I2C总线中,数据传输协议为:·起始信号的后面总有一个被控器的地址,被控器的地址一般规定为7位数据。·数据的第8位是数据的传输方向位,即读/写位。在读/写位中,如果是“0”,则表示主控器向被控机发送数据,也就是执行“写”的功能;如果是“1”,则表示主控器接收被控器发来的数据,也就是执行“读”的功能。·数据的传输总是随主控器产生的停止信号而结束。3、时钟芯片PCF8563的相关知识(1)时钟芯片PCF8563概述PCF8563是PHILIPS公司推出的一款工业级内含I2C总线接口功能的具有极低功耗的多功能时钟/日历芯片。PCF8563的多种报警功能、定时器功能、时钟输出功能以及中断输出功能能完成各种复杂的定时服务,甚至可为单片机提供看门狗功能。内部时钟电路内部振荡电路、内部低电压检测电路1.0V以及两线制I2C总线通讯方式,不但使外围电路及其简洁,而且也增加了芯片的可靠性。同时每次读写数据后,内嵌的字地址寄存器会自动产生增量。当然作为时钟芯片,PCF8563亦解决了2000年问题。因而,PCF8563是一款性价比极高的时钟芯片,它已被广泛用于电表、水表、气表、电话、传真机、便携式仪器以及电池供电的仪器仪表等产品领域。(2)时钟芯片PCF8563的外部结构及引脚功能下图为时钟芯片PCF8563的外部结构图振荡器输入振荡器输出中断输出地正电源时钟输出串行时钟输出串行数据I/O(3)时钟芯片PCF8563的基本原理及内部寄存器述1)时钟芯片PCF8563的基本原理PCF8563有16个8位寄存器:一个可自动增量的地址寄存器,一个内置32.768KHz的振荡器(带有一个内部集成的电容),一个分频器(用于给实时时钟RTC提供源时钟),一个可编程时钟输出,一个定时器一个报警器,一个掉电检测器和一个400KHzI2C总线接口。所有16个寄存器设计成可寻址的8位并行寄存器,但不是所有位都有用。内存地址00H,01H用于控制寄存器和状态寄存器,内存地址02H~08H用于时钟计数器(秒~年计数器),地址09H~0CH用于报警寄存器(定义报警条件),地址0DH控制CLKOUT用于管脚的输出频率,地址0EH和0FH分别用于定时器控制寄存器和定时器寄存器。秒、分钟、小时、日、月、年、分钟报警、小时报警、日报警寄存器,编码格式为BCD,星期和星期报警寄存器不以BCD格式编码。PCF8563共有16个寄存器,00H~01H为控制方式寄存器、09H~0CH为报警功能寄存器、0DH为时钟输出寄存器、0EH和0FH为定时器功能寄存器、02H~08H为秒~年时间寄存器。各位寄存器的位描述如下表所示。2)时钟芯片PCF8563内部寄存器概述【软件设计】程序流程图【硬件电路】ATmega16单片机本身带有I2C总线接口,在本项目中,为了将I2C总线的整数据传输工作过程给大家清晰的展示出来,我们采用单片机I/O口模拟I2C总线接口。ATmega16单片机与时钟芯片PCF8563电路连接图如图所示。原理图说明:图中Y为32.768KHz的晶振,为时钟芯片PCF8563提供时钟源。C1为起振电容,一般取值为1~20PF。时钟芯片PCF8563的数据引脚SDA和时钟引脚SCL分别与ATmega16单片机的PC0、PC1相连。PC6和PC7为系统与液晶显示模块的连接接口,PA4为LCD背景光控制端口。项目程序程序实现功能:(1)使LCD液晶屏显示时间,字符,文字。(2)并且能使液晶屏切换显示不同的内容。主程序:答辩\项目主程序.doc8563程序:答辩\8563主要程序.docI2C程序:答辩\I2C主要程序.docLCD程序:答辩\LCD主要程序.doc液晶屏字符表:答辩\LCD符号表.doc结束