单片机教程3.doc_第1页
单片机教程3.doc_第2页
单片机教程3.doc_第3页
单片机教程3.doc_第4页
单片机教程3.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理及应用教案第十二讲课题:第五章 MCS-51 系统扩展技术二教学目的: 数据存储器和串行总线的扩展教学难点、重点: 串行总线的扩展I、 课程复习、引入单片机应用系统硬件的一般结构CPU与并行数据存储芯片的连接:控制线:/WR/WE; /RD /OEMCS-51芯片虽内部具有128B的RAM存储器,它们可以作为工作寄存器、堆栈、软件标志和数据缓冲器。仅仅片内的RAM存储器往往是不够的,可利用MCS-51的扩展功能,外接RAM电路,作为外部数据存储器以扩大存储器的容量。II、 本课内容第五章 MCS-51 系统扩展技术523串行数据存储器的接口方法目前在新一代单片机中使用的串行扩展接口有Motorola的SPI,NS公司的MICROWIRE/PLUS和PHILIPS公司的IIC总线。其中IIC总线具有标准的规范以及众多带IIC接口的外围器件,形成了较为完善的串行扩展总线。1 IIC总线IIC总线(InterIntegrated Circuit总线)是PHILIPS公司推出的两线串行多主总线。IIC总线最显著的特点是规范的完整性,结构的独立性和用户使用时的“傻瓜”化。IIC总线有严格的规范,如接口的电气特性、信号时序、信号传输的定义、总线状态设置、总线管理规则及总线状态处理等。在IIC总线规范中,总线上的器件节点具有极大的独立性,而且各节点上的器件和模块都有相对独立的地址编号。1) 总线结构IIC总线通过两根线:串行数据线SDA和串行时钟线SCL,在总线连接的器件之间传信息,采用软件寻址方式识别每个器件。主器件通常是单片机,产生时钟以允许数据传送,并启动、终止传送、任何被寻址的器件都是从器件。器件可以工作于发送或接收方式串行数据线SDA和串行时钟线SCL都是双向I/O线,通过上拉电阻接正电源电压VDD,因此电平取决于线上的正电源,也可以由用户自行改变。各个器件构成的节点之间通过数据线相互发送或接受串行码,时钟信号则起同步作用,根据它来判断信号的起始、终止以及有效性等。当总线空闲时,两根线都是高电平。2) 数据传输与起停/gdIIC总线上的主要通信协议:在总线进行正常数据传输时,如果时钟线CLK处于高电平,数据线DATA上必须保持稳定电平,接收器从总线上读取数据,高电平代表数据1,低电平为数据0。只有CLK为低电平时,才允许数据发送器变化数据,将待发送位写到数据线上。IIC总线数据交换的起始和停止信号靠时钟线和数据线的不同状态组合产生。时钟线保持高电平时,数据线电平由高到低的跳变为起始信号,由低到高的跳变为停止信号。总线时钟信号,由当前主控器发出,也就决定了什么时候发出起始和停止信号。主器件在发出起始信号后,送出地址字节,其中高7位是总线上各个器件的编码地址;第8位是方向位(R/W),表明主器件与从器件间的数据传输方向;0表示主器件对从器件进行写操作,1表示主器件对从器件进行读操作;第9位是接收方的应答;然后是8位数据字节+ACK(应答);最后是停止信号。3) 数据传输的三种方式(1) 主器件写(2) 主器件读(3) 组合方式4) 寻址约定IIC总线利用起始信号第一个(或前几个)字节传送地址,软件地址至少长7位。第一个字节的高7位是从器件地址;包括固定地址和可编程地址两部分,例如IIC总线分配给8路,7位DAC器件的地址为0100AAA,其中高4位0100是固定地址,低3位AAA是可编程地址。可以用固定地址对器件分类;而用可编程地址对系统中多个相同器件编址。固定地址第一字节的高4位为1111或0000时的特殊规定见表5-4。表5-4 IIC总线的特殊寻址字节第一字节意义A6 A5 A4 A3 A2 A1 A0R/W呼叫地址及读/写控制0 0 0 0 0 0 00起始字节(广播地址)0 0 0 0 0 0 01CBUS地址0 0 0 0 0 0 1 *为不同总线而保留的地址0 0 0 0 0 1 0*保留0 0 0 0 0 1 1*0 0 0 0 1 * *0 0 0 0 0 * *1 1 1 1 0 * *10位寻址第一个字节的前5位是11110,表示此次寻址是10位寻址方式,A1,A0两位和第二个字节的8位组成10位地址。方向位在第一个字节末尾位R/W位,各从器件应对之进行记录,再等待第二个字节。对第一个字节,应由高两位地址相符的所有器件给出应答,而对第二字节,只有地址完全相同的器件给出应答信号。10位地址扩大了地址空间,但IIC总线原有的协议不变,可以与7位地址同时接入总线。S11110XXR/WACKXXXXXXXXACK5) 设备内部总线与IIC总线的接口设备内部的并行总线与IIC总线的接口有两种方式:中断和查询。中断方式需要IIC总线专用的接口芯片;查询方式在不进行传输时,应尽量采用较低频率查询总线,使CPU有更多时间用于执行其他任务。6) 仲裁IIC总线支持多个主器件操作。当多个主器件申请总线控制权时,并没有优先次序,需要系统进行总线裁决,决定哪一个主器件能够得到总线控制权。2 串行EEPROM扩展IIC总线标准的串行存储器有24XXXX系列和85XXXX系列,包含1256KB等不同规格的容量。下面介绍24XXXX系列的基本原理的扩展实例。24XXXX的特点是单电源供电,工作电压范围为2.55.5V,CMOS低功耗技术(100kHz,2.5V和400kHz,5V兼容),自定时写周期(包含自动擦除),页面写周期的典型值为2ms,具有硬件写保护。24XXXX的结构和引脚如图5-20所示。其中:SCL串行时钟端。SDA串行数据端。WP写保护,当WP为高电平时存储器只读;当WP为低电平时存储器可读可写。A0、A1、A2片选或块选。SDA为漏极开路端,需接上拉电阻Vcc。数据的结构为1B。信号为电平触发,而非边沿触发。输入端内接有滤波器,能有效抑制噪声。自动擦除(逻辑1)在每一个写周期内完成。24XXXX采用IIC规程,运用主/从双向通信。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。主器件(通常为微控制器)和从器件可工作于接收器和发送器状态。总线必须由主器件控制,主器件产生串行时钟(SCL),控制总线的传送方向,并产生起始和停止条件。串行EEPROM为从器件。无论主控器件,还是从控器件,接收一个字节后必须发出一个确认信号ACK。起始和停止位控制总线有效。操作在起始位控制下开始,在停止位控制下结束。起始位SCL为低,SDA由高到低变化。停止位SCL为高,SDA由低到高变化。当SCL为高时,数据稳定有效。在SCL脉冲的低电平期间数据SDA改变,变为所传输的数据位。对每一个SCL脉冲,只能传送一位数据。1) 控制字节要求起始位以后,主器件送出8位控制字节。控制字节的结构(不包括起始位)如表5-5所示:表5-5控制字节的结构1 0 1 0A2 A1 A0R/WIIC从器件地址片选或块选读/写控制位说明:(1)控制字节的高4位用来确认从器件的类型,此4位码由Philips公司的IIC规程规定。若从器件为串行EEPROM,则这4位码为1010。通常串行EEPROM器件一直处于等待状态,直到1010码发送到总线上为止。当1010码发送到总线,其他非串行EEPROM从器件均不会响应。(2)控制字节的A2A1A0三个控制位为片选位,或者为存储器内部的块地址选择位。按3线8线译码组合,最多可有8片片选或块选。标准的IIC规程允许选择16KB的存储器,通过对几片器件或一个器件内的几个内部块的存取,可完成对16KB存储器的选择,如表5-6所示。表5-6 24XXXX的A2A1A0器件容量(kb)内部块数页面字节引脚控制字(位)A2 A1 A0A2A1A024C01118均为片选位与引脚匹配24C02218均为片选位与引脚匹配24C044216片选 片选 块选与引脚匹配24C088416片选 块选 块选与引脚匹配24C1616816均为块选与引脚匹配控制字节的A2A1A0的选择必须与外部引脚的硬件连接或者内部块选择匹配。24XXXX的存储矩阵内部分为若干块,每一块有若干页面,每一页面有若干字节,内部页缓冲器每次只能写入一页字节数据。 (3)控制字节最低位为读/写操作控制码。如果此位为1,下一个字节进行读操作(R);此位为0,下一个字节进行写操作(W)。当串行EEPROM产生控制字节确认位以后,主器件在总线上将传送相应的字地址或数据信息。2) 确认要求在每一个字节接收后,接收器件必须产生一个确认信号位ACK,主器件必须产生一个与此确认位相应的额外时钟脉冲。在此时钟脉冲的高电平期间,将SDA线拉到稳定的低电平为确认信号(ACK)。若不在从器件输出的最后一个字节中产生确认位,主器件必须发一个数据结束信号给从器件。在这种情况下,从器件必须保持数据线为高电平(用ACK表示),使得主器件能产生停止条件。注意,如果内部编程周期(烧写)正在进行,24XXXX不产生任何确认位。3) 写操作(1) 字节写在主器件发出起始信号以后,主器件发送写控制字节,即1010A2A1A00(其中R/W控制位为低电平)。指示从接收器件被寻址,由器件发送的下一个字节地址将被写入到24XXXX的地址指针。主器件接收来自24XXXX的另一个确认信号以后,发送数据字节,并写入到寻址的存储地址。24XXXX再次发出确认信号,同时主器件产生停止信号P,启动内部写周期。在内部写周期内24XXXX将不产生确认信号(见图5-21)。(2) 页面写如同字节写方式,先将写控制字节、字地址发送到24XXXX,接着发n个数据字节。主器件发送不多于一个页面字节的数据字节到24XXXX,这些数据字节暂存在片内页面缓存器中,在主器件发送停止信号以后写入到存储器。接收每一个字节以后,低位顺序地址指针在内部加1。高位顺序字地址保持为常数。如果主器件在产生停止信号以前要发送多于一页字的数据,地址计数器将会循环,并且先接收到的数据将被覆盖。像字节写操作一样,一旦停止信号被收到,则内部写周期将开始(见图5-22)。(3) 写保护当WP端连接到Vcc,24XXXX被用作串行ROM,此时编程将被禁止,即整个存储器为写保护状态。4) 读操作当从器件地址的R/W位被置为1时,启动读操作。存在三种基本读操作类型:读当前地址内容、读随意地址内容、读顺序地址内容。(1)读当前地址内容24XXXX片内包含一个地址计数器,此计数器保持被存取的最后一个字的地址,并在片内自动加1。因此,如果以前存取(读或者写操作均可)的地址为n,下一个操作从n+1地址中读出数据。在接收到从器件的地址中R/W位为1的情况下,24XXXX发送一个确认位并且送出8位数据字。主器件将不产生确认位(相当于产生ACK),但产生一个停止信号。24XXXX不再继续发送(见图5-23)。(2)读随意地址内容这种方式允许主器件读存储器任意地址的内容,操作如图5-24所示。主器件发1010A2A1A0后,发W位,再发读的存储器地址,在收到从器件的确认位ACK后,产生一个起始条件S,以结束上述写过程,再发一个读控制字节,从器件24XXXX在发ACK信号后发出8位数据,主器件发ACK后发一个停止位,24XXXX不再发后续字节。(4) 读顺序地址内容读顺序地址内容的方式与读随意地址内容的方式相同,只是在24XXXX发送第一个字节(数据n)以后,主器件不发ACK和停止信号,而是发ACK确认信号,控制24XXXX发送下一个顺序地址的8位数据字,直到x个数据读完(见图5-25)。(5) 防止噪声24XXXX使用了一个Vcc门限检测电路。在一般条件下,如果Vcc低于1.5V,门限检测器对内部擦/写逻辑不使能。SCL和SDA输入端接有施密特触发器和滤波器电路,即使在总线上有噪声存在的情况下,它们也能抑制噪声峰值以保证器件正常工作。5) 串行EEPROM和8051接口图5-26为8051单片机与4KB的24C04串行EEPROM的典型连接。图中P1.6提供24C04的时钟SCL,P1.7和24C04进行数据传送。A2、A1、A0为选片端,此处仅用一片24C04芯片,可将此三位直接接地,以使片选A2、A1、A0为全0。但24XXXX芯片也约定此三位如悬空即内部自动拉为地电平,故图5-26中A2A1A0对外悬空,即表示A2A1A0接地,所以在控制字节中A2A1A0三位均为0。图中的WP为EEPROM的写保护信号,高电平有效。因要进行写入操作,所以应把它接低电平。下面为模拟IIC总线数据传送编程。24XXXX系列是采用了IIC接口的串行EEPROM器件。而51系列单片机大多无IIC总线接口功能,这就要靠软件来模拟了。IIC总线在标准方式下的最高时钟频率为100kHz,时钟信号最小低电平时段为4.7us,高电平时段不得小于4 us,这就决定了器件的最大数据传送率不大于10kb/s。可用展宽tLOW的办法来降低数据传送率。用普通I/O线模拟IIC总线数据传送时,必须遵从定时规范。图5-27单独绘出了启动、停止、发送应答ACK(0数据位)以及发送反态应答位(1数据位)的时序规范。现将常用的程序段编成子程序。#include#includeTypedef unsigned char byte;Typedef unsigned int word;Sbit SDA =P10;Sbit SCL =P11;/*文件名:c24cx2.c*描 述:IIC总线存储器驱动,供调用 有函数:sartIIC( ),stopIIC( ),outbyte( ),Inbyte( ),Ack-IIC( ),read24( ),write24( )*/ #include Void startIIC(void) SDA=1; -nop-( ); -nop-( ); -nop-( ); -nop-( ); -nop-( ); SDA =0; -nop-( ); -nop-( ); -nop-( ); -nop-( ); -nop-( ); SCL=0; -nop-( ); /zg Void stopIIC(void) SDA=0; SCL=1; -nop-( ); -nop-( ); -nop-( ); -nop-( ); -nop-( ); SDA=1; -nop-( ); -nop-( ); -nop-( ); -nop-( ); /*函数名:outbyte *描 述:向IIC总线送出一个字节SDA *输 入:要写入的字节 *返 回:1,写入成功;0,写入失败*/bit outbyte(byte val) bit ack; byte i=8; do SDA=val&0x80; SCL=1; val=1; _nop_( ); _nop_( ); SCL=0; _nop_( ); while(-i!=0); _nop_( ); SDA=1; _nop_( ); _nop_( ); SCL=1; _nop_( ); _nop_( ); ack=!SDA;/读入SDA并取反从器件发来的ack信号,正常的ack应该是低/电平。 SCL=0; return ack;/如果ack=0,写失败。 /*函数名:inbyte *描 述:从IIC总线读出一个字节 *输 入:无 *返 回:从IIC总线读出的字节 */ byte inbyte(void) byte t=0,i=8; SDA =1; Do -nop-( ); SCL=1; t=1; if (SDA) t+; -nop-( ); SCL=0; while(-i!=0); return t; /*函数名:Ack-IIC *描 述:IIC总线的应答信号Acknowledge *输 入:1位,正应答输入1;负应答输入0; *返 回:无*/ Void Ack-IIC(bit a) SDA=a; -nop-( ); -nop-( ); SCL=1; -nop-( ); -nop-( ); -nop-( ); -nop-( ); -nop-( ); SCL=0; -nop-( ); -nop-( );

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论