最新单片机的串行扩展技术精品课件

上传人:汽*** 文档编号:568565857 上传时间:2024-07-25 格式:PPT 页数:72 大小:1.45MB
返回 下载 相关 举报
最新单片机的串行扩展技术精品课件_第1页
第1页 / 共72页
最新单片机的串行扩展技术精品课件_第2页
第2页 / 共72页
最新单片机的串行扩展技术精品课件_第3页
第3页 / 共72页
最新单片机的串行扩展技术精品课件_第4页
第4页 / 共72页
最新单片机的串行扩展技术精品课件_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《最新单片机的串行扩展技术精品课件》由会员分享,可在线阅读,更多相关《最新单片机的串行扩展技术精品课件(72页珍藏版)》请在金锄头文库上搜索。

1、单片机的串行扩展技术单片机的串行扩展技术第第12章章目目录12.1单总线串行串行扩展展12.2SPI总线串行串行扩展展12.3Microwire总线简介介12.4I2C总线的串行的串行扩展介展介绍12.4.1I2C串行总线概述12.4.2I2C总线的数据传送12.5AT89S51单片机的片机的I2C串行串行扩展展设计12.5.1AT89S51的I2C总线扩展系统12.5.2I2C总线数据传送的模拟12.5.3I2C总线模拟通用子程序2(6)片内含有片内含有SRAM、E2PROM,单片机写入E2PROM的报警的上下限温度值和以及对DS18B20的设置,在芯片掉电的情况下不丢失。功能命令功能命令包

2、括两类:包括两类:1条条启动温度转换命令(44H),5条条读/写SRAM和E2PROM命令。图图12-2电路电路如果再扩展几位(根据需要)LED数码管显示器,即可构成简易的数字温度计系统。构成简易的数字温度计系统。可在图图12-2的基础上,自行扩展设计。9图12-2单总线构成的分布式温度构成的分布式温度监测系系统10在在1-Wire总线传输的是总线传输的是数字信号数字信号,数据传输均采用CRC码校验码校验。DALLAS公司为单总线的寻址及数据的传送制定了总线协议,具体内容读者可查阅相关资料。1-Wire协议不足在传输速率稍慢不足在传输速率稍慢,故1-Wire总线协议特别适用于特别适用于测控点多

3、、分布面广、种类复杂,而又需集中测控点多、分布面广、种类复杂,而又需集中监控、统一管理的应用场合监控、统一管理的应用场合。1112.2SPI总线串行扩展总线串行扩展SPI(SerialPeriperalInterface)是Motorola公司公司推出的同步串行外设接口同步串行外设接口,允许单片机与多个厂家生产的带有标准SPI接口的外围设备直接连接,以串行方式交换信息。图图12-3为SPI外围串行扩展结构图。SPI使用条线使用条线:串行时钟SCK,主器件输入/从器件输出数据线MISO,主器件输出/从器件输入数据线MOSI和从器件选择线从器件选择线。12图12-3SPI外外围串行串行扩展展结构构

4、图13SPI典型应用是典型应用是单主系统单主系统,一台主器件,从器件通常从器件通常是外围接口器件,如是外围接口器件,如存储器、存储器、I/O接口、接口、A/D、D/A、键盘、键盘、日历日历/时钟和显示驱动时钟和显示驱动等等。扩展多个外围器件时,SPI无法通过数据线译码选择,故外围器件都有外围器件都有片选端片选端。在扩展单个SPI器件时,外围器件的片选端片选端可以接地或通过I/O口控制;在扩展多个在扩展多个SPI器件时,单片机应分别通过器件时,单片机应分别通过I/O口口线来分时选通外围器件。线来分时选通外围器件。在SPI串行扩展系统中,如果某一从器件只作输入(如键盘)或只作输出(如显示器)时,可

5、省去一条数据输出(MISO)线或一条数据输入(MOSI)线,从而构成双线系统(接地接地)。14SPI系统中单片机对从器件的选通需控制其从器件的选通需控制其CS*端端,由于省去省去传输时的地址字节地址字节,数据传送软件十分简单。但在扩展器件较多时,需要控制较多的从器件端,连线较多。在SPI系统中,主器件单片机在启动一次传送启动一次传送时,便便产生产生8个个时钟时钟,传送给接口芯片作为同步时钟同步时钟,控制数据的输入和输出。传送格式格式是高位(MSB)在前,低位(LSB)在后,如图图12-4所示所示。输出数据的变化以及输入数据时的采样,都取决于SCK。但对不同外围芯片,可能是SCK的上升沿的上升沿

