欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    第12章单片机的串行扩展技术.ppt

    • 资源ID:3419998       资源大小:545.04KB        全文页数:49页
    • 资源格式: PPT        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第12章单片机的串行扩展技术.ppt

    第12章 单片机的串行扩展技术 单片机的串行扩展技术与并行扩展技术相比具有显著的优点,串行接口器件与单片机接口时需要的I/O口线很少(仅需14条),极大地简化了器件间的连接,进而提高了可靠性。串行接口器件体积小,因而占用电路板的空间小,仅为并行接口器件的10%,明显减少了电路板空间和成本。 除上述优点外,还有工作电压宽、抗干扰能力强、功耗低、数据不易丢失等特点。 因此,串行扩展技术在IC卡、智能仪器仪表以及分布式控制系统等领域得到了广泛的应用。,12.1 单总线接口简介 单总线(1-Wire bus)是由DALLAS 公司推出的外围串行扩展总线。它只有一条数据输入/输出线DQ,总线上的所有器件都挂在DQ上,电源也通过这条信号线供给,这种使用一条信号线的串行扩展技术,称为单总线技术。 各种器件,由DALLAS 公司提供的专用芯片实现。每个芯片都有64位ROM,厂家对每一个芯片用激光烧写编码,其中存有16位十进制编码序列号,它是器件的地址编号,确保它挂在总线上后,可以唯一被确定。除了器件的地址编码外,芯片内还包含收发控制和电源存储电路,如图12-1所示。,图12-1,这些芯片的耗电量都很小(空闲时几W,工作时几mW),工作时从总线上馈送电能到大电容中就可以工作,故一般不需另加电源。 图12-2为一个由单总线构成的分布式温度监测系统。多个带有单总线接口的数字温度计和多个集成电路DS1820芯片都挂在DQ总线上。单片机对每个DS1820通过总线DQ寻址。DQ为漏极开路,须加上拉电阻。 DALLAS公司为单总线的寻址及数据的传送提供了严格的时序规范,具体内容读者可查阅相关资料。,图12-2,12.2 SPI总线接口简介 SPI(Serial Periperal Interface)是Motorola公司推出的同步串行外设接口,允许单片机与多个厂家生产的带有该接口的设备直接连接,以串行方式交换信息。 使用条线:串行时钟SCK,主器件输入/从器件输出数据线MISO(简称SO),主器件输出/从器件输入数据线MOSI(简称SI)和从器件选择线。 SPI的典型应用是单主系统。该系统只有一台主器件,从器件通常是外围接口器件,如存储器、I/O接口、A/D、D/A、键盘、日历/时钟和显示驱动等。 图12-3是SPI外围串行扩展结构图。,图12-3,单片机与外围器件在时钟线SCK、数据线MISO和MOSI都是同名端相连。 扩展多个外围器件时,SPI无法通过数据线译码选择,故接口的外围器件都有片选端。在扩展单个SPI器件时,外围器件的片选端可以接地或通过I/O口控制;在扩展多个SPI器件时,单片机应分别通过I/O口线来分时选通外围器件。 在SPI串行扩展系统中,如果某一从器件只作输入(如键盘)或只作输出(如显示器)时,可省去一条数据输出(MISO)或一条数据输入(MOSI),从而构成双线系统(接地)。 SPI系统中从器件的选通依靠其引脚,数据传送软件十分简单,省去了传输时的地址选通字节。但在扩展器件较多时,连线较多。,在SPI串行扩展系统中,作为主器件的单片机在启动一次传送时,便产生8个时钟,传送给接口芯片作为同步时钟,控制数据的输入和输出。数据的传送格式是高位(MSB)在前,低位(LSB)在后,如图12-4所示。 数据线上输出数据的变化以及输入数据时的采样,都取决于SCK。但对于不同的外围芯片,有的可能是SCK的上升沿起作用,有的可能是SCK的下降沿起作用。,图12-4,SPI有较高的数据传输速度,最高可达1.05Mb/s。 Motorola公司为广大用户提供了一系列具有SPI接口的单片机和外围接口芯片,如存储器MC2814,显示驱动器MC14499和MC14489等芯片。 SPI外围串行扩展系统的主器件是单片机,也可以不带SPI接口,但是从器件一定要有具有SPI接口。 12.3 I2C串行总线的组成及工作原理 I2C串行总线只有两条信号线,一条是数据线SDA,另一条是时钟线SCL,所有连接到I2C总线上器件的数据线都接到SDA线上,各器件的时钟线均接到SCL线上, I2C总线系统的基本结构如图12-5所示。,它可以使具有I2C总线的单片机(如PHILIPS公司的8xC552 )直接与具有I2C总线接口的各种扩展器件(如存储器、I/O口、A/D、D/A、键盘、显示器、日历/时钟)连接。 对不带有I2C接口的单片机(如89C51)可采用普通的I/O口结合软件模拟I2C串行接口总线时序的方法,完成I2C总线的串行接口功能。 12.3.1 I2C串行总线概述 只有两条信号线,一条是数据线SDA,另一条是时钟线SCL,所有连接到I2C总线上器件的数据线都接到SDA线上,各器件的时钟线均接到SCL线上,系统的基本结构如图12-5所示。,图12-5,I2C的运行由主器件控制,主器件是指启动数据的发送(发出起始信号)、发出时钟信号、传送结束时发出终止信号的器件。 主器件可以具有I2C总线接口,也可以不带I2C总线接口。 从器件可以是存储器、LED或LCD驱动器、A/D或D/A转换器、时钟/日历器件等,从器件必须带有I2C总线接口。 I2C串行总线的SDA和SCL是双向的,带有I2C总线接口的器件的输出端为漏级开路,故必须通过上拉电阻接正电源(见图12-5中的两个电阻)。 总线空闲时,两条线均为高电平。由于连接到总线上的器件的输出级必须是漏级或集电极开路的,只要有一个器件输出低电平,都将使总线上的信号变低。SCL线上的时钟信号对SDA,线上的各器件间的数据传输起同步控制作用。SDA线上的数据起始、终止及数据的有效性均要根据SDA线上的时钟信号来判断。 标准I2C普通模式,数据的传输速率为100kb/s,高速模式可达400kb/s。 总线上扩展器件的数量不是由电流负载决定,而是由电容负载确定。I2C总线上每个节点器件的接口都有一定的等效电容,连接的器件越多,电容值越大,这会造成信号传输的延迟。总线上允许的器件数以总线上的电容量不超过400pF(通过驱动扩展可达4000pF),据此可计算出总线长度及连接器件的数量。每个连到I2C总线上的器件都有一个唯一的地址,扩展器件时同时也要受器件地址数目的限制。,I2C总线系统允许多主器件,为避免混乱,某一时刻究竟由哪一台主器件来控制总线要通过总线仲裁来决定。读者可查阅I2C总线的仲裁协议。当然,经常遇到的是以单片机为主器件,其他外围接口器件为从器件的单主器件情况。 12.3.2 I2C总线的数据传送 1数据位的有效性规定 在I2C总线上,每一数据位的传送都与时钟脉冲相对应,逻辑“0”和逻辑“1”的信号电平取决于相应电源VCC的电压。 I2C总线在进行数据传送时,时钟线为高电平期间,数据线上的数据必须保持稳定,只有在时钟线为低电平期间,数据线上的高电平或低电平状态才允许变化,如图12-6所示。,根据I2C总线协议,总线上数据传送的信号由起始信号(S)、终止信号(P)、应答信号(A)、非应答信号(A*)以及总线数据位组成。,图12-6,(1)起始信号(S)。在SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号,只有在起始信号以后,其他命令才有效。 (2)终止信号(P)。在SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。随着终止信号的出现,所有外部操作都结束。 起始和终止信号都是由主器件发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号出现后,总线就处于空闲状态。起始信号和终止信号如图12-7所示。,图12-7,若连接到I2C总线上的器件具有I2C总线的硬件接口,则很容易检测到起始和终止信号。 对于不具备I2C总线硬件接口的有些单片机(如89C51),为了检测起始和终止信号,必须保证在每个时钟周期内对数据线SDA取样两次。,(3)应答信号(A)。I2C总线在每传送一字节数据后都必须有应答信号,与应答信号线对应的时钟信号由主器件产生。这时发送方必须在这一时钟位上使数据总线处于高电平状态,以便接收方在这一位上送出应答信号,如图12-8所示。 应答信号在第9个时钟位上出现,接收方输出低电平为应答信号A。 (4)非应答信号(A*)。每传送完一字节数据后,在第9个时钟位上接收方输出高电平为应答信号,图12-8,2I2C总线上数据字节的传送与应答 数据传送时,传送的字节数(数据帧)没有限制,但是每一字节必须是8位长度。先传送最高位(MSB),每一个被传送的字节后面都必须跟随1位应答位(即一帧共有9位),见图12-8。 接收器件收到一个完整的数据字节后,有可能需要完成一些其他工作(如从器件正在进行实时性的处理工作而无法接收总线上的数据),不需要立刻接收下一字节,这时接收器件可以将SCL线拉成低电平,从而使主器件处于等待状态。直到接收器件准备好接收下一个字节时,再释放SCL线使之为高电平,从而使数据传送可以继续进行。,如果主器件对从器件进行了应答,但在数据传送一段时间后无法继续接收更多的数据,从器件可以通过对无法接收的第一个数据字节的“非应答”通知主器件,主器件则应发出终止信号以结束数据的继续传送。 当主器件接收数据时,它收到从器件发出的最后一个数据字节后,必须向主器件发出一个结束传送的信号。这个信号是由对从器件的“非应答”来实现的。然后,从器件释放SDA线,以允许主器件产生终止信号。 I2C总线上应答与非应答信号见图12-8。,12.4 AT89C51单片机扩展I2C总线器件的接口设计 随着微电子技术的发展,许多公司,如PHILIPS、Motorola、ATMEL和MAXIM等,都推出许多带有I2C总线接口的单片机及各种外围器件,如: 存储器、A/D转换器、D/A转换器、LED及LCD驱动器、日历时钟电路(且带有256×8 RAM),如PHILIPS公司的PCF8553(和PCF8570(256×8 RAM)等。,MAXIM公司的MAX127/128(A/D)和MAX517/518/519(D/A),ATMEL公司的AT24C系列存储器等。 I2C总线系统中的主器件通常由单片机来担当,它可以具有I2C总线接口,也可以不带I2C总线接口。从器件必须带有I2C总线接口。对于89C51单片机,没有配置I2C总线接口,这时可以利用通用并行I/O口线模拟I2C总线接口的时序,使89C51单片机不受没带I2C总线接口的限制。 因此,在许多单片机应用系统中,都将I2C总线的模拟传送技术作为常规的设计方法。,下面介绍89C51单片机扩展I2C总线器件的硬件接口设计,然后介绍用89C51 I/O口结合软件模拟I2C总线数据传送,以及数据传送模拟通用子程序的设计。 12.4.1 I2C总线器件的扩展接口电路 AT89C51单片机的I2C总线扩展的硬件接口设计比较简单。 图12-9为一个89C51单片机与具有I2C总线接口器件的扩展电路。 图12-9所示为一个AT89C51单片机与具有I2C总线接口器件的扩展电路。图中,AT24C02为E2PROM芯片,PCF8570为静态256 8 RAM,PCF8574为8位I/O口,SAA1064为4位LED驱动器。有关各种器件的具体工作原理和用法参见有关资料。,图12-9,12.4.2 I2C总线数据传送的模拟 AT89C51单片机为单主器件的工作方式下,总线数据的传送控制比较简单,没有总线的竞争与同步,只存在单片机对I2C总线上各从器件的读(单片机接收)、写(单片机发送)操作。通常可利用软件实现I2C总线的数据传送,即软件与硬件结合的信号模拟。 1典型信号模拟 为保证数据传送的可靠性,标准I2C总线的数据传送有严格的时序要求。 I2C总线的起始信号、终止信号、发送“0”及发送“1”的模拟时序如图12-10图12-13所示。,表12-1所示为I2C总线的时序特性。表中的数据为程序模拟I2C总线信号提供了基础。 由表可知,除了SDA、SCL线的信号下降时间为最大值外,其他参数只有最小值。这表明在I2C总线的数据传送中,可以利用时钟同步机制展宽低电平周期,迫使主器件处于等待状态,使传送速率降低。,对于一个新的起始信号,要求起始前总线的空闲时间TBUF大于4.7s,而对于一个重复的起始信号,要求建立时间TSU:STA也须大于4.7s。所以,图12-10所示的起始信号适用于数据模拟传送中任何情况下的起始操作。起始信号到第1个时钟脉冲的时间间隔应大于4.0s。 对于终止信号,要保证有大于4.7s的信号建立时间TSU.STO。终止信号结束时,要释放总线,使SDA、SCL维持在高电平上,在大于4.7s后才可以进行第1次起始操作。在单主器件系统中,为防止非正常传送,终止信号后SCL可以设置在低电平。 对于发送应答位、非应答位来说,与发送数据“0”和“1”的信号定时要求完全相同。只要满足在时钟高电平大于4.0ms期间,SDA线上有确定的电平状态即可。,2典型信号模拟子程序 主器件采用AT89C51,晶振频率为6MHz(即机器周期为2ms),对常用的几个典型信号的波形模拟如下。 (1)起始信号S 起始信号S的时序波形如图12-10所示。,图12-10,子程序如下: START: SETB P1.7 ;SDA=1 SETB P1.6 ;SCL=1 NOP NOP CLR P1.7 ;SDA=0 NOP ;起始信号保持4ms NOP CLR P1.6 ;SCL=0 RET,(2)终止信号P 终止信号P的时序波形如图12-11所示。,图12-11,子程序如下: STOP: CLR P1.7 ;SDA=0 SETB P1.6 ;SCL=1 NOP ;终止信号建立时间 NOP SETB P1.7 ;SDA=1 NOP NOP CLR P1.6 CLR P1.7 RET,(3)发送应答位/“0” 发送应答位/数据“0”,如图12-12所示。,图12-12,子程序如下: ASK: CLR P1.7 ;SDA=0 SETB P1.6 ;SCL=1 NOP NOP CLR P1.6 ;SCL=0 SETB P1.7 ;SDA=1 RET,(4)发送非应答位/“1” 发送非应答位/数据“1”的时序波形如图12-13。,图12-13,子程序如下: NASK: SETB P1.7 ;SDA=1 SETB P1.6 ;SCL=1 NOP NOP CLR P1.6 ;SCL=0 CLR P1.7 ;SDA=0 RET,12.4.3 I2C总线模拟通用子程序 I2C总线操作中除了基本的起始信号、终止信号、发送应答位和发送非应答位外,还有应答位检查、发送1字节、接收1字节、发送n字节和接收n字节子程序。 1应答位检查子程序 在应答位检查子程序CACK中,设置了标志位F0,当检查到正常的应答位时,F0=0;否则F0=1。参考子程序如下:,CACK: SETB P1.7 ;SDA为输入线 SETB P1.6 ;SCL=1, SDA引脚上的数据有效 CLR F0 ;预设F0=0 MOV C, P1.7 ;读入SDA线的状态 JNC CEND ;应答正常,则转F0=0 SETB F0 ;应答不正常,F0=1 CEND: CLR P1.6 ;子程序结束,使SCL=0 RET,2发送1字节数据子程序 模拟I2C的数据线SDA发送1字节数据的子程序,调用本子程序前,将欲发送的数据送入A中。参考子程序如下: S1BYTE:MOV R6,#08H ;8位数据长度送入R6中 WLP: RLC A ;A左移,发送位进入C MOV P1.7,C ;将发送位送入SDA引脚 SETB P1.6 ;SCL=1,使SDA引脚上的数据有效 NOP NOP CLR P1.6 ;SDA线上数据变化 DJNZ R6,WLP RET,3接收1字节数据子程序 模拟从I2C数据线SDA读取1字节数据,并存入R2中,程序如下 R1BYTE:MOV R6,#08H ;8位数据长度送入R6中 RLP: SETB P1.7 ;置SDA数据线为输入方式 SETB P1.6 ;SCL=1,使SDA数据线上的数据有效 MOV C,P1.7 ;读入SDA引脚状态 MOV A,R2 ; RLC A ;将C读入A MOV R2,A ;将A存入R2 CLR P1.6 ;SCL=0,继续接收数据 DJNZ R6,RLP RET,4发送n字节数据子程序 本子程序用来模拟主器件向I2C的数据线SDA连续发送n字节数据,从器件接收。子程序的编写必须遵照I2C总线规定的读/写格式进行,连续发送n字节数据的格式如下:,其中,SLAW为外围器件寻址字节(写)。 本子程序定义了如下一些符号单元: MSBUF主器件发送数据缓冲区首地址的存放单元。 WSLA外围器件寻址字节(写)的存放单元。 NUMBYT发送n字节数据的存放单元。,在调用本程序之前,必须将寻址字节代码存放在WSLA单元;必须将要发送的n字节数据依次存放在以MSBUF单元内容为首地址的发送缓冲区内。 调用本程序后,依次传送到外围器件内部相应的单元中。在写入过程中,外围器件的单元地址具有自动加1功能,即自动修改地址指针,这使传送过程大大简化。 参考子程序如下: SNBYTE: MOV R7,NUMBYT ;发送字节数送R7 LCALL START ;调用起始信号模拟子程序 MOV A,WSLA ;发送SLAW寻址字节 LCALL S1BYTE ;调用发送1字节子程序 LCALL CACK ;检查应答位,JB F0,SNBYTE ;为非应答位则重发 MOV R0,MSBUF ;主器件发送数据缓冲区首址送R0 SDATA: MOV A,R0 ;发送数据送A LCALL S1BYTE ;调用发送1字节子程序 LCALL CACK ;检查应答位 JB F0,SNBYTE ;为非应答位则重发 INC R0 ;修改地址指针 DJNZ R7,SDATA LCALL STOP ;调用发送子程序,发送结束 RET,5读入n字节数据子程序 本子程序用来模拟主器件向I2C的数据线SDA读入n字节数据,从器件发送。主器件读入n字节数据的格式如下:,其中,SLAR为外围器件寻址字节(读)。为非应答位。 本子程序定义了如下一些符号单元: RSABYT外围器件寻址字节(读)存放单元。 MRBUF主机接收缓冲区存放接收数据的首地址单元。,在调用本程序之前,必须将寻址字节代码存放在RSABYT单元。执行本子程序后,从外围器件指定首地址开始的n字节数据依次存放在以MRBUF单元内容为首地址的发送缓冲区中。外围器件的单元地址具有自动加1功能,即自动修改地址指针,简化了程序设计。参考子程序如下: RNBYTE: MOV R7,NUMBYT ;读入字节数n存入R7 RLP: LCALL START ;调用起始信号模拟子程序 MOV A,RSABYT ;寻址字节送入A LCALL S1BYTE ;写入寻址字节 LCALL CACK ;检查应答位 JB F0,RNBYTE ;非正常应答时重新开始 MOV R0,MRBUF;接收数据缓冲区的首地址送R0,SDATA: LCALL R1BYTE ;读入1字节到A MOV R0,A ;接收的数据存入缓冲区 DJNZ R7,ACK ;n字节未读完则跳转ACK LCALL NASK ;n字节读完则发送非应答位 LCALL STOP ;调用发送停止位子程序 RET ACK: LCALL ASK ;发送一个应答位到外围器件 INC R0 ;修改地址指针 SJMP SDATA 本章结束,

    注意事项

    本文(第12章单片机的串行扩展技术.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开