I2C串行接口技术课件

上传人:wz****p 文档编号:240919194 上传时间:2024-05-17 格式:PPT 页数:52 大小:539.76KB
返回 下载 相关 举报
I2C串行接口技术课件_第1页
第1页 / 共52页
I2C串行接口技术课件_第2页
第2页 / 共52页
I2C串行接口技术课件_第3页
第3页 / 共52页
点击查看更多>>
资源描述
串行接口技术I2C串行总线串行总线I2C串行总线是Philips公司提出的一种板内芯片间串行总线。它用两根连线即可方便地实现外围器件扩展。I2C总线上数据传送的基本单位为字节,采用高位在前的格式。主从器件之间一次传输的数据称为一帧,由启动信号、若干个数据字节和应答位以及停止信号组成。串行接口技术I2C串行总线1第6章 串行接口技术1.I2C串行总线原理与应用串行总线原理与应用 2.串行单总线原理与应用串行单总线原理与应用 3.串行模串行模/数转换器数转换器 4.I2C总线键盘总线键盘/显示器接口芯片显示器接口芯片ZLG7290 5.I2C总线串行总线串行8位数位数/模转换器模转换器MAX517 6.基于基于I2C总线的总线的ADS1100型型16位模位模/数转换数转换器器第6章 串行接口技术I2C串行总线原理与应用 2I2C串行总线原理与应用串行总线原理与应用 I2C串行总线的组成与工作原理串行总线的组成与工作原理 I2C串行总线的接口设计串行总线的接口设计 I2C串行总线器件串行总线器件 应用举例应用举例 实践与思考实践与思考I2C串行总线原理与应用 I2C串行总线的组成与工作原理 3I2C串行总线的组成与工作原理串行总线的组成与工作原理I2C串行总线的基本特性串行总线的基本特性I2C总线的数据传送总线的数据传送 I2C串行总线的组成与工作原理4I2C串行总线的基本特性串行总线的基本特性I2C总线是Philips公司推出的一种串行总线,是具备多主机系统所需的包括总线仲裁和高低速器件同步功能的高性能串行总线。它具有如下基本特性。I2C串行总线只有两根双向信号线串行总线只有两根双向信号线I2C总线是一个多主机总线总线是一个多主机总线I2C总线的总线的SDA和和SCL是双向的,均通过是双向的,均通过上拉电阻接正电源上拉电阻接正电源I2C总线的总线仲裁总线的总线仲裁I2C串行总线的基本特性I2C总线是Philips公司推出的5I2C串行总线只有两根双向信号线串行总线只有两根双向信号线 一根是数据线SDA,另一根是时钟线SCL。所有连接到I2C总线上的器件的数据线都接到SDA线上,各器件的时钟线均接到SCL线上。I2C总线的基本结构如图所示。I2C串行总线只有两根双向信号线 一根是数据线SDA,另一根6I2C总线是一个多主机总线总线是一个多主机总线总线上可以有一个或多个主机,总线运行由主机控制。这里所说的主机是指启动数据的传送(发起始信号)、发出时钟信号、传送结束时发出终止信号的器件。通常,主机由各种单片机或其他微处理器充当。被主机寻访的器件叫从机,它可以是各种单片机或其他微处理器,也可以是其他器件,如存储器、LED或LCD驱动器、A/D或D/A转换器、时钟日历器件等。I2C总线是一个多主机总线总线上可以有一个或多个主机,总线运7I2C总线的总线的SDA和和SCL是双向的是双向的均通过上拉电阻接正电源均通过上拉电阻接正电源 如图所示,当总线空闲时,两根线均为高电平。连到总线上的器件(相当于结点)的输出级必须是漏极或集电极开路的,任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。SCL线上的时钟信号对SDA线上各器件间数据的传输起同步作用。SDA线上数据的起始、终止及数据的有效性均要根据SCL线上的时钟信号来判断。在标准I2C普通模式下,数据的传输率为100Kbps,高速模式下可达400Kbps。连接的器件越多,电容值越大,总线上允许的器件数以总线上的电容量不超过400pF为限。I2C总线的SDA和SCL是双向的均通过上拉电阻接正电源 8I2C总线的总线仲裁总线的总线仲裁在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免混乱,I2C总线要通过总线仲裁,以决定由哪一台主机控制总线。首先,不同主器件(欲发送数据的器件)分别发出的时钟信号在SCL线上“线与”产生系统时钟:其低电平时间为周期最长的主器件的低电平时间,高电平时间则是周期最短主器件的高电平时间。仲裁的方法是:各主器件在各自时钟的高电平期间送出各自要发送的数据到SDA线上,并在SCL的高电平期间检测SDA线上的数据是否与自己发出的数据相同。I2C总线的总线仲裁在多主机系统中,可能同时有几个主机企图启9I2C总线的数据传送总线的数据传送 数据位的有效性规定数据位的有效性规定 起始和终止信号起始和终止信号数据传送格式数据传送格式 I2C总线的时序特性总线的时序特性 I2C总线的寻址总线的寻址 I2C总线的数据传送 数据位的有效性规定 10数据位的有效性规定数据位的有效性规定I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定。只有在时钟线上的信号为低电平期间,数据线上的高电平或低电工状态才允许变化,如图所示。数据位的有效性规定I2C总线进行数据传送时,时钟信号为高电平11起始和终止信号起始和终止信号 根据I2C总线协议的规定,SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。起始和终止信号如图所示。起始和终止信号 根据I2C总线协议的规定,SCL线为高电平期12数据传送格式数据传送格式(1)字节传送与应答)字节传送与应答 利用I2C总线进行数据传送时,传送的字节数是没有限制的,但是每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位),如图所示:应答时序图 数据传送格式(1)字节传送与应答 利用I2C总线进行数据传13数据传送格式数据传送格式(2)数据帧格式)数据帧格式 在总线的一次数据传送过程中,可以有以下几种组合方式:主机向从机发送数据,数据传送方向在整个传送过程中不变。P数据A数据A0从机地址S 主机在第一个字节后,立即由从机读数据。P数据A数据A1从机地址SA 在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反向。P数据A1从机地址S数据A0从机地址S注:有阴影部分表示数据注:有阴影部分表示数据由主机向从机传送,无阴由主机向从机传送,无阴影部分则表示数据由从机影部分则表示数据由从机向主机传送。向主机传送。A表示应答,表示非应答表示应答,表示非应答(高电平)。(高电平)。S表示起始表示起始信号,信号,P表示终止信号。表示终止信号。数据传送格式(2)数据帧格式 在总线的一次数据传送过程中,可14I2C总线的时序特性总线的时序特性为了保证数据传送的可靠性,标准I2C总线的数据传送有严格的时序要求。I2C总线的起始信号、终止信号、发送“0”及发送“1”的模拟时序如图所示。典型信号时序图 I2C总线的时序特性为了保证数据传送的可靠性,标准I2C总线15I2C总线的时序特性总线的时序特性下表为I2C总线的时序特性。由表可见,除了SDA、SCL线的信号下降时间为最大值外,其他参数只有最小值。这表明在I2C总线的数据传送中,可以利用时钟同步机制展宽低电平周期,迫使主器件处于等待状态,使传送速率降低。参 数 说 明符号最小值最大值单位新的起始信号前总线必须的空闲时间TBUF4.7s起始信号保持时间THD:STA4.0s时钟的低电平时间TLOW4.7s时钟的高电平时间THIGH4.0s起始信号建立时间(仅对重复起始信号)TSU:STA4.0s数据建立时间TSU:DAT250nsSDA、SCL线的信号下降时间TF300ns终止信号建立时间TSU:STO4.7sI2C总线的时序特性下表为I2C总线的时序特性。由表可见,除16I2C总线的寻址总线的寻址 I2C总线协议有明确的规定:采用7位的寻址字节(寻址字节是起始信号后的第一个字节)。(1)寻址字节的位定义)寻址字节的位定义D7D1位组成从机的地址。D0位是数据传送方向位,为“0”时表示主机向从机写数据,为“1”时表示主机由从机读数据。主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,根据R/W位将自己确定为发送器或接收器。从机的地址由固定部分和可编程部分组成。在一个系统中可能希望接入多个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。如一个从机的7位寻址位有4位是固定位,3位是可编程位,这时仅能寻址8个同样的器件,即可以有8个同样的器件接入到该I2C总线系统中。I2C总线的寻址 I2C总线协议有明确的规定:采用7位的寻址17I2C总线的寻址总线的寻址(2)寻址字节中的特殊地址)寻址字节中的特殊地址 总线规定了一些特殊地址。其中两组固定地址编号0000和1111已被保留作为特殊用途,如表所示。R/十位从机地址0 1 1 1 11 1 1 1 11 0 0 0 0保留0 1 10 0 0 0为不同总线的保留地址0 1 00 0 0 0CBUS地址0 0 10 0 0 0起始字节10 0 00 0 0 0通用呼叫地址00 0 00 0 0 0意 义地 址 位I2C总线的寻址(2)寻址字节中的特殊地址 总线规定了一些特18I2C总线的寻址总线的寻址起始信号后第一字节的8位为“0000 0000”时,称为通用呼叫地址,即用于寻访接到I2C总线上所有器件的地址。通用呼叫地址的用意在第二字节中加以说明。格式为:0 0 0 0 0 0 0 0 A B A第二字节为06H时,所有能响应通用呼叫地址的从机器件复位,并由硬件装入从机地址的可编程部分。能响应命令的从机器件复位时不拉低SDA和SCL线,以免堵塞总线。第二字节为04H时,所有能响应通用呼叫地址并通过硬件来定义其可编程地址的从机器件将锁定地址中的可编程位,但不进行复位。如果第二字节的方向位B为“1”,则这两个字节命令称为硬件通用呼叫命令。也就是说这是由“硬件主器件”发出的。I2C总线的寻址起始信号后第一字节的8位为“0000 00019I2C总线的寻址总线的寻址所谓硬件主器件,就是不能发送所要寻访从器件地址的发送器,如键盘扫描器等。制造这种器件时无法知道信息应向哪儿传送,所以,它发出硬件呼叫命令,在这第二字节的高7位说明自己的地址。接在总线上的智能器件,如单片机或其他微处理器能识别这个地址,并与之传送数据。硬件主器件作为从机使用时,也用这个地址作为从机地址。格式为:S00000000A主机地址1A 数据 A数据A P在系统中另一种选择可能是系统复位时硬件主机器件工作在从机接收器方式,这时由系统中的主机先告诉硬件主机器件数据应送往的从机器件地址,当硬件主机器件要发送数据时,就可以直接向指定从机器件发送数据了。I2C总线的寻址所谓硬件主器件,就是不能发送所要寻访从器件地20I2C总线的寻址总线的寻址(3)起始字节)起始字节 起始字节是提供给没有I2C总线接口的单片机查询I2C总线时使用的特殊字节。于是单片机的速度与硬件接口器件的速度存在较大的差别,因此I2C总线上的数据传送要由一个较长的起始过程加以引导,如图所示。起始引导字节 I2C总线的寻址(3)起始字节 起始字节是提供给没有I2C总21I2C串行总线的接口设计串行总线的接口设计 I2C串行总线的接口设计分两种情况:一种是单片机自身带有I2C总线硬件接口,另一种是早期单片机不含I2C总线硬件接口。Philips公司推出的P89C66X系列单片机内含I2C总线逻辑,提供了符合I2C总线规范的串行接口,具有性能稳定、速度快、使用方便等优点;而Philips公司推出的P8XC552、P8XC654以及P8XC652系列单片机不具有I2C总线逻辑,在外接I2C总线接口器件,需要模拟实现。P89C66X系列单片机系列单片机I2C总线接口总线接口 I2C总线模拟硬件接口软件设计总线模拟硬件接口软件设计 I2C串行总线的接口设计 I2C串行总线的接口设计分两种情况22P89C66X系列单片机系列单片机I2C总线接口总线接口 1.引脚设计引脚设计P89C66X系列单片机有44脚PLCC和LQFP两种封装,其中P1.6/SCL和P1.7/SDA分别为I2C总线的时钟线和数据线,且因为芯片内部采用漏级开路工艺,所以当用户将这两个引脚用做I2C总线接口时,需外接上拉电阻,如图所示。P89C66X系列单片机I2C总线接口引脚图 P89C66X系列单片机I2C总线接口 1.引脚设计P8923P89C66X系列单片机系列单片机I2C总线接口总线接口2.P89C66X系列单片机系列单片机I2C总线的控制寄存器总线的控制寄存器P89C66X系列单片机内部与I2C总线有关的寄存器共有4个,通过对这4个寄存器的编程实现I2C总线功能,如表所示:名 称寄存器符号说 明地址寄存器S1ADR该寄存器用于保存单片机本身的从地址数据寄存器S1DAT该寄存器用于保存发送或接收到的数据字节控制寄存器S1CON该寄存器用于I2C总线的设置状态寄存器S1STA该寄存器用于显示当前I2C总线的状态P89C66X系列单片机I2C总线接口2.P89C66X系24地址寄存器(地址寄存器(S1ADR)该寄存器用于保存单片机本身的从地址,CPU可以对该寄存器进行读写操作。其中高7位为地址本身,最低位为通用地址识别标志GC。当单片机作为主器件存在时,该寄存器不起作用;当单片机作为从器件存在的时候,接收到的地址字节的高7位将与S1ADR的值相比较,如果相同则接收后面的数据信息。此外,如果通用地址识别标志GC为0,单片机不识别通用调用地址(如广播地址);GC为1时,单片机识别通用调用地址。地址寄存器(S1ADR)该寄存器用于保存单片机本身的从地址25控制寄存器(控制寄存器(S1CON)该寄存器用于对I2C总线进行设置,各功能位含义如下:D7D6D5D4D3D2D1D0CR2ENS1STASTOSIAACR1CR0ENS1:I2C总线使能位。当ENS1为0时,SDA和SCL输出为高阻状态;当ENS1为1时,I2C总线使能。STA:I2C总线起始条件标志位。当STA为0时,单片机不产生起始条件,当STA为1时,单片机首先利用硬件检测I2C总线状态。STO:I2C总线停止条件标志位。当STO为0时,单片机不产生停止条件;当STO为1时,如果单片机处于主模式,则立刻向I2C总线发送停止条件,如果单片机处于从模式,则可以从错误条件中恢复出来。STO位可由硬件清零。控制寄存器(S1CON)该寄存器用于对I2C总线进行设置,26控制寄存器(控制寄存器(S1CON)SI:串行中断标志位。当SI标志位置位,并且EA和ES1都置位时,产生一个中断请求。单片机就可以对接收到的数据进行处理,处理完成后,SI必须由软件清零。AA:声明应答标志位。当AA为1时,如果器件接收到自身的从地址(或广播地址),或者接收到一个完整的数据字节之后,将会在SCL的响应时钟脉冲期间保持SDA为低电平,即发送应答信号。当AA为0时,器件接收到一个完整的数据字节之后,在SCL的响应时钟脉冲期间保持SDA为高电平,即发送非应答信号。CR0、CR1和CR2:串行时钟速率选择位。这3位决定了器件在主模式下的串行时钟速率,其值与单片机工作频率有关,如下表所示。控制寄存器(S1CON)SI:串行中断标志位。当SI标志位置27控制寄存器(控制寄存器(S1CON)CR2CR1CR0单片机时钟频率分 频 数6MHz12MHz16MHz000234762.5256001275471224010316383.319201137751001601006.2512.51796010150100133120110100200267601110.246.250.4962.50.6555.6定时器在模式2时的重装数值 I2C总线串行时钟速率选择总线串行时钟速率选择速率单位:kHz控制寄存器(S1CON)CR2CR1CR0单片机时钟频率分 28状态寄存器(状态寄存器(S1STA)状态寄存器S1STA用于显示当前I2C总线的状态,该寄存器是只读的。寄存器的低3位始终为0,高5位为总线状态编码。总线共有26种可能的状态。每种状态都有一种固定的状态编码。总线每进入一个状态都会产生串行中断请求,并将SI置位,SI置位一个机器周期后,当前S1STA中代码有效。在SI由软件复位的一个机器周期之后,此代码仍然存在。状态寄存器(S1STA)状态寄存器S1STA用于显示当前I29P89C66X系列单片机系列单片机I2C总线接口的软件设计总线接口的软件设计(1)主模式程序设计。主模式程序设计包括以下几项:申请占用总线;发送一个数据字节;向无子地址器件发送单字节数据;向无子地址读字节数据;向有子地址器件发送和接收多字节数据。(2)从模式程序设计。从模式程序设计包括:设置总线;发送字节数据;接收字节数据。3.P89C66X系列单片机系列单片机I2C总线接口的软件设计总线接口的软件设计 P89C66X系列单片机I2C总线接口的软件设计(1)主30I2C总线模拟硬件接口软件设计总线模拟硬件接口软件设计 使用硬件接口进行I2C总线设计,要使用具有I2C总线硬件接口的单片机。对通常的单片机,要支持I2C总线,可以选择外接I2C总线芯片,但这要增加系统的整体成本,另一种解决方案是使用软件模拟,使用程序控制实现I2C总线的时序。首先可定义P1口任意两个引脚作为单片机I2C总线的SCL和SDA,然后再编程实现I2C功能。下面介绍一个主方式下的虚拟I2C总线软件包。汇编软件包说明汇编软件包说明 软件包程序清单软件包程序清单I2C总线模拟硬件接口软件设计 使用硬件接口进行I2C总线设31汇编软件包说明汇编软件包说明虚拟I2C总线操作平台软件包是用在单主I2C总线上,硬件接口是SCL、SDA,使用单片机的I/O口来模拟SCL/SDA总线。根据I2C总线器件的特点,设计无子地址和有子地址子程序。(1)软件包文件名。软件包文件名是VI2C_ASM.ASM,是I2C总线应用程序的底层子程序,使用前要定义好SCL和SDA。在标准80C51模式下,时钟频率不高于12MHz,若高于12MHz,则在程序中要相应增加NOP指令数。使用本软件包时,只需在程序的末尾加上$INCLUDE(VI2C_ASM.ASM)即可。(2)软件包的接口界面。IRDBYTE 无子地址读单字节数据(现行地址读)IWRBYTE 无子地址写单字节数据(现行地址写)IRDNBYTE 有子地址读N字节数据IWRNBYTE 有子地址写N字节数据说明:现行地址读/写是专指无子地址的器件,不需给定子地址的读/写操作。汇编软件包说明虚拟I2C总线操作平台软件包是用在单主I2C总32汇编软件包说明汇编软件包说明(3)软件包占用的内部资源。R0、R1、R2、R3、ACC、CY。(4)使用前需定义的变量、常量。变量:SLA(器件从地址)、SUBA(器件子地址)、NUMBYTE(读/写的字节数)、ACK(位变量,从器件的应答标志,ACK为0表示从器件无应答)。常量:SDA与SCL总线接口位、MTD(发送数据缓冲区首址)、MRD(接收数据缓冲区首址)。汇编软件包说明(3)软件包占用的内部资源。R0、R1、R2、33软件包程序清单软件包程序清单(1)启动I2C总线子程序(2)结束总线子程序(3)发送应答信号子程序(4)发送非应答信号(5)检查应答位子程序(6)发送字节子程序(7)读取字节子程序(8)无子地址器件写字节数据(9)无子地址器件读字节数据(10)向器件指定子地址写N个数据(11)向器件指定子地址读取N个数据 软件包程序清单(1)启动I2C总线子程序 34启动启动I2C总线子程序总线子程序 START:SETB SDA NOP SETB SCL ;起始条件建立时间大于4.7s NOP NOP NOP NOP NOP CLR SDA NOP ;起始条件锁定时大于4s NOP NOP NOP NOP CLR SCL ;钳住总线,准备发送数据 NOP RET 启动I2C总线子程序 START:SETB SDA35结束总线子程序结束总线子程序 STOP:CLR SDA NOP SETB SCL ;发送结束条件的时钟信号 NOP ;结束总线时间大于4s NOP NOP NOP NOP SETB SDA ;结束总线 NOP ;保证一个终止信号和起始信号的空闲时间大于4.7s NOP NOP NOP RET结束总线子程序 STOP:CLR SDA36发送应答信号子程序发送应答信号子程序 MACK:CLR SDA ;将SDA置0 NOP NOP SETB SCL NOP ;保持数据时间,即SCL为高时间大于4.7s NOP NOP NOP NOP CLR SCL NOP NOP RET发送应答信号子程序 MACK:CLR SDA 37发送非应答信号发送非应答信号 MNACK:SETB SDA ;将SDA置1 NOP NOP SETB SCL NOP NOP ;保持数据时间,即SCL为高时间大于4.7s NOP NOP NOP CLR SCL NOP NOP RET发送非应答信号 MNACK:SETB SDA 38检查应答位子程序检查应答位子程序;返回值,ACK=1时表示有应答CACK:SETB SDA NOP NOP SETB SCL CLR ACK NOP NOP MOV C,SDA JC CEND SETB ACK ;判断应答位CEND:NOP CLR SCL NOP RET检查应答位子程序;返回值,ACK=1时表示有应答39发送字节子程序发送字节子程序;字节数据放入ACC ;每发送一字节要调用一次CACK子程序,取应答位 WRBYTE:MOV R0,#08HWLP:RLC A ;取数据位 JC WR1 SJMP WR0 ;判断数据位WLP1:DJNZ R0,WLP NOP RETWR1:SETB SDA ;发送1 NOP SETB SCL NOP NOP NOP NOP NOP NOP NOP NOP CLR SCL SJMP WLP1WR0:CLR SDA ;发送0 NOP SETB SCL NOP NOP NOP NOP NOP CLR SCL SJMP WLP1发送字节子程序;字节数据放入ACC 40读取字节子程序读取字节子程序;读出的值在ACC内;每取一字节要发送一个应答/非应答信号 RDBYTE:MOV R0,#08HRLP:SETB SDA NOP SETB SCL ;时钟线为高,接收数据位 NOP NOP MOV C,SDA ;读取数据位 MOV A,R2 CLR SCL ;将SCL拉低,时间大于4.7s RLC A ;进行数据位的处理 MOV R2,A NOP NOP NOP DJNZ R0,RLP ;未够8位,再来一次 RET 读取字节子程序;读出的值在ACC内41无子地址器件写字节数据无子地址器件写字节数据;入口参数:数据为ACC、器件从地址SLA ;占用:A、R0、CYIWRBYTE:PUSH ACCIWBLOOP:LCALL START ;起动总线 MOV A,SLA LCALL WRBYTE ;发送器件从地址 LCALL CACK JNB ACK,RETWRB ;无应答则跳转 POP ACC ;写数据 LCALL WRBYTE LCALL CACK LCALL STOP RETRETWRB:POP ACC LCALL STOP RET 无子地址器件写字节数据;入口参数:数据为ACC、器件从地42无子地址器件读字节数据无子地址器件读字节数据;入口参数:器件从地址SLA;出口参数:数据为ACC ;占用 A、R0、R2、CYIRDBYTE:LCALL START MOV A,SLA ;发送器件从地址 INC A LCALL WRBYTE LCALL CACK JNB ACK,RETRDB LCALL RDBYTE ;进行读字节操作 LCALL MNACK ;发送非应信号RETRDB:LCALL STOP ;结束总线 RET无子地址器件读字节数据;入口参数:器件从地址SLA43向器件指定子地址写向器件指定子地址写N个数据个数据;入口参数:器件从地址SLA、器件子地址SUBA、发送数据缓冲区MTD、发送字节数NUMBYTE;占用:A、R0、R1、R3、CY IWRNBYTE:MOV A,NUMBYTE MOV R3,A LCALL START ;起动总线 MOV A,SLA LCALL WRBYTE;发送器件从地址 LCALL CACK JNB ACK,RETWRN ;无应答则退出 MOV A,SUBA;指定子地址 LCALL WRBYTE LCALL CACK MOV R1,#MTDWRDA:MOV A,R1 LCALL WRBYTE ;开始写入数据 LCALL CACK JNB ACK,IWRNBYTE ;无应答重新开始 INC R1 DJNZ R3,WRDA ;判断写完没有RETWRN:LCALL STOP RET向器件指定子地址写N个数据;入口参数:器件从地址SLA44向器件指定子地址读取向器件指定子地址读取N个数据个数据;入口参数:器件从地址SLA、器件子地址SUBA、接收字节数NUMBYTE;出口参数:接收数据缓冲区MTD;占用:A、R0、R1、R2、R3、CY IRDNBYTE:MOV R3,NUMBYTE LCALL START MOV A,SLA LCALL WRBYTE ;发送器件从地址 LCALL CACK JNB ACK,RETRDN MOV A,SUBA ;指定子地址 LCALL WRBYTE LCALL CACK LCALL START ;重新起动总线 MOV A,SLA INC A ;准备进行读操作 LCALL WRBYTE LCALL CACK JNB ACK,IRDNBYTE MOV R1,#MRD向器件指定子地址读取N个数据;入口参数:器件从地址SL45向器件指定子地址读取向器件指定子地址读取N个数据个数据RDN1:LCALL RDBYTE ;读操作开始 MOV R1,A DJNZ R3,SACK LCALL MNACK ;最后一字节发非应答位 RETRDN:LCALL STOP;并结束总线 RETSACK:LCALL MACK ;发应答信号 INC R1 SJMP RDN1向器件指定子地址读取N个数据RDN1:LCAL46I2C串行总线器件串行总线器件 带有I2C总线接口的单片机外围接口芯片,主要产品如表所示。虽然各种器件的原理和功能有很大的差异,但它们与单片机的连接是相同的,各种器件与单片机的连接如图所示。公司名称产 品 型 号功 能PhilipsPCF8553时钟/日历,且带有2568 RAMPCF85702568 RAMPCF87548位I/O口MAXIMMAX127/128A/D转换MAX517/518/519D/A转换ATMELAT24C系列RAMNSNM24C系列RAM常用I2C总线器件 连接图 I2C串行总线器件 带有I2C总线接口的单片机外围接口芯片,47串行串行E2PROM典型产品典型产品 AT24C系列的引脚设置如图所示,其型号与容量的关系为:AT24CXX引脚图AT24C01:128字节(1288位);AT24C02:256字节(2568位);AT24C04:512字节(5128位);AT24C08:1K字节(1K8位);AT24C16:2K字节(2K8位)。串行E2PROM典型产品 AT24C系列的引脚设置如图所示,48写入过程写入过程 AT24C系列E2PROM芯片地址的固定部分为1010,A2、A1、A0引脚接高、低电平后得到确定的3位编码,形成的7位编码即为该器件的地址码。单片机进行写操作时,首先发送该器件的7位地址码和写方向位“0”(共8位,即一个字节),发送完后释放SDA线并在SCL线上产生第9个时钟信号。被选中的存储器器件在确认是自己的地址后,在SDA线上产生一个应答信号作为响应,单片机收到应答后就可以传送数据了。传送数据时,单片机首先发送被写入器件的存储区的首地址。收到存储器器件的应答后,单片机就逐个发送各数据字节,但每发送一个字节后都要等待应答。AT24C系列器件片内地址在接收到每一个数据字节地址后自动加1,在芯片的“一次装载字节数”(不同芯片字节数不同)限度内,只需输入首地址。装载字节数超过芯片的“一次装载字节数”时,数据地址“上卷”,即前面的数据将被覆盖。当要写入的数据传送完后,单片机应发出终止信号以结束写入操作。写入n个字节的数据格式如下所示:S器件地址+0A写入首地址AData 1A Data nA P写入过程 AT24C系列E2PROM芯片地址的固定部分为1049读出过程读出过程 单片机进行读操作时,首先发送该器件的7位地址码和写方向位“0”(“伪写”),发送完后释放SDA线并在SCL线上产生第9个时钟信号。被选中的存储器器件在确认是自己的地址后,在SDA线上产生一个应答信号作为响应。然后,单片机再发送要读出器件的存储区的首地址。收到存储器器件的应答后,单片机要重复一次起始信号并发出器件地址和读方向位(“1”),收到器件应答后就可以读出数据字节。每读出一个字节,单片机都要回复应答信号。当最后一个字节数据读完后,单片机应返回以“非应答”(高电平),并发出终止信号以结束读出操作。读出n个字节的数据格式如下所示:S器件地址+0A读出首地址A S器件地址+1AData1A Data nP读出过程 单片机进行读操作时,首先发送该器件的7位地址码和写50应用举例应用举例 1.程序功能程序功能从PCF8754 8位I/O口读取输入命令字,再根据命令字做如下操作。(1)若为FFH,则从PCF8754 8位I/O口输入地址,再根据此地址从ATC2402 中读取数据,再将读取存储器的地址和数据送SAA1064 4位LED显示,LED1、LED2显示地址,LED3、LED4显示读出的数据。(2)若为00H,则写ATC2402 E2PROM。(3)其他值,则进行I/O测试。2.第(第(1)部分程序程序清单)部分程序程序清单应用举例 1.程序功能从PCF8754 8位I/O口读取输51实践与思考实践与思考1.按应用实例构建硬件系统,编辑、下载与运行程序,调试电路。2.设计一个校园打铃系统。(1)功能要求。采用图形LCD显示日期、时间与星期,且有节日显示标志。有温度检测功能。可设置30组闹铃时间。从AT24Wxx系列芯片中,选择一款合适的芯片作为闹铃时间数据的存储单元。(2)实践要求。撰写工程设计报告。制作电路,并调试电路。实践与思考1.按应用实例构建硬件系统,编辑、下载与运行程序52
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!