6、起作用,也可能是SCK的下降沿的下降沿起作用。SPI有较高的数据传输速度,最高可达1.05Mbit/s。15图图12-4SPI数据传送格式数据传送格式Motorola提供了一系列具有SPI接口的单片机和外围接口芯片,如如存储器MC2814、显示驱动器MC14499和MC14489等各种芯片。16SPI从器件要具有从器件要具有SPI接口接口。主器件是单片机。目前已有许多机型的单片机都带有SPI接口。但对AT89S51,由于不带SPI接口,SPI接口的实现,可采用软件与采用软件与I/O口结口结合来模拟合来模拟SPI的接口时序的接口时序。【例例12-2】设计AT89S51单片机与串行串行A/D转换器

7、转换器TLC2543的SPI接口。TLC2543是美国TI公司的12位串行SPI接口的A/D转换器,转换时间为10s。片内有1个14路模拟开关,用来选择11路模拟输入以及3路内部测试电压中的1路进行采样。17图图12-5为单片机与单片机与TLC2543的的SPI接口电路接口电路。TLC2543的I/OCLOCK、DATAINPUT和端由单片机的P1.0、P1.1和和P1.3来控制。转换结果的输出数据(DATAOUT)由单片机的P1.2串行接收,单片机将命令命令字字通过P1.1输入到TLC2543的输入寄存器中。下面的子程序下面的子程序为AT89S51选择某一通道选择某一通道(例如AIN0通道)

8、进行进行1次数据采集次数据采集,A/D转换结果共转换结果共12位位,分两次读两次读入入。先读入TLC2543中的8位转换结果到单片机中,同时写入下一次转换的命令,然后再读入4位的转换结果到单片机中。18注意:注意:TLC2543在每次I/O周期读取的数据都是上次读取的数据都是上次转换的结果转换的结果,当前转换结果要在下一个I/O周期中被串行移出。TLC2543A/D转换的第第1次读数次读数由于内部调整,读取的转换结果可能不准确可能不准确,应丢弃。图图12-5AT89S51单片机与单片机与TLC2543的的SPI接口接口19子程序如下子程序如下:ADCOMDBYTE6FH;定义命令存储单元ADO

9、UTH BYTE6EH;定义存储转换结果高4位单元ADOUTL BYTE6DH;定义存储转换结果低8位单元ADCONV:CLRP1.0;时钟脚为低电平CLRP1.3;片选有效,选中TLC2543MOVR2,#08H;送出下一次8位转换命令和;读8位转换结果做准备MOVA,ADCOMD;下一次转换命令在ADCOMD;单元中送ALOOP1:MOVC,P1.2;读入1位转换结果RRCA;1位转换结果带进位位右移20MOVP1.1,C;送出命令字节中的1位SETBP1.0;产生1个时钟NOPCLRP1.0NOPDJNZR2,LOOP1;是否完成8次转换结果读入和命;令输出?未完则跳MOVADOUTL,

10、A;读8位转换结果存入ADOUTL单元MOVA,#00H;A清0MOVR2,#04H;为读入4位转换结果做准备21SETBP1.0;产生1个时钟NOPCLRP1.0NOPDJNZR2,LOOP2;是否完成4次读入?未完则跳;LOOP2MOVADOUTH,A;高4位转换结果存入;ADOUTH单元中的高4位SWAP ADOUTH;ADOUTH单元中的高4位与;低4位互换LOOP2:MOVC,P1.2;读入高4位转换结果中的1位RRCA;带进位位循环右移SETBP1.0;时钟无效RET22执行上述程序中的执行上述程序中的8次循环次循环,执行“RRCA”指令8次,每次读入转换结果1位,然后送出ADCO

