《单片机的串行扩展技术精选PPT.ppt》由会员分享,可在线阅读,更多相关《单片机的串行扩展技术精选PPT.ppt(49页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机的串行扩展技术第1页,此课件共49页哦12.1 12.1 单总线接口简介单总线接口简介 单总线(单总线(1-Wire bus1-Wire bus)是由是由DALLAS DALLAS 公司公司推出的外围串行扩展总线。推出的外围串行扩展总线。它只有一条数据输入它只有一条数据输入/输出线输出线DQDQ,总线上的所有器件都挂在,总线上的所有器件都挂在DQDQ上,电源上,电源也通过这条信号线供给,这种使用一条信号线的串行扩展技术,称为也通过这条信号线供给,这种使用一条信号线的串行扩展技术,称为单总线单总线技术。技术。各种器件,各种器件,由由DALLAS DALLAS 公司提供的专用芯片实现。公司提
2、供的专用芯片实现。每个芯片都有每个芯片都有6464位位ROMROM,厂家对每一个芯片用激光烧写编码,其中存有,厂家对每一个芯片用激光烧写编码,其中存有1616位位十进制十进制编码序列号编码序列号,它是,它是器件的地址编号器件的地址编号,确保它挂在总线上后,可以唯一,确保它挂在总线上后,可以唯一被确定。除了器件的地址编码外,芯片内还包含收发控制和电源存被确定。除了器件的地址编码外,芯片内还包含收发控制和电源存储电路,如储电路,如图图12-112-1所示。所示。第2页,此课件共49页哦图图12-112-1第3页,此课件共49页哦这些芯片的这些芯片的耗电量都很小耗电量都很小(空闲时几(空闲时几W W
3、,工作时几,工作时几mWmW),工作时从总),工作时从总线上线上馈送电能到大电容中馈送电能到大电容中就可以工作,故就可以工作,故一般不需另加电源一般不需另加电源。图图12-212-2为一个由单总线构成的为一个由单总线构成的分布式温度监测系统分布式温度监测系统。多个带有单总。多个带有单总线接口的数字温度计和多个集成电路线接口的数字温度计和多个集成电路DS1820DS1820芯片都挂在芯片都挂在DQDQ总线上。总线上。单片机对每个单片机对每个DS1820DS1820通过总线通过总线DQDQ寻址。寻址。DQDQ为漏极开路,须加上拉电为漏极开路,须加上拉电阻。阻。DALLASDALLAS公司为单总线的
4、寻址及数据的传送提供了公司为单总线的寻址及数据的传送提供了严格的时序规范严格的时序规范,具体内容读者可具体内容读者可查阅相关资料查阅相关资料。第4页,此课件共49页哦 图图12-212-2第5页,此课件共49页哦12.2 SPI12.2 SPI总线接口简介总线接口简介SPISPI(Serial Periperal InterfaceSerial Periperal Interface)是是MotorolaMotorola公司公司推出的推出的同步串行同步串行外设接口外设接口,允许单片机与多个厂家生产的带有该接口的设备直接连接,允许单片机与多个厂家生产的带有该接口的设备直接连接,以串行方式交换信息
5、。以串行方式交换信息。使用使用条线条线:串行时钟:串行时钟SCKSCK,主器件输入,主器件输入/从器件输出数据线从器件输出数据线MISOMISO(简(简称称SOSO),主器件输出),主器件输出/从器件输入数据线从器件输入数据线MOSIMOSI(简称(简称SISI)和)和从器件选从器件选择线择线。SPISPI的典型应用是的典型应用是单主系统单主系统。该系统只有一台主器件,从器件通常是。该系统只有一台主器件,从器件通常是外围接口器件,如存储器、外围接口器件,如存储器、I/OI/O接口、接口、A/DA/D、D/AD/A、键盘、日历、键盘、日历/时钟时钟和显示驱动等。和显示驱动等。图图12-312-3
6、是是SPISPI外围串行扩展结构图。外围串行扩展结构图。第6页,此课件共49页哦图图12-312-3第7页,此课件共49页哦单片机与外围器件在时钟线单片机与外围器件在时钟线SCKSCK、数据线、数据线MISOMISO和和MOSIMOSI都是都是同名端相连。同名端相连。扩展多个外围器件时,扩展多个外围器件时,SPISPI无法通过数据线译码选择,故接口的外围器件无法通过数据线译码选择,故接口的外围器件都有片选端。在都有片选端。在扩展单个扩展单个SPISPI器件器件时,外围器件的片选端可以接时,外围器件的片选端可以接地或通过地或通过I/OI/O口控制;在口控制;在扩展多个扩展多个SPISPI器件器件
7、时,单片机应分别通过时,单片机应分别通过I/OI/O口线来分时选通外围器件。口线来分时选通外围器件。在在SPISPI串行扩展系统中,如果某一从器件串行扩展系统中,如果某一从器件只作输入只作输入(如键盘)或(如键盘)或只作输只作输出出(如显示器)时,(如显示器)时,可省去一条数据输出可省去一条数据输出(MISOMISO)或一条数据输入)或一条数据输入(MOSIMOSI),从而),从而构成双线系统(接地)。构成双线系统(接地)。SPISPI系统中从器件的选通依靠其引脚,数据传送软件十分简单,系统中从器件的选通依靠其引脚,数据传送软件十分简单,省去了省去了传输时的地址选通字节。传输时的地址选通字节。
8、但在扩展器件较多时,连线较多。但在扩展器件较多时,连线较多。第8页,此课件共49页哦在在SPISPI串行扩展系统中,作为主器件的单片机在启动一次传送时,便串行扩展系统中,作为主器件的单片机在启动一次传送时,便产产生生8 8个时钟个时钟,传送给接口芯片,传送给接口芯片作为同步时钟作为同步时钟,控制数据的输入和输,控制数据的输入和输出。数据的传送格式是高位(出。数据的传送格式是高位(MSBMSB)在前,低位()在前,低位(LSBLSB)在后,如)在后,如图图12-412-4所示。所示。数据线上输出数据的变化以及输入数据时的采样,都取决于数据线上输出数据的变化以及输入数据时的采样,都取决于SCKSC
9、K。但对于不同的外围芯片,有的可能是但对于不同的外围芯片,有的可能是SCKSCK的上升沿起作用,有的上升沿起作用,有的可能是的可能是SCKSCK的下降沿起作用。的下降沿起作用。图图12-412-4第9页,此课件共49页哦SPISPI有有较高的数据传输速度较高的数据传输速度,最高,最高可达可达1.05Mb/s1.05Mb/s。MotorolaMotorola公司公司为广大用户提供了一系列具有为广大用户提供了一系列具有SPISPI接口的单片机和外接口的单片机和外围接口芯片,如存储器围接口芯片,如存储器MC2814MC2814,显示驱动器,显示驱动器MC14499MC14499和和MC14489MC
10、14489等等芯片。芯片。SPISPI外围串行扩展系统的外围串行扩展系统的主器件主器件是是单片机单片机,也可以不带,也可以不带SPISPI接口接口,但是,但是从从器件器件一定要有一定要有具有具有SPISPI接口接口。12.3 I12.3 I2 2C C串行总线的组成及工作原理串行总线的组成及工作原理I I2 2C C串行总线只有串行总线只有两条信号线两条信号线,一条是数据线,一条是数据线SDASDA,另一条是时钟线,另一条是时钟线SCLSCL,所有连接到所有连接到I I2 2C C总线上器件的数据线都接到总线上器件的数据线都接到SDASDA线上,各器件的时钟线上,各器件的时钟线均接到线均接到S
11、CLSCL线上,线上,I I2 2C C总线系统的基本结构如总线系统的基本结构如图图12-512-5所示。所示。第10页,此课件共49页哦它可以使具有它可以使具有I I2 2C C总线的单片机总线的单片机(如(如PHILIPSPHILIPS公司的公司的8xC552 8xC552)直接与具有直接与具有I I2 2C C总线接口的各种扩展器件总线接口的各种扩展器件(如存储器、(如存储器、I/OI/O口、口、A/DA/D、D/AD/A、键盘、键盘、显示器、日历显示器、日历/时钟)时钟)连接连接。对不带有对不带有I I2 2C C接口的单片机接口的单片机(如(如89C5189C51)可采用普通的)可采
12、用普通的I/OI/O口结合口结合软件模拟软件模拟I I2 2C C串行接口总线时序串行接口总线时序的方法,完成的方法,完成I I2 2C C总线的串行接口功能。总线的串行接口功能。12.3.112.3.1 I I2 2C C串行总线概述串行总线概述只有只有两条两条信号线信号线,一条是,一条是数据线数据线SDASDA,另一条是,另一条是时钟线时钟线SCLSCL,所有连接,所有连接到到I I2 2C C总线上器件的数据线都接到总线上器件的数据线都接到SDASDA线上,各器件的时钟线均接到线上,各器件的时钟线均接到SCLSCL线上,线上,系统的基本结构系统的基本结构如如图图12-512-5所示。所示
13、。第11页,此课件共49页哦图图12-512-5第12页,此课件共49页哦I I2 2C C的运行由主器件控制,主器件是指启动数据的发送(发出起始的运行由主器件控制,主器件是指启动数据的发送(发出起始信号)、发出时钟信号、传送结束时发出终止信号的器件。信号)、发出时钟信号、传送结束时发出终止信号的器件。主器件主器件可以具有可以具有I I2 2C C总线接口,也可以不带总线接口,也可以不带I I2 2C C总线接口。总线接口。从器件从器件可以是存储器、可以是存储器、LEDLED或或LCDLCD驱动器、驱动器、A/DA/D或或D/AD/A转换器、时钟转换器、时钟/日历日历器件等,从器件器件等,从器
14、件必须带有必须带有I I2 2C C总线接口总线接口。I I2 2C C串行总线的串行总线的SDASDA和和SCLSCL是双向的,带有是双向的,带有I I2 2C C总线接口的器件的总线接口的器件的输出端为输出端为漏级开路漏级开路,故,故必须通过上拉电阻接正电源必须通过上拉电阻接正电源(见图(见图12-512-5中的两个电阻)。中的两个电阻)。总线空闲时,两条线均为高电平。由于连接到总线上的器件的输总线空闲时,两条线均为高电平。由于连接到总线上的器件的输出级必须是漏级或集电极开路的,只要有一个器件输出低电平,出级必须是漏级或集电极开路的,只要有一个器件输出低电平,都将使总线上的信号变低。都将使
15、总线上的信号变低。SCLSCL线线上的时钟信号对上的时钟信号对SDASDA第13页,此课件共49页哦线上的各器件间的数据传输起同步控制作用。线上的各器件间的数据传输起同步控制作用。SDASDA线上的数据起始、线上的数据起始、终止及数据的有效性均要根据终止及数据的有效性均要根据SDASDA线上的时钟信号来判断。线上的时钟信号来判断。标准标准I I2 2C C普通模式普通模式,数据的传输速率为,数据的传输速率为100kb/s100kb/s,高速模式高速模式可达可达400kb/s400kb/s。总线上总线上扩展器件的数量扩展器件的数量不是由电流负载决定,而是不是由电流负载决定,而是由电容负载由电容负
16、载确定。确定。I I2 2C C总线上每个节点器件的接口都有一定的等效电容,连接的总线上每个节点器件的接口都有一定的等效电容,连接的器件越多,电容值越大,这会造成信号传输的延迟。器件越多,电容值越大,这会造成信号传输的延迟。总线上允总线上允许的器件数以总线上的电容量不超过许的器件数以总线上的电容量不超过400pF400pF(通过驱动扩展可达通过驱动扩展可达4000pF4000pF),据此可计算出总线长度及连接器件的数量。每个连到),据此可计算出总线长度及连接器件的数量。每个连到I I2 2C C总线上的器件都有一个唯一的地址,扩展器件时同时也要受器总线上的器件都有一个唯一的地址,扩展器件时同时
17、也要受器件地址数目的限制。件地址数目的限制。第14页,此课件共49页哦I I2 2C C总总线线系系统统允允许许多多主主器器件件,为为避避免免混混乱乱,某某一一时时刻刻究究竟竟由由哪哪一一台台主主器器件件来来控控制制总总线线要要通通过过总总线线仲仲裁裁来来决决定定。读读者者可可查查阅阅I I2 2C C总总线线的的仲仲裁裁协协议议。当当然然,经经常常遇遇到到的的是是以以单单片片机机为为主主器器件件,其其他他外外围围接接口口器器件件为从器件的单主器件情况。为从器件的单主器件情况。12.3.2 I12.3.2 I2 2C C总线的数据传送总线的数据传送1 1数据位的有效性规定数据位的有效性规定在在
18、I I2 2C C总线上,每一数据位的传送都与时钟脉冲相对应,逻辑总线上,每一数据位的传送都与时钟脉冲相对应,逻辑“0”0”和逻和逻辑辑“1”1”的信号电平取决于相应电源的信号电平取决于相应电源V VCCCC的电压。的电压。I I2 2C C总线在总线在进行数据传送进行数据传送时,时,时钟线为高电平时钟线为高电平期间,数据线上的数据必期间,数据线上的数据必须保持稳定,只有在须保持稳定,只有在时钟线为低电平时钟线为低电平期间,数据线上的高电平或期间,数据线上的高电平或低电平状态才允许变化,如低电平状态才允许变化,如图图12-612-6所示。所示。第15页,此课件共49页哦根据根据I I2 2C
19、C总线协议,总线上总线协议,总线上数据传送的信号由起始信号(数据传送的信号由起始信号(S S)、终止信)、终止信号(号(P P)、应答信号()、应答信号(A A)、非应答信号)、非应答信号(A(A*)以及总线数据位)以及总线数据位组成组成。图图12-612-6第16页,此课件共49页哦(1 1)起始信号()起始信号(S S)。)。在在SCLSCL线线为高电平期间,为高电平期间,SDASDA线线由高电平向低由高电平向低电平的变化表示起始信号,只有在起始信号以后,其他命令才电平的变化表示起始信号,只有在起始信号以后,其他命令才有效。有效。(2 2)终止信号()终止信号(P P)。)。在在SCLSC
20、L线线为高电平期间,为高电平期间,SDASDA线线由低电平向高电由低电平向高电平的变化表示终止信号。随着终止信号的出现,所有外部操作都平的变化表示终止信号。随着终止信号的出现,所有外部操作都结束。结束。起始和终止信号都是由主器件发出的,在起始信号产生后,总线起始和终止信号都是由主器件发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号出现后,总线就处于空闲状就处于被占用的状态;在终止信号出现后,总线就处于空闲状态。起始信号和终止信号如态。起始信号和终止信号如图图12-712-7所示。所示。第17页,此课件共49页哦图图12-712-7 若连接到若连接到I I2 2C C总线上的器件总线
21、上的器件具有具有I I2 2C C总线的硬件接口总线的硬件接口,则很容易检测,则很容易检测到起始和终止信号。到起始和终止信号。对于对于不具备不具备I I2 2C C总线硬件接口总线硬件接口的有些单片机(如的有些单片机(如89C5189C51),为了检),为了检测起始和终止信号,必须保证在每个时钟周期内对数据线测起始和终止信号,必须保证在每个时钟周期内对数据线SDASDA取取样两次。样两次。第18页,此课件共49页哦(3 3)应答信号()应答信号(A A)。)。I I2 2C C总线在每传送一字节数据后都必须有应答信号,总线在每传送一字节数据后都必须有应答信号,与应答信号线对应的时钟信号由主器件
22、产生。这时发送方必须在这一与应答信号线对应的时钟信号由主器件产生。这时发送方必须在这一时钟位上使数据总线处于高电平状态,以便接收方在这一位上送出应时钟位上使数据总线处于高电平状态,以便接收方在这一位上送出应答信号,如答信号,如图图12-812-8所示。所示。应答信号在第应答信号在第9 9个时钟位上出现,接收方输出低电平为应答信号个时钟位上出现,接收方输出低电平为应答信号A A。(4 4)非应答信号()非应答信号(A A*)。)。每传送完一字节数据后,在第每传送完一字节数据后,在第9 9个时钟位上个时钟位上接收方输出高电平为应答信号接收方输出高电平为应答信号第19页,此课件共49页哦图图12-8
23、12-8第20页,此课件共49页哦2 2I I2 2C C总线上数据字节的传送与应答总线上数据字节的传送与应答数据传送时,数据传送时,传送的字节数(数据帧)没有限制,传送的字节数(数据帧)没有限制,但是每一字节必须但是每一字节必须是是8 8位位长度。长度。先传送最高位先传送最高位(MSBMSB),每一个被传送的字节后面都),每一个被传送的字节后面都必须跟随必须跟随1 1位应答位(即一帧共有位应答位(即一帧共有9 9位),位),见见图图12-812-8。接收器件收到一个完整的数据字节后接收器件收到一个完整的数据字节后,有可能需要完成一些其他工作,有可能需要完成一些其他工作(如从器件正在进行实时性
24、的处理工作而无法接收总线上的数据),不(如从器件正在进行实时性的处理工作而无法接收总线上的数据),不需要立刻接收下一字节,这时接收器件可以将需要立刻接收下一字节,这时接收器件可以将SCLSCL线拉成低电平,从而线拉成低电平,从而使主器件处于等待状态。直到接收器件准备好接收下一个字节时,再释使主器件处于等待状态。直到接收器件准备好接收下一个字节时,再释放放SCLSCL线使之为高电平,从而使数据传送可以继续进行。线使之为高电平,从而使数据传送可以继续进行。第21页,此课件共49页哦如果主器件对从器件进行了应答,但在数据传送一段时间后无法如果主器件对从器件进行了应答,但在数据传送一段时间后无法继续接
25、收更多的数据,从器件可以通过对无法接收的第一个继续接收更多的数据,从器件可以通过对无法接收的第一个数据字节的数据字节的“非应答非应答”通知主器件,主器件则应发出终止信通知主器件,主器件则应发出终止信号以结束数据的继续传送。号以结束数据的继续传送。当主器件接收数据时,它收到从器件发出的最后一个数据字节后,必当主器件接收数据时,它收到从器件发出的最后一个数据字节后,必须向主器件发出一个结束传送的信号。这个信号是由对从器件的须向主器件发出一个结束传送的信号。这个信号是由对从器件的“非应答非应答”来实现的。然后,从器件释放来实现的。然后,从器件释放SDASDA线,以允许主器件产生线,以允许主器件产生终
26、止信号。终止信号。I I2 2C C总线上应答与非应答信号见总线上应答与非应答信号见图图12-812-8。第22页,此课件共49页哦12.4 AT89C5112.4 AT89C51单片机扩展单片机扩展I I2 2C C总线器件的接口设计总线器件的接口设计随着微电子技术的发展,许多公司,如随着微电子技术的发展,许多公司,如PHILIPSPHILIPS、MotorolaMotorola、ATMELATMEL和和MAXIMMAXIM等,都推出许多带有等,都推出许多带有I I2 2C C总线接口的单片机及各种外总线接口的单片机及各种外围器件围器件,如如:存储器、存储器、A/DA/D转换器、转换器、D/
27、AD/A转换器、转换器、LEDLED及及LCDLCD驱动器、日历时钟电路驱动器、日历时钟电路(且带有(且带有25682568RAMRAM),如),如PHILIPSPHILIPS公司公司的的PCF8553PCF8553(和(和PCF8570PCF8570(25682568RAMRAM)等。)等。第23页,此课件共49页哦MAXIMMAXIM公公司司的的MAX127/128MAX127/128(A/DA/D)和和MAX517/518/519MAX517/518/519(D/AD/A),ATMELATMEL公公司司的的AT24CAT24C系列存储器等。系列存储器等。I I2 2C C总总线线系系统统
28、中中的的主主器器件件通通常常由由单单片片机机来来担担当当,它它可可以以具具有有I I2 2C C总总线线接接口口,也也可可以以不不带带I I2 2C C总总线线接接口口。从从器器件件必必须须带带有有I I2 2C C总总线线接接口口。对对于于89C5189C51单单片片机机,没没有有配配置置I I2 2C C总总线线接接口口,这这时时可可以以利利用用通通用用并并行行I/OI/O口口线线模模拟拟I I2 2C C总总线线接接口口的的时时序序,使使89C5189C51单单片片机机不不受受没没带带I I2 2C C总总线线接接口口的限制。的限制。因因此此,在在许许多多单单片片机机应应用用系系统统中中
29、,都都将将I I2 2C C总总线线的的模模拟拟传传送送技技术术作作为为常规的设计方法常规的设计方法。第24页,此课件共49页哦下面介绍下面介绍89C5189C51单片机扩展单片机扩展I I2 2C C总线器件的硬件接口设计,然后介绍用总线器件的硬件接口设计,然后介绍用89C51 I/O89C51 I/O口结合软件模拟口结合软件模拟I I2 2C C总线数据传送,以及数据传送模拟通总线数据传送,以及数据传送模拟通用子程序的设计。用子程序的设计。12.4.1 I12.4.1 I2 2C C总线器件的扩展接口电路总线器件的扩展接口电路AT89C51AT89C51单片机的单片机的I I2 2C C总
30、线扩展的硬件接口设计比较简单。总线扩展的硬件接口设计比较简单。图图12-912-9为一个为一个89C5189C51单片机与具有单片机与具有I I2 2C C总线接口器件的扩展电路。总线接口器件的扩展电路。图图12-912-9所示为一个所示为一个AT89C51AT89C51单片机与具有单片机与具有I I2 2C C总线接口器件的扩展电路。总线接口器件的扩展电路。图中,图中,AT24C02AT24C02为为E2PROME2PROM芯片,芯片,PCF8570PCF8570为静态为静态256256 8 RAM8 RAM,PCF8574PCF8574为为8 8位位I/OI/O口,口,SAA1064SAA
31、1064为为4 4位位LEDLED驱动器。有关各种器件的驱动器。有关各种器件的具体工作原理和用法参见有关资料。具体工作原理和用法参见有关资料。第25页,此课件共49页哦图图12-912-9第26页,此课件共49页哦12.4.2 I12.4.2 I2 2C C总线数据传送的模拟总线数据传送的模拟AT89C51AT89C51单片机为单片机为单主器件单主器件的工作方式下,总线数据的传送控制比较简的工作方式下,总线数据的传送控制比较简单,没有总线的竞争与同步,只存在单片机对单,没有总线的竞争与同步,只存在单片机对I2CI2C总线上各从器件总线上各从器件的读(单片机接收)、写(单片机发送)操作。通常可利
32、用软的读(单片机接收)、写(单片机发送)操作。通常可利用软件实现件实现I I2 2C C总线的数据传送,即总线的数据传送,即软件与硬件结合的信号模拟。软件与硬件结合的信号模拟。1 1典型信号模拟典型信号模拟为保证数据传送的可靠性,标准为保证数据传送的可靠性,标准I I2 2C C总线的数据传送有严格的时序要求。总线的数据传送有严格的时序要求。I I2 2C C总线的起始信号、终止信号、发送总线的起始信号、终止信号、发送“0”0”及发送及发送“1”1”的模拟时的模拟时序如序如图图12-1012-10图图12-1312-13所示。所示。第27页,此课件共49页哦表表12-112-1所示为所示为I
33、I2 2C C总线的时序特性。表中的数据为程序模拟总线的时序特性。表中的数据为程序模拟I I2 2C C总线信号总线信号提供了基础。提供了基础。由表可知,除了由表可知,除了SDASDA、SCLSCL线的信号下降时间为最大值外,其他参数只有线的信号下降时间为最大值外,其他参数只有最小值。这表明在最小值。这表明在I I2 2C C总线的数据传送中,可以利用时钟同步机制展总线的数据传送中,可以利用时钟同步机制展宽低电平周期,迫使主器件处于等待状态,使传送速率降低。宽低电平周期,迫使主器件处于等待状态,使传送速率降低。第28页,此课件共49页哦第29页,此课件共49页哦对于一个新的对于一个新的起始信号
34、起始信号,要求起始前总线的空闲时间,要求起始前总线的空闲时间T TBUFBUF大于大于4.74.7 s s,而对于一个重复的起始信号,要求建立时间而对于一个重复的起始信号,要求建立时间T TSUSU:STASTA也须大于也须大于4.74.7 s s。所以,。所以,图图12-1012-10所示的起始信号适用于数据模拟传送中任何情所示的起始信号适用于数据模拟传送中任何情况下的起始操作。起始信号到第况下的起始操作。起始信号到第1 1个时钟脉冲的时间间隔应大于个时钟脉冲的时间间隔应大于4.04.0 s s。对于对于终止信号终止信号,要保证有大于,要保证有大于4.74.7 s s的信号建立时间的信号建立
35、时间T TSUSU.STOSTO。终止信号。终止信号结束时,要释放总线,使结束时,要释放总线,使SDASDA、SCLSCL维持在高电平上,在大于维持在高电平上,在大于4.74.7 s s后后才可以进行第才可以进行第1 1次起始操作。在单主器件系统中,为防止非正常传送,终次起始操作。在单主器件系统中,为防止非正常传送,终止信号后止信号后SCLSCL可以设置在低电平。可以设置在低电平。对于对于发送应答位、非应答位发送应答位、非应答位来说,与发送数据来说,与发送数据“0”0”和和“1”1”的信号定时的信号定时要求完全相同。只要满足在时钟高电平大于要求完全相同。只要满足在时钟高电平大于4.0ms4.0
36、ms期间,期间,SDASDA线上有线上有确定的电平状态即可。确定的电平状态即可。第30页,此课件共49页哦第31页,此课件共49页哦2 2典型信号模拟子程序典型信号模拟子程序主器件主器件采用采用AT89C51AT89C51,晶振频率为,晶振频率为6MHz6MHz(即机器周期为(即机器周期为2ms2ms),对常用),对常用的几个典型信号的波形模拟如下。的几个典型信号的波形模拟如下。(1 1)起始信号)起始信号S S 起始信号起始信号S S的时序波形如的时序波形如图图12-1012-10所示。所示。图图12-1012-10第32页,此课件共49页哦子程序如下:子程序如下:START:START:S
37、ETB P1.7SETB P1.7;SDA=1;SDA=1SETB P1.6SETB P1.6;SCL=1;SCL=1NOPNOPNOPNOPCLR P1.7CLR P1.7;SDA=0;SDA=0NOPNOP;起始信号保持起始信号保持4ms4msNOPNOPCLR P1.6CLR P1.6;SCL=0;SCL=0RETRET第33页,此课件共49页哦 (2 2)终止信号)终止信号P P终止信号终止信号P P的时序波形如的时序波形如图图12-1112-11所示。所示。图图12-1112-11第34页,此课件共49页哦子程序如下:子程序如下:STOP:STOP:CLR P1.7 CLR P1.7
38、;SDA=0;SDA=0SETB P1.6SETB P1.6;SCL=1;SCL=1NOPNOP;终止信号建立时间终止信号建立时间NOPNOPSETB P1.7SETB P1.7;SDA=1;SDA=1NOPNOPNOPNOPCLR P1.6CLR P1.6CLR P1.7CLR P1.7RETRET第35页,此课件共49页哦(3 3)发送应答位)发送应答位/“0”/“0”发送应答位发送应答位/数据数据“0”0”,如,如图图12-1212-12所示。所示。图图12-1212-12第36页,此课件共49页哦子程序如下:子程序如下:ASK:ASK:CLR CLR P1.7P1.7;SDA=0;SD
39、A=0 SETB SETB P1.6P1.6;SCL=1;SCL=1 NOPNOP NOPNOP CLR CLR P1.6P1.6;SCL=0;SCL=0 SETB SETB P1.7P1.7;SDA=1;SDA=1 RETRET第37页,此课件共49页哦(4 4)发送非应答位)发送非应答位/“1”/“1”发送非应答位发送非应答位/数据数据“1”1”的时序波形如的时序波形如图图12-1312-13。图图12-1312-13第38页,此课件共49页哦子程序如下:子程序如下:NASK:NASK:SETB P1.7SETB P1.7;SDA=1;SDA=1SETB P1.6SETB P1.6;SCL
40、=1;SCL=1NOPNOPNOPNOPCLR P1.6CLR P1.6;SCL=0;SCL=0CLR P1.7CLR P1.7;SDA=0;SDA=0RETRET第39页,此课件共49页哦12.4.3 12.4.3 I I2 2C C总线模拟通用子程序总线模拟通用子程序I I2 2C C总线操作中除了基本的起始信号、终止信号、发送应答位和发送非应总线操作中除了基本的起始信号、终止信号、发送应答位和发送非应答位外,还有应答位检查、发送答位外,还有应答位检查、发送1 1字节、接收字节、接收1 1字节、发送字节、发送n n字节和字节和接收接收n n字节子程序。字节子程序。1 1应答位检查子程序应答
41、位检查子程序在应答位检查子程序在应答位检查子程序CACKCACK中,设置了标志位中,设置了标志位F0F0,当检查到正常的应答,当检查到正常的应答位时,位时,F0=0F0=0;否则;否则F0=1F0=1。参考子程序如下:。参考子程序如下:第40页,此课件共49页哦CACK:CACK:SETB P1.7SETB P1.7;SDA;SDA为输入线为输入线SETB P1.6SETB P1.6;SCL=1,SDA;SCL=1,SDA引脚上的数据有效引脚上的数据有效CLRCLRF0F0;预设预设F0=0F0=0MOVMOVC,P1.7C,P1.7;读入读入SDASDA线的状态线的状态JNCJNCCENDC
42、END;应答正常应答正常,则转则转F0=0F0=0SETBSETBF0F0;应答不正常应答不正常,F0=1,F0=1CEND:CEND:CLR P1.6CLR P1.6;子程序结束子程序结束,使使SCL=0SCL=0RETRET第41页,此课件共49页哦2 2发送发送1 1字节数据子程序字节数据子程序模拟模拟I I2 2C C的数据线的数据线SDASDA发送发送1 1字节数据的子程序,调用本子程序前,将欲发字节数据的子程序,调用本子程序前,将欲发送的数据送入送的数据送入A A中。参考子程序如下:中。参考子程序如下:S1BYTE:MOV R6,#08HS1BYTE:MOV R6,#08H;8;8
43、位数据长度送入位数据长度送入R6R6中中WLP:WLP:RLC A RLC A;A;A左移左移,发送位进入发送位进入C C MOV MOV P1.7,C P1.7,C;将发送位送入将发送位送入SDASDA引脚引脚 SETB P1.6SETB P1.6;SCL=1,;SCL=1,使使SDASDA引脚上的数据有效引脚上的数据有效 NOPNOP NOP NOP CLR P1.6 CLR P1.6;SDA;SDA线上数据变化线上数据变化 DJNZ DJNZ R6 R6,WLPWLP RET RET第42页,此课件共49页哦3 3接收接收1 1字节数据子程序字节数据子程序模拟从模拟从I I2 2C C数
44、据线数据线SDASDA读取读取1 1字节数据,并存入字节数据,并存入R2R2中,程序如下中,程序如下 R1BYTE:MOV R6,#08HR1BYTE:MOV R6,#08H;8;8位数据长度送入位数据长度送入R6R6中中RLP:RLP:SETB P1.7 SETB P1.7;置置SDASDA数据线为输入方式数据线为输入方式 SETB P1.6 ;SCL=1,SETB P1.6 ;SCL=1,使使SDASDA数据线上的数据有效数据线上的数据有效 MOVMOV C,P1.7 C,P1.7;读入读入SDASDA引脚状态引脚状态 MOVMOV A,R2 A,R2;RLC A RLC A;将将C C读
45、入读入A A MOV MOV R2,A R2,A;将将A A存入存入R2R2 CLR P1.6 CLR P1.6;SCL=0,;SCL=0,继续接收数据继续接收数据 DJNZ R6,RLPDJNZ R6,RLP RET RET第43页,此课件共49页哦4 4发送发送n n字节数据子程序字节数据子程序本子程序用来模拟主器件向本子程序用来模拟主器件向I I2 2C C的数据线的数据线SDASDA连续发送连续发送n n字节数据,从器字节数据,从器件接收。子程序的编写必须遵照件接收。子程序的编写必须遵照I I2 2C C总线规定的读总线规定的读/写格式进行,连写格式进行,连续发送续发送n n字节数据的
46、格式如下:字节数据的格式如下:其中,其中,SLAWSLAW为外围器件寻址字节(写)。为外围器件寻址字节(写)。本子程序本子程序定义了定义了如下一些如下一些符号单元符号单元:MSBUFMSBUF主器件发送数据缓冲区首地址的存放单元。主器件发送数据缓冲区首地址的存放单元。WSLAWSLA外围器件寻址字节(写)的存放单元。外围器件寻址字节(写)的存放单元。NUMBYTNUMBYT发送发送n n字节数据的存放单元。字节数据的存放单元。第44页,此课件共49页哦 在在调用本程序之前调用本程序之前,必须将寻址字节代码存放在,必须将寻址字节代码存放在WSLAWSLA单元;必须将要单元;必须将要发送的发送的n
47、 n字节数据依次存放在以字节数据依次存放在以MSBUFMSBUF单元内容为首地址的发送缓冲区单元内容为首地址的发送缓冲区内。内。调用本程序后调用本程序后,依次传送到外围器件内部相应的单元中。在写入过程,依次传送到外围器件内部相应的单元中。在写入过程中,外围器件的单元地址具有自动加中,外围器件的单元地址具有自动加1 1功能,即自动修改地址指针,这功能,即自动修改地址指针,这使传送过程大大简化。使传送过程大大简化。参考子程序如下:参考子程序如下:SNBYTE:SNBYTE:MOV R7,NUMBYTMOV R7,NUMBYT;发送字节数送发送字节数送R7R7 LCALL STARTLCALL ST
48、ART;调用起始信号模拟子程序调用起始信号模拟子程序 MOV A,WSLAMOV A,WSLA;发送发送SLAWSLAW寻址字节寻址字节LCALL S1BYTELCALL S1BYTE;调用发送调用发送1 1字节子程序字节子程序 LCALL CACKLCALL CACK;检查应答位检查应答位 第45页,此课件共49页哦JBJBF0,SNBYTEF0,SNBYTE;为非应答位则重发为非应答位则重发MOVMOVR0,MSBUFR0,MSBUF;主器件发送数据缓冲区首址送主器件发送数据缓冲区首址送R0R0SDATA:MOV SDATA:MOV A,R0A,R0;发送数据送发送数据送A ALCALLL
49、CALL S1BYTES1BYTE;调用发送调用发送1 1字节子程序字节子程序LCALL CACKLCALL CACK;检查应答位检查应答位JBJBF0,SNBYTEF0,SNBYTE;为非应答位则重发为非应答位则重发INCINCR0R0;修改地址指针修改地址指针DJNZDJNZR7,SDATAR7,SDATALCALL STOPLCALL STOP;调用发送子程序调用发送子程序,发送结束发送结束RETRET第46页,此课件共49页哦5 5读入读入n n字节数据子程序字节数据子程序本子程序用来模拟主器件向本子程序用来模拟主器件向I I2 2C C的数据线的数据线SDASDA读入读入n n字节数
50、据,从器件发字节数据,从器件发送。主器件读入送。主器件读入n n字节数据的格式如下:字节数据的格式如下:其中,其中,SLARSLAR为外围器件寻址字节(读)。为非应答位。为外围器件寻址字节(读)。为非应答位。本子程序本子程序定义了如下一些符号单元定义了如下一些符号单元:RSABYTRSABYT外围器件寻址字节(读)存放单元。外围器件寻址字节(读)存放单元。MRBUFMRBUF主机接收缓冲区存放接收数据的首地址单元。主机接收缓冲区存放接收数据的首地址单元。第47页,此课件共49页哦 在调用本程序之前,必须将在调用本程序之前,必须将寻址字节代码寻址字节代码存放在存放在RSABYTRSABYT单元。