基于C51的扩展存储电路设计.docx
- 文档编号:3851504
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:25
- 大小:1.02MB
基于C51的扩展存储电路设计.docx
《基于C51的扩展存储电路设计.docx》由会员分享,可在线阅读,更多相关《基于C51的扩展存储电路设计.docx(25页珍藏版)》请在冰豆网上搜索。
基于C51的扩展存储电路设计
基于I2C协议存储芯片的扩展存储电路设计
摘要
本论文实现对单片机数据存储的扩展设计。
由于单片机生产工艺简单,抗干扰能力强,是嵌入式系统中普遍使用的核心器件,但在一些数据采集系统或实时控制系统中要求的数据量很大,内部数据存储器的容量有可能不够,这就需要扩展单片机容量。
本设计选择基于I2C的扩展存储设计可以很好的解决这一问题。
本论文首先介绍了单片机的系统结构、工作原理和主要性能特点,根据单片机的串口结构和工作原理,采用RS-232接口标准,实现上位机到下位机的基本数据通信。
然后阐述I2C总线协议的的特点及通信协议规则,进而介绍基于此协议的AT24C512存储芯片。
最后介绍扩展存储的设计流程:
利用仅靠数据线(SDA)和时钟线(SCL)实现完善的半双工数据传输,即CPU与各个存储芯片仅靠这两根线实现信息交换。
此设计的I2C总线系统与传统的并行总线系统相比具有结构简单、可维护性好、易实现系统扩展、易实现模块化标准化设计、可靠性高等优点。
关键词:
MCS-51;串口通信;RS-232C标准;I2C协议
TheDesignofExpansionStorageMemorybasedonI2CProtocol
Abstract
ThethesisisaboutthedesignofexpansionstoragememoryabouttheMCU.AstheMCU’Sproductiontechnologyaresimpleandstronganti-interferenceability,itiscommonlyusedasacoredevicesinembeddedsystems,butinsomedataacquisitionsystemsorreal-timecontrolsystems,whichrequirealargeamountofdata,theinternaldatacapacitymaynotbeenough.ItneedstoexpandthecapacityofMCU.ThedesignisverywelltosolvethisproblemthatbasedontheI2CprotocolwithexpandingthecapacityofMCU.ThethesisfirstlyintroducedtheMCUsystemstructure,theprincipleandthemainperformancecharacteristicofMCU.Inviewofthis,itcommunicatedbetweenthemastercomputer(computer)anddrivencomputer(MCS-51)withRS-232interfacestandard.SecondlyintroducedtheI2Cbusprotocolandcommunicationcharacteristicsofthisprotocolrules,andthenitelaboratedtheEEPROMmemorychipAT24C512,whichbasedontheI2Cbusprotocol,andlastitintroducedthedesignproposalandconcretecontentoftheexpansionofstorage.Theoverallsystemonlydependsonthedataline(SDA)andtheclockline(SCL)thatrealizestheconsummationhalf-duplexdatatransmission.TheCPUonlydependsonthesetwolineswitheachperipherycomponenttorealizetheexchangeofinformation.TheI2Cbussystemcompareswiththetraditionalparallelbussystemwhichhasthesimplestructure,thegoodmaintainability,theeasytorealizethesystemofexpantionandtorealizethemodularstandardizationdesign,thereliablehighermerit.
Keywords:
MCS-51;serialcommunication;RS-232standard;I2Cprotocol
.
目录
论文总页数:
23页
1引言1
1.1课题背景1
1.2本课题研究的意义1
2单片机简介1
2.1嵌入式单片机的概念1
2.2MCS-51单片机的主要性能特点2
2.3C51系列单片机的硬件组成3
2.4单片机的最小系统3
3串行通信及其接口4
3.1通信基本概念4
3.2单片机串行口的工作原理5
3.2.1串行口介绍5
3.2.2波特率的计算6
3.2.3串行口的初始化6
3.3串行通信接口标准6
3.3.1RS-232C接口6
3.3.2本设计串口的接口电路7
4I2C总线7
4.1I2C总线基本概述7
4.2I2C总线的主要特点8
4.3I2C总线的基本原理8
4.3.1I2C总线的基本接口电路8
4.3.2I2C总线的寻址方式9
4.3.3I2C总线数据传输格式9
4.4串行EEPROM芯片AT24C51210
4.4.1AT24C512的主要特性11
4.4.2管脚说明11
4.3接口电路设计12
4.4本设计的硬件基础12
5扩展存储软件程序的设计13
5.1对芯片的读写操作基本原理13
5.1.1对芯片的写操作13
5.1.2对芯片的读操作13
5.3对芯片的写操作流程图14
5.3.1写1Byte到AT24C512的程序流程图14
5.3.2写一页数据到AT24C512中14
5.3.3程序编写的总流程图16
5.4程序设计相关子程序16
5.4.1程序读写子程序16
5.4.2对4片芯片的读操作子程序17
5.4.3初始化总程序18
6扩展存储的实物演示19
6.1通过串口调试助手模拟数据读写状态19
6.2硬件实物图19
结论20
参考文献21
致谢22
声明23
1引言
1.1课题背景
单片机(SingleChipMicrocomputer)是将计算机的几个基本组成部分集成到一块芯片中,使得一块集成电路芯片就是一部微型计算机,具备一般计算机的功能。
它是面向控制的,在很多控制场合并不需要大量而复杂的数学计算,而单片机的生产工艺简单,抗干扰能力又比较强,因此大量应用于各种环境。
I2C(Inter-IntegratedCircuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备的通信协议。
I2C总线产生于80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。
例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。
可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。
如温度传感芯片TM275/MAX6625,数模转换DAC芯片DAC5574,数据采集ADC芯片ADS1100(16bitADC)/MAX1238(12bitADC);实时时钟芯片DS1307/PCF8563。
I2C总线最主要的优点是其简单性和有效性。
由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。
总线能够以10Kbps的最大传输速率支持40个组件。
I2C总线的另一个优点是,它支持多主控,其中任何能够进行发送和接收的设备都可以成为主总线。
一个主控能够控制信号的传输和时钟频率。
当然,在任何时间点上只能有一个主控[5]。
1.2本课题研究的意义
单片机以其体积小、价格低、抗干扰性好等特点,在现代控制系统中常用在操作现场进行数据采集,以及实现现场控制。
而无论什么型号的单片机,内部都配置了一定容量的数据存储器,一般为256B。
在一般的应用场合,中间或临时的数据量都不会很大,内部的数据存储已经够用。
但对于一些数据采集系统,它们的数据量很大,内部的数据存储器的容量有可能不够用。
因此在这种情况下,就要扩展外部数据存储器,该设计选择基于I2C的扩展存储设计,扩展容量到64K×4B。
2单片机简介
2.1嵌入式单片机的概念
嵌入式单片机,是将整个计算机系统集成在一块芯片内,其核心部件是各种类型的嵌入式微处理器,芯片内部集成程序存储器、数据存储器、总线及其逻辑、定时、计数器,WatchDog、I/O、串行口、A/D、D/A、Flash存储器、E2PROM等各种必要功能和外部设备。
嵌入式单片机已成为机电产品的心脏部件,控制着机电产品的工作与操作应用。
嵌入式单片机的特点是单片化、体积大大减小、功耗和成本降低、可靠性得到提高、软件代码少、自动化程度高和响应速度快等[5]。
8051系列有许多厂家生产的多种型号,他们在片内存储器容量、中断系统、各种功能的外围模块、可以达到的时钟频率和处理速度有很大的不同,但是,它们的硬件系统都有一个相同的基本结构。
下面以8051为例介绍单片机的工作原理、主要性能特点、内部结构。
图2-1为单片机工作原理图:
图2-1MCS-51单片机工作原理方块图
2.2MCS-51单片机的主要性能特点
1)片内存储容量较小
原因是受集成度的限制,ROM一般小于8KB,RAM一般小于256B,但可以在外部扩展,通常ROM,RAM可分别扩展至64KB。
2)可靠性高
因为芯片是按工业测控环境要求设计的,故抗干扰的能力优于PC机。
系统软件(如:
程序指令、常数、表格)固化在ROM中,不易受病毒破坏。
许多信号的通道均在一个芯片内,故运作时系统稳定可靠。
3)便于扩展
片内具有计算机正常运行所必需的部件,片外有很多供扩展用的(总线,并行和串行的输入/输出)管脚,很容易组成一定规模的计算机应用系统。
4)控制功能强
具有丰富的控制指令:
如条件分支转移指令,I/O口的逻辑操作指令,位处理指令。
5)实用性好
体积小,功耗低,价格便宜,易于产品化[5,6]。
2.3C51系列单片机的硬件组成
图2-28051/52总体结构框图
2.4单片机的最小系统
图2-3单片机最小系统电路图
1)电源电路:
单片机与TTL电平是兼容的,因此单片机的供电电源一般为+5V,随着各种工业上的要求不断提高,单片机也可以在低电压下工作,一般情况下如果没有作特殊说明,VCC都代表+5V电压。
但一般电路中电源电压都不能超过+5V。
2)复位电路:
单片机在启动运行时都需要复位,以使CPU和系统的其它部件处于一个确定的初始状态。
复位电路一般有两种形式,一种称为上电复位,一种称为按键复位。
3)振荡电路:
振荡电路有两种形式,一般我们采用外接晶体振荡的方式,因为在大多数情况下,我们要外接一个振荡信号会大大增加电路的复杂程度。
4)程序存储器选择端:
EA管脚是内部和外部程序存储器的访问控制信号,当为高电平时既可访问片内程序存储器,也可访问外部程序存储器,为低时只访问外部程序存储器[7]。
3串行通信及其接口
3.1通信基本概念
通信有并行通信和串行通信两种方式,在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。
并行通信是将数据字节的各位用多条数据线同时进行传送。
并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难,如图3-1所示:
图3-1并行通信数据传输示意图
串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送,其特点:
传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂,如图3-2所示:
图3-2串行通信数据传输示意图
在串行通信中,数据通常是在两个端(如终端和微机)之间进行传送,按照数据流的方向可分为3种基本的传输方式:
单工、半双工、全双工、三种传输方式。
端口通信——同步传输和异步传输
同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。
异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。
为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。
3.2单片机串行口的工作原理
3.2.1串行口介绍
8051系列单片机的各IO口在通电时默认为高电平,有32根输入/输出线,组成4个8位并行输入/输出接口,分别称为P0口、P1口、P2口和P3口。
这4个接口可以并行输入或输出8位数据;也可按位使用,即每一根输入/输出线都能独立地用作输入或输出。
每个端口都由锁存器、输出驱动器、输入缓冲器组成。
其中P0口是一个双向口,它可以直接用于对外部存储器的读写操作,输入和输出数据信息,所以也称为数据总线口;P1口是标准的准双向口,一般用作普通的输入输出口;P2口作通用的I/O口使用;P3口是一个双功能口,既可作通用口使用,也用作特殊功能口使用,一般情况都是用它的第二功能。
在P3口中,P3.0与P3.1提供全双工通信的串行口,同时能够进行发送和接收[7]。
串行口控制寄存器:
SBUF与SCON
数据缓冲寄存器SBUF:
串行口缓冲寄存器SBUF是两个相互独立的接收缓冲器和发送缓冲器,它们共用同一个地址。
接收缓冲器用于存放接收到的数据,只能读出不能写入;发送缓冲器用于存放要发送的数据,只能写入不能读出。
串行口控制寄存器SCON:
SCON是串行口的控制和状态寄存器,SCON的各位可以位寻址,可以直接用各位的名字来进行操作。
各位定义如下表3-1所示[7]:
表3-1SCON的各功能位定义
D7
D6
D5
D4
D3
D2
D1
D0
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
SM0与SM1作工作模式选择,其选择方式如表3-2所示:
表3-251单片机串口工作模式介绍
SM0
SM1
工作方式
说明
波特率
0
0
模式0
同步移位寄存器
fosc/12
0
1
模式1
10位异步收发
由定时器控制
1
0
模式2
11位异步收发
fosc/132或fosc/64
1
1
模式3
11位异步收发
有定时器控制
REN:
允许接收位。
由软件置位或清0。
当此位为1时,允许接收;当此位为0时,禁止接收;
RI:
发送中断标志位。
在模式0中,发送完第8位数据时,由硬件置位。
在其它模式中,发送停止位之初,由硬件置位RI=1时申请中断,CPU响应中断后发送下一帧数据,该位必须用软件来清除;
TI:
接收终端标志位。
在模式0中,接收第8位结束时,由硬件置位。
在其它模式中,在接收停止位时,由硬件置位。
TI=1,申请中断,请求CPU取走数据。
而在工作模式1中,SM2=1时,若未接收到有效的停止位,则不会对TI置位,该位必须用软件清除。
3.2.2波特率的计算
在串行通信中,收发双方对发送或接收数据的速率要有约定。
通过软件可对单片机串行口编程设定为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。
串行口的四种工作方式对应三种波特率,由于输入的移位时钟的来源不同,所以各种方式的波特率计算公式也不相同,具体计算公式如下:
1)方式0的波特率=fosc/12.
2)方式2的波特率=(2×SMOD/64)·fosc.
3)方式1的波特率=(2×SMOD/32)·(T1溢出率).
4)方式3的波特率=(2×SMOD/32)·(T1溢出率).
当T1作为波特率发生器时,最典型的用法是使T1工作在自动重装入的8位定时器方式(即方式2,且TCON为TR1=1,启动定时器)。
这时溢出率取决于TH1中的计数值[4]。
T1溢出率=fosc/{12×[256-(TH1)]}
3.2.3串行口的初始化
在工作之前,应对串行口进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。
具体步骤如下:
1)确定T1的工作方式(编程TMOD寄存器)。
2)计算T1的初值,装载TH1、TL1。
3)启动T1(编程TCON中的TR1位)。
4)确定串行口控制(编程SCON寄存器)。
5)串行口在中断方式工作时,要进行中断设置(编程IE、TI寄存器)。
6)打开各中断标志(编程EX0、ES、EA)。
3.3串行通信接口标准
3.3.1RS-232C接口
RS-232C是EIA(美国电子工业协会)1969年修订RS-232C标准。
RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。
RS-232C接口规定使用9针连接器,连接器的尺寸及每个插针的排列位置都有明确的定义。
3.3.2本设计串口的接口电路
本设计使用MAX232芯片实现串口通信的电平转换,接口电路如图3-3所示:
图3-3本设计串口通信的电平转换
其中的RXD,TXD端分别与单片机的RXD,TXD相连,能够实现RS-232电平的转换,顺利进行上位机与下位机串口的信号传输。
4I2C总线
4.1I2C总线基本概述
在现代通信系统中,一个系统中有众多的IC需要进行相互之间以及与外界进行通信。
为了提高硬件和简化电路的设计,PHILIPS开发了一种用于内部IC控制的、简单的双向两线串行总线I2C。
其数据传输率在标准模式下为100kb/s,但随着数据传输速率和应用功能的迅速增加,I2C总线也增强为快速模式(400kb/s)及高速模式(3.4Mb/s)。
它采用二线制传输,一根是数据线SDA,另一根是时钟线SCL,所有I2C器件都连接在同名端的SDA和SCL上,每一器件有一个唯一的地址。
它是一个多主机总线,即总线上可以有一个或多个主机(或称主控制器件),总线运行由主机控制[5]。
I2C总线它支持多主和主从两种工作方式:
1)多主方式,即总线上可以有多个主机的工作方式。
I2C总线需要通过硬件和软件仲裁主机对总线的控制权,由于存在仲裁总控制权的问题,因而I2C总线的协议模拟非常困难。
2)主从方式中,系统中只有一个主机,总线上的其它器件都是具有I2C总线接口的外围器件(称为从机或从器件),总线只有主机对I2C总线从器件的读写访问,没有总线的竞争问题。
这种方式下只需要单片机模拟主发送和主接收时序,就可以完成对器件的读写操作(SCL时钟信号由主机产生)。
这种情况下,I2C总线时序可以模拟,可以使I2C总线的使用不受主机必须带I2C总线接口的限制。
4.2I2C总线的主要特点
1)总线的驱动能力强。
I2C总线的外围扩展器件都是COMS型的,功耗极低。
总线上扩展的I2C器件的数量主要受到器件地址的限制。
2)总线只有两根线。
不论功能差别有多大,都是通过串行时钟线和串行数据线连接到I2C总线上的。
3)每个连接到总线上的器件地址由芯片内部硬件电路和外部地址共同决定,避免了片选线的连接方法,并建立了简单的主从关系。
4)它是一个真正的多主总线,带有竞争监测和仲裁电路,多个主机任意发送而不破坏总线上的数据。
5)同步时钟和数据线配合产生可以作为启动、应答、停止或重新启动串行发送的握手信号[5]。
4.3I2C总线的基本原理
4.3.1I2C总线的基本接口电路
由于I2C总线为双向同步串行总线,因此I2C总线接口内部为双向传输电路,即各器件连接到总线的输出端是漏极开路输出或集电极开路输出的电路结构,故两条总线上必须有上拉电阻R,R一般选择1KΩ~10KΩ。
典型的I2C总线接口电路如图4-1所示[4]:
图4-1I2C总线的接口电路
4.3.2I2C总线的寻址方式
I2C总线启动信号后,主器件发出的第一个字节数据用来选择从器件地址,其中前7位为地址码,第8位为方向位(R/W)。
方向位为0表示发送,即主器件把信息写到所选择的从器件;方向位为1表示主器件将向从器件读信息。
启动信号后,系统中的各个器件将自己的地址和主器件发送到总线上的地址进行比较,如果与主器件发送到总线上的地址一致,则该器件即为被主器件寻址的器件,是接收信息还是发送信息则由第8位(R/W)确定,寻址字节的格式如表4-1所示[4]:
表4-1I2C总线的寻址方式
位序
D7
D6
D5
D4
D3
D2
D1
D0
寻址字节
寻址地址
引脚地址
方向位
DA3
DA2
DA1
DA0
A2
A1
A0
R/W
4.3.3I2C总线数据传输格式
1)I2C总线信号
主器件和从器件之间的一次数据传送为一帧。
一帧由启动信号和若干个数据字节以及应答位和停止信号组成。
I2C总线是按位传送的,在时钟线SCL的一个时钟周期内只能传送一位数据,而且数据线SDA上的信号电平在SCL为高电平期间必须稳定(除启动信号和停止信号外),数据线上的信号变化只允许在SCL的低电平期间发生,如图4-2所示:
图4-2I2C总线接口电路时序
在I2C总线技术规范中,启动信号和结束信号以及应答信号的定义如图4-3所示。
当时钟线SCL为高电平时,主器件向SDA线上送出一个由高到低的电平,表示开始信号,总线上出现开始信号后,就认为总线处在工作状态;当SCL线为高电平时,主器件向SDA线上送出由低到高的电平,表示结束信号,总线上出现结束信号后,就被认为总线处于不忙或空闲状态。
I2C总线上第9个时钟脉冲对应于应答位,相应数据线上低电平时为应答信号,高电平时为非应答信号。
图4-3开始信号、结束信号和(非)应答信号
2)I2C总线上的数据传输格式
在I2C总线上每次传送的数据字节数不限,但每一个字节必须为8位,而且每个传送的字节后面必须跟一个认可位(第9位),也叫应答位(ACK),数据传送每次都是先传送最高位,通常从器件在接收到每一个字节后都会做出响应,准备接收下一个字节,主器件可继续传送,如果从器件正在处理一个实时事件而不能接收数据时,例如正在处理一个内部中断,在这个中断处理完之前就不能接收I2C总线上的数据字节,这时可以在应答信号后使时钟SCL线保持低电平,控制总线暂停。
当接收器准备好接收下一个字节时再释放时钟线SCL,使数据传输线继续进行[4]。
如表4-2、表4-3和表4-4所示为器件的写读操作格式:
其中S为开始信号,P为结束信号,A为应答信号,DW为对器件地址写,DR为对器件地址读,DE器件地址内的偏移地址,DATA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 C51 扩展 存储 电路设计