11、MD单元中的下一次转换的命令字节“G7G6G5G4G3G2G1G0”中的1位,进入TLC2543的输入寄存器。经8次右移后,8位A/D转换结果数据“”读入累加器Acc中,上述的具体数据交换过程如图图12-6所示。子程序中的4次循环,只是读入转换结果的4位数据,图中没有给出,读者可自行画出4次移位的过程。23图12-6单片机与片机与TLC2543的的8位数据交位数据交换示意示意图24由本例见,单片机与TLC2543接口十分简单,只需用软件控制4条I/O脚按规定时序对TLC2543进行访问即可。12.3Microwire总线简介总线简介三线同步串行接口,1根根数据线SO、1根根数据输入线S和1根根

12、时钟线SK组成。该总线最初是内建在NS公司公司COP400/COP800HPC系列单片机中,为单片机和外围器件提供串行通信接口。该总线只需要只需要3根信号线根信号线,连接和拆卸都很方便连接和拆卸都很方便。在需对一个系统更改时,只需改变链接到总线的单片机及外器件的数量和型号即可。25最初的最初的Microwire总线总线只能连接一台单片机作为主机,总线上的其他器件都是从设备。随着技术的发展,NS公司推出了8位的COP800系列单片机,该系列单片机仍采用原来的Microwire总线,但接口功能进行了增强,称之为增强型的MicrowirePlus。增强型的增强型的MicrowirePlus允许连接多

13、台单片机和外围允许连接多台单片机和外围器件器件,应用于分布式、多处理器的复杂系统。NS公司已生产出各种功能的公司已生产出各种功能的Microwire总线总线外围器件外围器件,包括存储器、定时器存储器、定时器/计数器、计数器、ADC和和DAC、LED显示驱显示驱动器动器和LCD显示驱动器显示驱动器以及远程通信设备远程通信设备等。2612.4I2C总线的串行扩展介绍总线的串行扩展介绍12.4.1概述概述I2C总线总线,PHILIPS推出,使用广泛、很有发展前途的使用广泛、很有发展前途的芯片间串行扩展总线芯片间串行扩展总线。只有只有两条信号线两条信号线,一一是数据线SDA,另一另一是时钟线SCL。两

14、条线均两条线均双向双向,所有连到所有连到I2C上器件的数据线都接上器件的数据线都接到到SDA线上线上,各器件时钟线均接到各器件时钟线均接到SCL线线上上。I2C系统基本结构如图图12-7所示所示。I2C总线单片机(如PHILIPS公司的8xC552)直接与I2C接口的各种扩展器件(如存储器、I/O芯片、A/D、D/A、键盘、显示器、日历/时钟)连接。27由于I2C总线的寻址采用纯软件的寻址方法,无需片选线的连接,这样就大大简化了总线数量。图12-7I2C串行串行总线系系统的基本的基本结构构28I2C的运行由主器件(主机)主器件(主机)控制。主器件是指启动数启动数据的发送(发出起始信号)、发出时

15、钟信号、传送结束时据的发送(发出起始信号)、发出时钟信号、传送结束时发出终止信号的器件,发出终止信号的器件,通常由单片机来担当。从器件(从机)从器件(从机)可以是存储器、LED或LCD驱动器、A/D或D/A转换器、时钟/日历器件等,从器件必须带有I2C串行总线接口。当当I2C总线空闲时,总线空闲时,SDA和和SCL两条线均为高电平两条线均为高电平。由于连接到总线上器件(节点)输出级必须是漏极或集电极开路,只要有一器件任意时刻输出低电平,都将使总线只要有一器件任意时刻输出低电平,都将使总线上的信号变低,上的信号变低,即各器件的SDA及SCL都是“线与线与”关系。29由于各器件输出端为漏级开路,故

16、必须通过上拉电阻接正电源(见图12-7中的两个电阻),以保证SDA和SCL在空闲时被上拉为高电平。SCL线上的时钟信号对SDA线上的各器件间的数据传输起同步控制作用。SDA线上的数据起始、终止及数据的有效性均要根据SCL线上的时钟信号来判断。30在标准I2C模式,数据的传输速率为传输速率为100kbit/s,高速高速模式模式下可达可达400kbit/s。总线上扩展的器件数量不是由电流负载决定的,而是总线上扩展的器件数量不是由电流负载决定的,而是由电容负载确定的。由电容负载确定的。I2C总线上每个节点器件的接口都有一定的等效电容,连接的器件越多,电容值越大,这会造成信号传输的延迟。总线上允许的器

17、件数以器件的电容量不超过400pF(通过驱动扩展可达4000pF)为宜,据此可计算出总线长度及连接器件的数量。每个连到I2C总线上的器件都有一个唯一的地址器件都有一个唯一的地址,扩展器件时也要受器件地址数目的限制。31I2C系统允许多主器件允许多主器件,究竟哪一主器件控制总线要通过总线仲裁总线仲裁来决定。如何仲裁,可查阅I2C仲裁协议。但在实际应用中,经常遇到的是以经常遇到的是以单一单片机单一单片机为主机为主机,其他外围接口器件为从机情况。12.4.2I2C总线的数据传送总线的数据传送1数据位的有效性规定数据位的有效性规定I2C总线在进行数据传送时,每一数据位的传送都与时钟脉冲相对应。时钟脉冲

18、为高电平期间,数据线上的数据必须保持稳定,在I2C总线上,只有在时钟线为低电平期间,数据线上的电平状态才允许变化,如图图12-8所示。32图图12-8数据位的有效性规定2起始和终止信号起始和终止信号据I2C总线协议总线协议,总线上数据信号传送由起始信号起始信号(S)开始、由终止信号(终止信号(P)结束。起始信号和终止信号都由主机发出主机发出,在起始信号产生起始信号产生后后,总线就处于总线就处于占用状态占用状态;在终止信号产生后终止信号产生后,总线就处于空闲状态空闲状态。结合图图12-9介绍起始信号和终止信号规定。33图图12-9起始信号和终止信号(1)起始信号()起始信号(S)。)。在SCL线

19、为高线为高期间,SDA线由高线由高向低向低的变化表示起始信号起始信号,只有在起始信号以后,其他命令才有效。(2)终止信号()终止信号(P)。)。在SCL线为高线为高期间,SDA线由低线由低向高向高的变化表示终止信号终止信号。随着终止信号出现,所有外部操作都结束。343I2C总线上数据传送的应答总线上数据传送的应答I2C数据传送时,传送的字节数(数据帧)没有限制,传送的字节数(数据帧)没有限制,但每一个字节必须为每一个字节必须为8位长度位长度。数据传送,先传最高位先传最高位(MSB),),每一个被传送字节后都须跟随1位应答位(即一帧共有9位),如图图12-10所示。I2C总线在传送每一字节数据后

20、都须有应答信号应答信号A,在在第第9个时钟位上出现个时钟位上出现,与应答信号对应的时钟信号由主机产生。这时发方须在这一时钟位上使SDA线处于高电平状态,以便收方在这一位上送出低电平应答信号A。35由于某种原因接收方不对主机寻址信号应答时,例如接收方正在进行其他处理而无法接收总线上的数据时,必须释放总线,将数据线置为高电平,而由主机产生一个终止信号以结束总线的数据传送。当主机接收来自从机的数据时,接收到最后一个数据字节后,必须给从机发送一个非应答信号(非应答信号(),),使从机释放数据总线,以便主机发送一个终止信号,从而结束数据的传送。36图图12-10I2C总线上的应答信号总线上的应答信号37

21、4I2C总线上的数据帧格式总线上的数据帧格式I2C传送的信号即包括真正的数据信号,也包括地址信号。I2C总线规定,在起始信号后必须传送一个从机的地址(7位),第8位是数据传送的方向位(R/),“0”表示主机发送数据(),“1”表示主机接收数据(R)。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可不产生终止信号,马上再次发出起始信号对另一从机进行寻址。因此,在总线一次数据传送过程中,可以有以下在总线一次数据传送过程中,可以有以下几种组合方式几种组合方式:38(1)主机向从机发送)主机向从机发送n个字节的数据个字节的数据,数据传送方向在整个传送过程中不

22、变,传送格式如下:说明:说明:阴影部分阴影部分表示主机向从机发送数据主机向从机发送数据,无阴影部无阴影部分分表示从机向主机发送数据从机向主机发送数据,以下同。上述格式中的从机地址为7位,紧接其后的“1”和和“0”表示主机的读读/写方写方向向,“1”为读,“0”为写。格式中:字节字节1 字节字节n为主机写入从机n字节数据。39(2)主机读出来自从机的)主机读出来自从机的n个字节个字节。除第一个寻址字节由主机发出,n字节都由从机发送,主机接收,数据传送数据传送格格式式如下:如下:其中:字节字节1 字节字节n为从机被读出的n个字节的数据。主机发送终止信号前应发送非应答信号,向从机表明读操作要结束。4

23、0(3)主机的读、写操作。)主机的读、写操作。在一次数据传送过程中,主机主机先发送一个字节数据,然后再接收一个字节数据先发送一个字节数据,然后再接收一个字节数据,此时起始信号和从机地址都被重新产生一次,但两次读写的方向位正好相反。数据传送的格式如下格式如下:“Sr”表示重新产生的起始信号,“从机地址从机地址r”表示重新产生的从机地址。由上可见,无论哪种方式,起始信号、终止信号和从机地址均由主机发送,数据字节传送方向由寻址字节中方传送方向由寻址字节中方向位规定向位规定,每字节传送都必须有应答位传送都必须有应答位(A或或)相随。相随。415寻址字节寻址字节在上面数据帧格式中,均有7位从机地址和紧跟

24、其后位从机地址和紧跟其后的的1位读位读/写方向位写方向位,即下面要介绍的寻址字节寻址字节。I2C总线的寻址采用软件寻址,主机在发送完起始信号后,立即发送寻址字节来寻址被控的从机,寻址字节格式格式如下:427位从机地址位从机地址即为“DA3、DA2、DA1、DA0”和“A2、A1、A0”。其中“DA3、DA2、DA1、DA0”为器件地址为器件地址,是外围器件固有的地址编码,器件出厂时就已经给定。“A2、A1、A0”为引脚地址为引脚地址,由器件引脚A2、A1、A0在电路中接高电平或接地决定(图图12-12)。数据方向位(数据方向位(R/)规定了总线上的单片机(主机)与外围器件(从机)的数据传送方向

25、。R/=1,表示主机接收(读)。R/=0,表示主机发送(写)。436寻址字节中的特殊地址寻址字节中的特殊地址I2C规定一些特殊地址,其中两种固定编号两种固定编号0000和1111已被保留为作为特殊用途,见表表12-1。44起始信号后第第1字节字节8位为位为“00000000”,为通用呼叫通用呼叫地址地址,用于寻访用于寻访I2C总线上所有器件的地址总线上所有器件的地址。不需从通用不需从通用呼叫地址命令获取数据的器件可不响应通用呼叫地址呼叫地址命令获取数据的器件可不响应通用呼叫地址。否则,接收到这个地址后应作出应答,并把自己置为从机接收方式,以接收随后的各字节数据。另外,当遇到不能处另外,当遇到不

26、能处理的数据字节时,不作应答,理的数据字节时,不作应答,否则收到每个字节后都应作应答。通用呼叫地址的含义在第2字节中加以说明。格式格式如下如下:45第第2字节为字节为06H时,所有能响应通用呼叫地址的从机复位,并由硬件装入从机地址的可编程部分。能响应命令的从机复位时不拉低SDA和SCL线,以免堵塞总线。第第2字节为字节为04H时,所有能响应通用呼叫地址,并通过硬件来定义其可编程地址的从机将锁定地址中的可编程位,但不进行复位。如果第如果第2字节的方向位字节的方向位B为为“1”,则这两个字节命令称为硬件通用呼叫命令硬件通用呼叫命令。就是说,这是由“硬件主器件”发出的。所谓硬件主器件,是不能发送所要

27、寻访从件地址的发送器,如键盘扫描器等。46这种器件在制造时无法知道信息应向哪儿传送,所以它发出硬件呼叫命令时,在第2字节的高7位说明自己的地址。接在总线上的智能器件,如单片机能识别这个地址,并与之传送数据。硬件主器件作为从机使用时,也用这个地址作为从机地址。格式为:在系统中另一种选择可能是系统复位时硬件主器件工在系统中另一种选择可能是系统复位时硬件主器件工作在从机接收方式,作在从机接收方式,这时由系统中主机先告诉硬件主器件数据应送往的从机地址。当硬件主器件要发数据时,就可直接向指定从机发送数据。477数据传送格式数据传送格式I2C总线上每传送一位数据都与一个时钟脉冲相对应,传送的每一帧数据均为

28、一字节。传送的每一帧数据均为一字节。但启动I2C总线后传送的字节数没有限制,只要求每传送一个字节后,对方回答一个应答位。在时钟线为高电平期间,数据线的状态就是要传送的数据。数据线上数据的改变必须在时钟线为低电平数据线上数据的改变必须在时钟线为低电平期间完成。期间完成。在数据传输期间,在数据传输期间,只要时钟线为高电平,数据线都必只要时钟线为高电平,数据线都必须稳定须稳定,否则数据线上任何变化都当作起始或终止信号。48I2C总线数据传送是必须遵循规定的数据传送格式必须遵循规定的数据传送格式。图图12-11为一完整的数据传送应答时序。据总线规范,起始起始信号信号表明一次数据传送开始表明一次数据传送

29、开始,其后为寻址字节。在寻址字节后是按指定读、写的数据字节与应答位。在数据传送完在数据传送完成后主器件都必须发送成后主器件都必须发送停止信号停止信号。在起始与停止信号间传输的字节数由主机决定,理论上讲没有字节限制。图12-11I2C总线一次完整的数据一次完整的数据传送送应答答时序序49I2C总线上的数据传送有总线上的数据传送有多种多种组合方式,组合方式,前面已介绍常见的三种数据传送格式,这里不再赘述。从上述数据传送格式从上述数据传送格式可看出:无论何种数据传送格式,寻址字节都由主机发出无论何种数据传送格式,寻址字节都由主机发出,数据字节的传送方向则遵循寻址字节中的方向位的规定。寻址字节只表明了

30、从机的地址及数据传送方向寻址字节只表明了从机的地址及数据传送方向。从机内部的n个数据地址,由器件设计者在该器件的I2C总线数据操作格式中,指定第一个数据字节作为器件内的单元地址指针,且设置地址自动加减功能,以减少从机地址的寻址操作。50每个字节传送都必须有应答信号(每个字节传送都必须有应答信号(A/)相随。)相随。从机在接收到起始信号后都必须释放数据总线必须释放数据总线,使其处于高电平,以便主机发送从机地址。12.5AT89S51单片机的单片机的I2C串行扩展设计串行扩展设计许多公司都推出带有带有I2C接口的单片机接口的单片机及各种外围扩展各种外围扩展器件器件,常见有ATMEL公司公司的AT2

31、4C系列存储器、系列存储器、Philips公司公司的的PCF8553(时钟(时钟/日历且带有日历且带有256 8RAM)和)和PCF8570(256 8RAM)、)、MAXIM公司公司的的MAX127/128(A/D)和)和MAX517/518/519(D/A)等。)等。I2C总线系统中的主器件通常由带有I2C总线接口单片51机来担当,也可用不带I2C总线接口的单片机。从器件必须带有I2C总线接口。AT89S51没有没有I2C总线接口,这可利用其并行总线接口,这可利用其并行I/O口线口线模拟模拟I2C总线接口的时序,总线接口的时序,因此,在许多AT89S51应用系统中,都将I2C总线的模拟传送

32、技术作为常规的设计方法。本节首先介绍AT89S51扩展I2C总线器件的硬件接口设计,然后介绍用单片机I/O口结合软件模拟I2C总线数据传送,以及数据传送模拟通用子程序的设计。5212.5.1AT89S51的的I2C总线扩展系统总线扩展系统图图12-12所示为一个AT89S51与有I2C总线器件的扩展接口电路。图中,AT24C02为E2PROM芯片,PCF8570为静态2568RAM,PCF8574为8位I/O口,SAA1064为4位LED驱动器。虽然各种器件的原理和功能有很大的差异,但它们与AT89S51的连接是相同的。53图12-12AT89S51单片机片机扩展展I2C总线器件的接口器件的接

33、口电路路5412.5.2I2C总线数据传送的模拟总线数据传送的模拟AT89S51用软件来模拟I2C总线上的信号, 为单主器件的工作方式下,没有其他主器件对总线的竞争与同步,只存在单片机对单片机对I2C总线上各从器件的读(单片机接收)、总线上各从器件的读(单片机接收)、写(单片机发送)操作写(单片机发送)操作。1典型信号模拟典型信号模拟为保证数据传送的可靠性,标准标准I2C的数据传送有严格的数据传送有严格的时序要求的时序要求。I2C总线的起始信号、终止信号、应答起始信号、终止信号、应答/数据数据“0”及非应答及非应答/数据数据“1”的模拟时序模拟时序如图图12-13、图图12-14、图图12-1

34、5、图图12-16所示所示。55在I2C的数传中,可利用时钟同步机制利用时钟同步机制展宽低电平周期展宽低电平周期,迫使主器件迫使主器件处于等待状态处于等待状态,使,使传送速率降低传送速率降低。对终止信号终止信号,要保证有大于4.7s的信号建立时间。终止信号结束时,要释放总线,使SDA、SCL维持在高电平,大于4.7s后才可以进行第1次起始操作。单主器件系统中,为防止非正常传送,终止信号后SCL可设置为低。对于发送应答位、非应答位发送应答位、非应答位来说,与发送数据“0”和“1”的信号定时要求完全相同。只要满足在时钟高电平大于4.0s期间,SDA线上有确定的电平状态即可。562典型信号的模拟子程

35、序主器件主器件采用单片机,晶振为6MHz(机器周期2s),常用的几个几个典型的波形典型的波形模拟如下模拟如下。(1)起始信号)起始信号S。对一个新的起始信号,要求起始前总线空闲时间大于4.7s,而对一个重复的起始信号,要求建立时间也须大于4.7s。图图12-13所示的起始信号的时序波形在SCL高电平期间SDA发生负跳变,该时序波形适用于数据模拟传送中任何情况下的起始操作。起始信号到第1个时钟脉冲的时间间隔应大于4.0s。子程序如下:子程序如下:57START: SETBP1.7;SDA=1SETBP1.6;SCL=1NOP;SDA=1和SCL=1保持4sNOPCLR P1.7;SDA=0NOP

36、;SDA=0和SCL=1(起始信号)保持4sNOPCLR P1.6;SCL=0RET图12-13起始信号S的模拟图12-14终止信号P的模拟58(2)终止信号)终止信号P。在SCL高期间SDA发生正跳变。终止信号P的波形如图图12-14所示。子程序如下:STOP:CLRP1.7;SDA=0SETBP1.6;SCL=1NOP;终止信号建立时间;终止信号建立时间4sNOPSETBP1.7;SDA=1NOPNOPCLRP1.6;SCL=0CLRP1.7;SDA=0RET59(3)发送应答位)发送应答位/数据数据“0”。在SDA低电平期间SCL发生一个正脉冲,波形如图图12-15所示。子程序如下:AC

37、K:CLRP1.7;SDA=0SETB P1.6;SCL=1NOP;4sNOPCLRP1.6;SCL=0SETBP1.7;SDA=1RET图12-15应答位答位/数据数据“0”的模的模拟时序序图12-16非非应答位答位/数据数据“1”的模的模拟时序序60(4)发送非应答位)发送非应答位/数据数据“1”。在SDA高电平期间SCL发生一个正脉冲,时序波形如图图12-16所示。子程序如下:NACK: SETBP1.7;SDA=1SETBP1.6;SCL=1NOP;两条NOP指令为4sNOPCLRP1.6;SCL=0CLRP1.7;SDA=0RET6112.5.3I2C总线模拟通用子程序总线模拟通用子

38、程序I2C总线操作中除基本的起始信号、终止信号、发送应除基本的起始信号、终止信号、发送应答位答位/数据数据“0”和发送非应答位和发送非应答位/数据数据“1”外外,还需要有还需要有应答位检查、发送应答位检查、发送1字节、接收字节、接收1字节、发送字节、发送n字节和接收字节和接收n字节字节子程序子程序。1应答位检查子程序应答位检查子程序在应答位检查子程序应答位检查子程序CACK中,设置了标志位F0,当检查到正常应答位时,F0=0;否则F0=1。参考子程序如下:62CACK:SETBP1.7;SDA为输入线SETBP1.6;SCL=1,使SDA引脚上的数据有效CLRF0;预设F0=0MOVC,P1.

39、7;读入SDA线的状态JNCCEND ;应答正常,转F0=0SETBF0;应答不正常,F0=1CEND:CLR P1.6;子程序结束,使SCL=0RET2发送发送1字节数据子程序字节数据子程序下面是模拟模拟I2C数据线数据线SDA发送发送1字节数据的字节数据的子程序子程序。63调用本子程序前,先将欲发送的数据送入调用本子程序前,先将欲发送的数据送入A中。中。参考子程序如下:W1BYTE:MOVR6,#08H ;8位数据长度送入R6中WLP:RLCA;A左移,发送位进入CMOVP1.7,C;将发送位送入SDA引脚SETBP1.6;SCL=1,使SDA引脚上的数据有效NOPNOPCLRP1.6;S

40、DA线上数据变化DJNZR6,WLPRET643接收接收1字节数据子程序字节数据子程序下面是模拟从模拟从I2C的数据线的数据线SDA读取读取1字节数据字节数据的子程序的子程序,并存入R2中,子程序如下:R1BYTE:MOVR6,#08H ;8位数据长度送入R6中RLP:SETBP1.7;置SDA数据线为输入方式SETBP1.6;SCL=1,使SDA数据线上的数据有效MOVC,P1.7;读入SDA引脚状态MOVA,R2;RLCA;将C读入AMOVR2,A;将A存入R2CLRP1.6;SCL=0,继续接收数据DJNZR6,RLPRET654发送发送n字节数据子程序字节数据子程序本子程序为主机向主机

41、向I2C的数据线的数据线SDA连续连续发送发送n字节数字节数据据,从机接收。发送发送n字节数据的格式字节数据的格式如下:本子程序定义了如下一些符号单元。MSBUF:主器件发送数据缓冲区首地址的存放单元。WSLA:外围器件寻址字节(写)的存放单元。NUMBYT:发送n字节数据的存放单元。66在调用本程序之前,须将寻址字节代码存放在须将寻址字节代码存放在WSLA单元单元;须将要发送的要发送的n字节数据字节数据依次存放在以MSBUF单元内容为首址的发送缓冲区内。调本程序后,n字节数据依次传送到外围器件内部相应地址单元中。参考子程序如下:WNBYTE:MOVR7,NUMBYT;发送字节数送R7LCAL

42、LSTART;调用起始信号模拟子程序MOVA,WSLA;发送外围器件的寻址字节LCALLW1BYTE;调用发送1字节子程序LCALLCACK;调用检查应答位子程序67JBF0,WNBYTE ;为非应答位则重发MOVR0,MSBUF;主器件发送缓冲区首地址送R0WDATA:MOVA,R0;发送数据送ALCALL W1BYTE;调用发送1字节子程序LCALL CACK;检查应答位JBF0,WNBYTE ;为非应答位则重发INCR0;修改地址指针DJNZR7,WDATALCALL STOP;调用发送子程序,发送结束RET685读入读入n字节数据子程序字节数据子程序本子程序为主机从主机从I2C的数据线

43、的数据线SDA读入读入n字节数据字节数据,从机发送。格式如下:子程序定义如下一些符号单元符号单元,其中NUMBYT与子程序WNBYTE中定义相同。RSABYT:外围器件寻址字节(读)存放单元。MRBUF:主机接收缓冲区存放接收数据的首址单元。69在调用本程序之前,须将寻址字节代码存放在RSABYT单元。执行子程序后,从外围器件指定从外围器件指定首地址首地址开开始的始的n字节数据字节数据依次存放在以依次存放在以MRBUF单元内容为首地址的单元内容为首地址的发送缓冲区中。发送缓冲区中。子程序如下:RNBYTE: MOVR7,NUMBYT;读入字节数n存入R7RLP:LCALLSTART;调用起始信号模拟子程序MOVA,RSABYT;寻址字节送入ALCALL W1BYTE;写入寻址字节LCALL CACK;检查应答位JBF0,RNBYTE;非正常应答时重新开始70MOVR0,MRBUF;接收缓冲区的首址送R0RDATA:LCALL R1BYTE;读入1字节到AMOVR0,A;接收的数据存入缓冲区DJNZR7,ACK;n字节未读完则跳转ACKLCALL NASK;n字节读完则发送非应答位LCALL STOP;调用发送停止位子程序RETACK:LCALL ACK;发送一个应答位到外围器件INCR0;修改地址指针SJMPRDATARET71

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号