医学系统设计实验

更新时间:2024-04-10 07:06:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《电子设计与实践》实验手册

1

《电子设计与实践》实验手册

目 录

§1、实验要求

§1.1、简要介绍 §1.2、实验方案 §1.3、实验要求 §1.4、实验条件 §1.5、工作步骤 §1.6、实验平台

§1.7、系统的调试环境

§2、关于有关电子线路电子文档的制作

§1.1、说明

§1.2、逻辑图的制作 §1.3、网络表文件的形成 §1.4、印刷线路板的制作

§3、89S52系列处理机的编程(keil C51)

§3.1、关于Keil C的数据类型以及使用 §3.2、关于Keil C的中断 §3.3 再入函数

§3.4 Keil C存储模式 §3.5 Keil编译器的使用

§4、89S52系列处理机目标程序的在线编程(ISP)

§4.1、S51系列处理在线编程结构 §4.2、在线编程仿真结构

2

《电子设计与实践》实验手册

§1、实验要求

§1.1、简要介绍

电子线路设计是一门实践性非常强的课程,目的是希望通过本课程的学习能提高大家的实际动手能力,在电子线路设计方面有一定的提高,为将来的工作或进一步的学习打下良好的基础。

实验内容包括硬件和软件二部分。要求根据硬件结构和所要求的系统功能进行程序设计,利用各种电子线路设计工具,实现系统并对系统进行调试,最终实现系统的功能。

§1.2实验方案

方案见图1.1。

图1.1

图1所示的逻辑图在结构上分四部分: 1)放大部分:能对信号进行有效的放大;

2)51小系统部分:以51S系列处理机为核心。四路A/D输入、一路D/A

输出、RS232接口。能独立进行对模拟信号的处理过程;也可以通过RS232接口与计算机组成系统。

3)显示键盘部分:独立的显示键盘结构可以为51小系统提供输入输出界

面,方便系统的控制。

4)存储部分:在对小系统内存有要求的情况下可以扩充RAM空间以符合

实际需求。

图1中“调试”与“计算机ISP”部分是用于程序的调试。

按图1所示的系统,我们可以把它定义为不同用途的实际系统,比如: (1)数据采集系统:

51小系统直接提供模拟信号输入和一路D/A输出。如果加上适当的内存,可以对数据进行存储和处理(如:滤波等)。 (2)虚拟仪器:

通过RS232接口与计算机连接,在PC端配以适当的控制程序可以实现虚拟仪器(如:虚拟示波器)。 (3)心电监视仪:

3

《电子设计与实践》实验手册

在虚拟仪器结构的基础上,实现放大部分的功能,用示波器可以观察心电信号。

(4)心电监护系统:

在心电监视仪的基础上,通过RS232接口与计算机连接。在计算机上开发符合临床要求的软件,使系统对心电有存档、分析、回顾等功能的系统。

§1.3、实验要求

本实验为大家提供了系统的基本结构,要求大家在此基础上具体定义系统的功能。并且根据现有的条件,进行程序设计和调试,实现系统的功能并给出系统的主要参数。

§1.4、实验条件

系统以ATMEL51S系列处理机为核心。

程序的设计与编译可以选择任何51软件模拟器(伟福仿真工具、Keil系列仿真工具)进行仿真和编译,由此产生51目标代码,形成目标文件(.hex)。ATMEL提供的Atmel Microcontroller ISP Software可以将目标文件用AT89ISP编程电缆通过计算机并口下载入51S处理机中。程序设计可以选用汇编语言,也可以用C语言。

用PROTEL99进行电子线路的设计,形成电子线路逻辑图和交付外加工的印刷线路板文件。

**软件工具

Protel99

Atmel Microcontroller ISP Software Keil uVision2

§1.5、工作步骤

实验分组:1或2人一组; 第一阶段:

根据实验方案,详细了解所提供的实验板(硬件结构)。; 定义系统;进行程序设计。 第二阶段:

系统调试。 提交报告; 考核。

§1.6、实验平台

硬件实验平台见图6.1。图中目标板是我们最终要实现的系统电路板。目标板上的处理机是89S51,这种类型的处理机可以实现在系统编程。在系统编程的途径如图中所示,是通过计算

4

图6.1 《电子设计与实践》实验手册

机的并行口经下载板与目标板相连。

下载板对应于图(1)中的调试部分。

关于在线编程具体技术细节见图7.2以及文档AT89isp.pdf ,图6.2是下载板的逻辑结构图。89S51的编程模式可以参阅文档89S51文档。

图 6.2

在线下载工具Microcontroller ISP Software的使用见文档User_man.pdf。

§1.7、系统的调试环境

选取一个语言开发工具,建议用C51写程序,开发工具可以是Keil_C。由此产生处理机目标代码文件,目标代码通过ISP写入89S51,实现目标板的调试。

5

《电子设计与实践》实验手册

§2、关于有关电子线路电子文档的制作

§1.1、说明

关于电子线路文档的制作工具有多种,protel是常用的一种,其他比如还有PowerLogic等,众多厂家都支持这些工具,设计者按照设计要求形成相关电子文件后,向厂家提供电子文件即可,厂家会按照文件描述的内容制造出印刷线路板。

下面以protel为对象,介绍电子文档的制作过程,介绍内容精练为足以形成文档的必须步骤,其他内容有完整的出版材料可共参考。

§1.2、逻辑图的制作

protel以数据库的形式组织设计文档。因此第一步是新建立数据库文件*.ddb建立过程:

主菜单File→new→保存ddb文件

选中新建立的设计数据库,建立逻辑图文档:

主菜单File→new→选择schematic document图标

将在设计数据库中形成一个默认文件名为Sheet1.sch的逻辑图文档。在设计窗口双击该文档图标,可以打开新建立的逻辑图文档。

逻辑图的制作过程将涉及以下内容:电路图纸尺寸设置、在图中放置电子元件、布线、文件保存、逻辑图从数据库文件中导出。

1)电路图纸尺寸设置:

主菜单Design→Option→在Document Option窗口中Standard Style中选择

一般情况下选择A4号图纸,如果在设计过程中发现原来选择的图纸太小,可以再按上述的操作过程进行选择更大号的图纸。注意:由大号图纸变更为小号图纸可能会丢失数据。

2)在图中放置电子元件:放置元件涉及到元件库,元件库来源有二个,一是系统自带的元件库、二是用户自己设计的元件库。在打开元件库管理浏览器(Browse Sch)可以填加或删除元件库文件。系统自带的元件库文件Miscellaneous.ddb中包括了一般常用的电子元件逻辑图。如果逻辑元件文件已经加入,就可以在逻辑图中放置电子元件,放置元件的方法有二种,如果对逻辑元件比较熟悉的情况下可以直接在逻辑图的空白处点鼠标右键,在弹出的快捷菜单中选“place Part…”; 另外的方法在元件库管理中直接选器件。器件选择后,用鼠标将其拖到合适的位置。选中器件,同时按空格键,可以旋转器件、按x或y键可以反转器件。

3)布线:在逻辑图空白处点鼠标右键,在弹出的快捷菜单中选“place Wire…”;在十字光标下可以划线。

6

《电子设计与实践》实验手册

在做逻辑图的时候注意,每一个元件的标号(Designator)必须是唯一的,为了能顺利进入印刷板的设计,每个元件的封装也是必须的。所谓封装也就是电子器件管脚的物理排列形式。常用的封装有双列直插封装,如处理机的封装为双列直插40脚封,代号DIP40;贴片封装等。具体器件的封装形式请参见具体的器件资料,上面将有非常详细的描述。逻辑图上都不应该有悬空的引线,包括直流电源的引入都必须由逻辑元件表示。

有时候为了使逻辑图的布局更清晰,在布线时引入网络标号:

主菜单Place→Net Label

网络标号可以放置在任何逻辑图中的引线上,图中任何有相同网络标号的地方都表示它们在存在着电气上的连接,尽管在布线时没有用线直接连接。

§1.3、网络表文件的形成

网络表文件的后缀为net。生成方法如下:

主菜单Designe→Creat Netlist…

形成网络表文件直接进入项目数据库文件中。该文件是连接逻辑图和印刷线路图的纽带,网络表文件中包含了所有逻辑图中的信息。将网络表文件装入印刷线路文件就可以自动形成印刷线路板。

§1.4、印刷线路板的制作

同建立逻辑图的方法相同,选中设计数据库(*.ddb),建立印刷线路PCB文档:

主菜单File→new→选择PCB document图标

将在设计数据库中形成一个默认文件名为PCB1.PCB印刷线路文档。在设计窗口双击该文档图标,可以打开新建立的印刷线路文档。

印刷线路板是分层结构,一般缺省状态下是双面板结构。导电金属箔分布在元件层(Toplayer),和焊接层(Bottomlayer),分别用不同颜色区分。此外还有一些辅助层:禁止布线层(KeepoutLayer),自动布线时用于圈定布线范围;用于标记电子元件外形轮廓的TopOverlayer等。

在印刷线路板空白处点右键,在弹出的快捷菜单中选:

Options→Board Layers→Document Option

在打开的窗口中可以对印刷线路板的各层进行选择。 下面解释印刷线路板的制作过程。

1)首先规划线路板的尺寸,在禁止布线层划定线路板的大小。方法如下:选择禁止布线层(在窗口下方选择KeepOutLayer),在主菜单Place中选择Line命令划线。

2)入网络表文件。操作如下:

7

《电子设计与实践》实验手册

主菜单Design→Load Nets… 确定由逻辑图形成的网络表文件,执行网络表文件的装载后,可能会有错误,反复修改逻辑图,直到网络表文件成功装载为止。成功装载后,在PCB文件中形成如图1.4.1的元件装载结果,图中所有元件均叠在一起。 图1.4.1

3)元件自动分布:为使元件能均匀分布在线路板上,可以采用自动分布,方法如下:

主菜单Tools→Auto Placement→Auto placer…

器件将按照一定规则进行分布。如果元件比较简单,可以用手工拖的方法进行布局。布局后的效果如图1.4.2。

图1.4.2

8

《电子设计与实践》实验手册

4)布线:规划布局完成后,可以进入布线阶段。一般情况下,布线中涉及的问题包括线之间的最小距离(所谓安全距离)、各类线的线宽(比如电源和地线较信号线宽一些)等问题。首先设定布线规则,方法如下:

主菜单Designe→Rules…

在弹出的窗口中Clearance Constraint设置安全距离、Width Constraint设置线宽。当主要参数安全距离和线宽设置完毕后,就可以进入自动布线,自动布线方法如下:

主菜单Auto Route→All…

自动布线完毕后,系统会报告布线结果如图1.4.3所示

自动布线的结果一般并不理想,有时候需要用手工的方法进行修正,修正的方法如下:

主菜单Edit→Move→Drag

形成十字光标后就可以选择线段进行修正。经过修正后的PCB如图1.4.4所示。 图1.4.4

9

图1.4.3

《电子设计与实践》实验手册

Keil C 和 ANSI C

Keil C的主要特点和它与ANSI C的不同之处,Keil编译器除了少数一些关键地基本类似于ANSI C外,差异主要是 Keil可以让户针对8051的结构进行程序设计,其它差异主要是8051的一些局限引起的

工作步骤:

(1) 详细理解系统要求,收集基本设计资料; (2) 指定系统基本参数;

(3) 设计模拟系统电路原理图; (4) 设计数字系统原理图; (5) 设计完整的系统原理图; (6) 设计印刷线路板;

(7) 提交印刷线路板元件清单、制作印刷板 (8) 加工、调试 (9) 系统程序设计

(10)整理设计资料,提交设计报告

10

《电子设计与实践》实验手册

§3、89S52系列处理机的编程(keil C51)

当设计一个小系统时,一般我们都用汇编语言,这在很多工程中这是一个很 好的方法。因为代码一般都不超过8K,而且都比较简单。如果硬件工程师要同时设计软件和硬件,经常会采用汇编语言来做程序。但是使用汇编的麻烦在于它的可读性和可维护性、以及代码的可重用性都比较低。如果使用C 的话可以很好的解决这些问题。因为C语言有很好的结构性和支持模块化结构,更容易阅读和维护,很好的可移植性,功能化的代码能够很方便的从一个工程移植到另一个工程,从而减少了开发时间。用C 编写程序比汇编更符合人们的思考习惯。用C写程序可以使开发者更专心于算法而不是一些细节问题,这样就缩短了开发和调试的时间。使用C 这样的语言,程序员不必十分熟系处理器的运算过程,这意味着对新的处理器也能很快上手,不必知道处理器的具体内部结。但是并不说明汇编语言就没了立足之地,很多系统特别是实时时钟系统都是用C 和汇编语言联合编程。对时钟要求很严格时,使用汇编语言成了唯一的方法。

像Kernighan 和Ritchie 所著的C 编程语言等这本书被认为是C 语言的权威著作。Keil 的C51完全支持C的标准指令以及很多用来优化8051 指令结构的C 的扩展指令。Keil 编译器除了少数一些关键地方外,基本类似于ANSI C。 差异主要是Keil 可以让用户针对8051 的结构进行程序设计,其它差异主要是8051 的一些局限引起的

§3.1、关于Keil C的数据类型以及使用 1)数据类型

Keil C 有ANSI C 的所有标准数据类型,除此之外,为了更加有利的利用8051 的结构,还加入了一些特殊的数据类型。下表显示了标准数据类型在8051 中占据的字节数。注意,整型和长整型的符号位字节数据类型 大小 在最低的地址中,除了这些标准数据类型外,编char/unsigned char 8 译器还支持一种位数据类型,一个位变量存在于int/unsigned int 16 内部RAM的可位寻址区中。可像操作其它变量那样long/unsigned long 32 对位变量进行操作,而位数组和位指针是违法的。 float/double 32 generic pointer 24 2)殊功能寄存器

特殊功能寄存器用sfr 来定义,而sfr16 用来定义16 位的特殊功能寄存器如DPTR。通过名字或地址来引用特殊功能寄存器。地址段必须高于80H。可位寻址的特殊功能寄存器的位变量定义用关键字sbit。SFR 的定义如下列表所示,对于大多数8051成员,Keil提供了一个包含了所有特殊功能寄存器和他们的位的定义的头文件,通过包含头文件可以很容易的进行新的扩展

列表:

sfr SCON=0X98; //定义SCON

sbit SM0=0X9F; //定义SCON 的各位 sbit SM1=0X9E; sbit SM2=0X9D; sbit REN=0x9C;

11

《电子设计与实践》实验手册

sbit TB8=0X9B; sbit TI=0X99; sbit RI=0X98;

3)存储类型

Keil 允许使用者指定程序变量的存储区,这使使用者可以控制存储区的使用。编译器可识别以下存储区: DATA区: 存储区 描述 对DATA 区的寻址是最DATA RAM的低128字节,可在一周期内直接寻址 快的,所以应该把使用频BDATA DATA区的16个字节的可位寻址区 率高的变量放在DATA 区。IDATA RAM区的高128字节,必须间接寻址 该区空间有限,必须注意。 PDATA 外部存储区的256字节,通过p0口寻址 DATA区除了包含程序变量XDATA 外部存储区,使用DPTR寻址 外,还包含了堆栈和寄存CODE 程序存储区,使用DPTR寻址 器组。

DATA 区的声明如如下:

unsigned char data system_status=0; unsigned int data unit_id[2]; char data inp_string[16]; float data outp_value; mytype data new_var;

标准变量和用户自定义变量都可存储在DATA 区中,只要不超过DATA 区的范围。因为C51 使用默认的寄存器组来传递参数,你至少失去了8 个字节。另外,要定义足够大的堆栈空间,当你的内部堆栈溢出的时候,你的程序会莫名其妙的复位,实际原因是8051 系列微处理器没有硬件报错机制,堆栈溢出只能以这种方式表现出来。

BDATA区:

你可以在DATA 区的位寻址区定义变量,这个变量就可进行位寻址,并且声明位变量。这对状态寄存器来说是十分有用的,因为它需要单独使用变量的每一位。不一定要用位变量名来引用位变量。下面是一些在BDATA 段中声明变量和使用位变量的例子:

unsigned char bdata status_byte; unsigned int bdata status_word; unsigned long bdata status_dword; sbit stat_flag=status_byte^4; if(status_word^15){ …. }

stat_flag=1;

编译器不允许在BDATA 段中定义float 和double 类型的变量。

12

《电子设计与实践》实验手册

IDATA 段:

IDATA 段也可存放使用比较频繁的变量,使用寄存器作为指针进行寻址。在寄存器中设置8 位地址,进行间接寻址。和外部存储器寻址比较,它的指令执行周期和代码长度都比较短。

unsigned char idata system_status=0; unsigned int idata unit_id[2]; char idata inp_string[16]; float idata outp_value;

PDATA 和XDATA 段:

在这两个段声明变量和在其它段的语法是一样的。PDATA 段只有256 个字节,而XDATA段可达65536 个字节。下面是一些例子:

unsigned char xdata system_status=0; unsigned int pdata unit_id[2]; char xdata inp_string[16]; float pdata outp_value;

对PDATA 和XDATA 的操作是相似的。对PDATA 段寻址比对XDATA 段寻址要快。因为对PDATA 段寻址只需要装入8 位地址,而对XDATA 段寻址需装入16 位地址。所以尽量把外部数据存储在PDATA 段中。

CODE段:

代码段的数据是不可改变的,8051的代码段不可重写。一般代码段中可存放数据表、跳转向量和状态表。对CODE 段的访问和对XDATA 段的访问的时间是一样的。代码段中的对象在编译的时候初始化,否则你就得不到你想要的值。下面是代码段的声明例子:

unsigned int code unit_id[2]=1234; unsigned char

{ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15 };

§3.2关于Keil C的中断

8051 的中断系统十分重要。C51使你能够用C来声明中断和编写中断服务程序。中断过程通过使用interrupt 关键字和中断号(0 到31)来实现。中断号告诉编译器中断程序的入口地址。中断号对应IE寄存器中的使能位,换句话说IE寄存器中的0 位对应着外部中断0 相应的外部中断0 的中断号是0。下表了这种关系。

13

IE积存器中的使能 位和C中的中端号 0 1 2 3 4 5 中断源 外中断0中断 定时器0溢出中断 外中断1中断 定时器1溢出中断 串行口中断 定时器2溢出中断 《电子设计与实践》实验手册

一个中断过程并不一定带上所有参数,可以没有返回值。有了这些限制,编译器不须要担心寄存器组参数的使用和对累加器、状态寄存器、B寄存器、数据指针和默认的寄存器的保护,只要他们在中断程序中被用到,编译的时候会把他们入栈,在中断程序结束时将他们恢复。中断程序的入口地址被编译器放在中断 向量中。C51 支持所有5 个8051/8052 标准中断(从0 到4)和在8051 系列中多达27个中断源。一个中断服务程序的例子如下

1 #include 2 #include 3

4 #define RELOADVALH 0x3C 5 #define RELOADVALL 0xB0 5

7 extern unsigned int tick_count; 8

9 void timer0(void) interrupt 1 {

10 TR0=0; // 停止定时器0 11 TH0=RELOADVALH; // 50ms后溢出 12 TL0=RELOADVALL;

13 TR0=1; // 启动T0

14 tick_count++; // 时间计数器加1 15 printf(\ 16 }

§3.3再入函数

因为8051内部堆栈空间的限制,C51没有像大系统那样使用调用堆栈。一般C 语言调用过程时,会把过程的参数和过程中使用的局部变量入栈。为了提高效率,C51没有提供这种堆栈,而是提供一种压缩栈,每个过程被给定一个空间用于存放局部变量。过程中的每个变量都存放在这个空间的固定位置,当递归调用这个过程时会导致变量被覆盖。

在某些实时应用中,非再入函数是不可取的,因为函数调用时可能会被中断程序中断,而在中断程序中可能再次调用这个函数。所以C51 允许将函数定义成再入函数。再入函数可被递归调用和多重调用而不用担心变量被覆盖,因为每次函数调用时的局部变量都会被单独保存,因为这些堆栈是模拟的再入函数一般都比较大,运行起来也比较慢。模拟栈不允许传递bit 类型的变量也不能定义局部位标量。

§3.4 Keil C存储模式

C51 提供了3 种存储器模式来存储变量、过程参数和分配再入函数堆栈。你应该尽量使用小存储器模式。很少应用系统需要使用其它两种模式,像有大的再入函数堆栈系统那样。一般来说,如果系统所需要的内存数小于内部RAM数时,都应以小存储模式进行编译。在这种模式下,DATA 段是所有内部变量和全局变量的默认存储段。所有参数传递都发生在DATA 段中。如果有函数被声明为再入函数,编译器会在内部RAM 中为他们分配空间。这种模式的优势就是数据的存取速度很快,但只有120 个字节的存储空间供你使用(总共有128个字节,

14

《电子设计与实践》实验手册

但至少有8 个字节被寄存器组使用),你还要为程序调用开辟足够的堆栈。

如果你的系统有256 字节或更少的外部RAM,你可以使用压缩存储模式,这样一来,如果不加说明,变量将被分配在PDATA 段中。这种模式将扩充你能够使用的RAM 数量。对XDATA 段以外的数据存储仍然是很快的。变量的参数传递将在内部RAM 中进行,这样存储速度会比较快。对PDATA 段的数据的寻址是通过R0 和R1 进行间接寻址,比使用DPTR 要快一些。

在大存储模式中所有变量的默认存储区是XDATA 段。Keil C 尽量使用内部寄存器组。进行参数传递在寄存器组中可以传递参数的数量和和压缩存储模式一样。再入函数的模拟栈将在XDATA 中。对XDATA 段数据的访问是最慢的,所以要仔细考虑变量应存储的位置,使数据的存储速度得到优化

使用C 来开发你的系统,将更加方便快捷。他既不会降低你对硬件的控制能力也不会使你的代码长度增加多少。如果你运用得好的话,你能够开发出非常高效的系统,并且非常利于维护。

15

《电子设计与实践》实验手册

§4、89S52系列处理机目标程序的在线编程(ISP)

§4.1、S51系列处理在线编程结构

为了便于调试,本系统的处理机采用了以S51系列处理机。该处理机器最大的特点是了采用了在系统可编程技术(In-system programmable[ISP])串口编程技术。以Atmel的89S52为例,它的配置与传统的C系列处理机完全兼容。

该系列处理机的P1口有特殊的作用,P1口的特殊功能描述见表4.1.1。

表4.1.1 P1口详细描述 特殊功能 P1.0 T2:时钟输出、定时器/计数器2计数输入 P1.1 T2ex:定时器/计数器2计数捕获重载触发 P1.5 MOSI:用与在线编程,输入 P1.6 MISO:用与在线编程,输出 P1.7 SCK: 用与在线编程,编程时钟 89S52可以用并口编程模式(Parallel Mode)进行编程,编程时将数据、地址、控制三总线设置为Flash编程模式,需要提供12伏编程电压。编程步骤如下:

1. 地址线输入编程起始地址; 2. 数据线输入相对应的数据; 3. 激活对应的组合控制信号; 4. 置位EA/Vpp信号到12伏;

5. ALE/PROG信号将一个字节编程入Flash,编程一个字的 典型时间周期约为50μs。重复步骤1到步骤5,直至待编程的数据完全写入Flash中。

并行模式下的编程接口由编程命令完成的,其中写过程是自动的,即一旦写入过程启动后,将自动完成整个程序的写入过程。处理机Flash的并口详细写入模式见表4.1.2。

表4.1.2 并行口编程模式下的命令详解 分类 写入 读出 写LockBit1 写LockBit2 写LockBit3 读Lock1,2,3 擦除 读厂商ID号 读芯片ID号 读芯片ID号 Vcc 5v 5v 5v 5v 5v 5v 5v 5v 5v 5v RST H H H H H H H H H H PSEN L L L L L L L L L L /PROG 负脉冲 H 负脉冲 负脉冲 负脉冲 H 负脉冲 H H H VPP 12v H 12v 12v 12v H 12v H H H P2.6 l L H H H H H L L L P2.7 H L H H L H L L L L P3.3 H L H H H L H L L L P3.6 H H H L H H L L L L P3.7 H H H L L L L L L L P0.7-0 数据 Din Dout X X X P0.2-4 X 1EH 52H 06H P2.4-0 地址 A12-8 A12-8 X X X X X 0000H 0001H 0010H P1.7-0 地址 A7-0 A7-0 X X X X X 00H 00H 00H

16

《电子设计与实践》实验手册

并行口模式比较传统,有多种编程设备支持。 S系列的串口编程方法具有如下特点:

结构简单;

可以方便地实现在线编程;

开发成本比较低廉,无需专用的开发设备。

S系列处理机代码存储器可以通过串口的ISP接口进行编程,在采用这种方式进行编程期间芯片的复位RST必须置成VCC电位。串口编程接口包括:SCK、MOSI(输入)、MISO(输出)。这种编程方式下,在做任何的编程操作前必须首先执行编程许可指令。

编程时钟SCK的周期要求小于芯片时钟的1/16。芯片的擦除过程也是将指令代码存储器的内容置成FFH的过程。通过串口模式对处理机做编程操作的步骤如下:

上电,把芯片的复位引脚RST置高电位;

晶振可以跨XTAL1和XTAL2连接、也可以将3MHz至33MHz的外时钟通过XTAL1引脚提供给处理机;

1、

代码存储器的编程可以是字节方式或页面方式,典型的写入周期是5V电压下0.5ms。

2、

编程结束后,RST置低电位后,处理机马上进入正常工作状态。

4字节的串口编程命令见表4.1.3。

表4.1.3 串口编程命令 指令 编程允许 指令格式 字节1 1010 1100 字节2 0101 0011 字节3 xxxx xxxx 字节4 xxxx xxxx 0110 1001 (MISO输出) xxxx xxxx D7-D0 D7-D0 xxxx xxxx xxxB3B2 B1xx Signature 字节1-255 字节1-255 操作 编程使能 擦除 字节方式读 字节方式写 写Lock Bit 读Lock Bit 读Signature 页面读存储器 页面写存储器 1010 1100 0010 0000 0100 0000 1010 1100 0010 0100 0010 1000 0011 0000 0101 0000 1000x xxxx xxx A12-A8 xxx A12-A8 1110 00B1B2 xxxx xxxx xxx A12-A8 xxxA12-A8 xxxA12-A8 xxxx xxxx A7-A0 A7-A0 xxxx xxxx xxxx xxxx A7xxx xxx0 字节0 字节0 擦除芯片 读Flash 写Flash 写加密位 读加密位状态 读Signature 读256字节 写256字节

S系列处理机的串口编程模式下,编程信号的连接相当简单,利用其P1口的P1.5、P1.6、P1.7引脚的多功能特性将其引出即可,逻辑图见图4.1.1。

编程时序见图4.1.2。

图 4.1.1

17

《电子设计与实践》实验手册

图4.1.2

§4.2、在线编程仿真结构

S系列处理机芯片结构上提供了二种编程机制,串口编程具有在线的特征,仿真系统的逻辑结构见图3.3.1。

图4.2.1

下载系统称为ISP,ISP在目标板上的结构上非常简单,可以设计成10芯双排线结构,可以在目标印刷线路板上作一个接口,引脚定义见图4.2.2。接口信号与CPU对应引脚相连。其中电源引脚是由目标板为下载板提供5V电源。

ISP通过标准并口结构与上位计算机连接,下载板的结构见图4.2.3。

这套系统与以往的51系列相比,在做目标板的时候只要把ISP所需要的信号引出即可,不但在

图4.2.2

图4.2.3

18

《电子设计与实践》实验手册

调试中可以在线下载程序,即使在工作现场,仅一台电脑就可以进行处理机程序的更新、调试或是软件升级。

图4.2.4

根据ISP的硬件结构,我们为此配置了Atmel的ISP下载软件,它是由Atmel公司在网上免费提供的正版工具软件,由Atmel公司网站提供压缩包。将压缩包下载后安装即可。按照S51系列处理机的要求,将目标板通过ISP接口与计算机相连接,打开电源。在计算机的操作系统的“开始”菜单中打开Atmel

图4.2.5 19

《电子设计与实践》实验手册

Microcontroller ISP Software。可以看到ISP系统主界面,见图4.2.4。

ISP的第一步是选择芯片,首先选择Option主菜单中的Device

Selection子菜单,选择器件。如果一切操作正常,将显示图4.2.5界面,这时系统进入就绪状态。下一步可以用File主菜单中的Load Buffer命令,该命令将已存放在计算机中的目标代码文件装入,如果文件正常装入,在工具的主窗口中可以看到程序的二进制代码,如图4.2.6所示。

接下来就可以将主窗口中所示的代码通过ISP装入到目标板上的处理机

图4.2.6

中,下载命令在主采单的Instructions中,见图4.2.7。

图4.2.7

Instruction中,提供了对芯片的读、写、擦除、校验等操作。在写芯片以

20

《电子设计与实践》实验手册

前应做Erase Chip和Blank Check操作,即擦除操作和空校验芯片,然后可以作编程操作,见图4.2.7。

编程完成后 ,系统给出提示。然后可以对目标板进行有控制的运行,见图4.2.8,Instruction菜单中的命令Run Target使目标板运行目标程序;同样ISP系统也可以终止目标程序的运行,见图4.2.9。

图4.2.8

主菜单Option中的Initialize Target命令将终止程序的运行,重新将目标板置于ISP的控制下。

ISP系统可以方便地进行简单仿真,尤其是处理机目标代码不大的情况下是 一个很好的解决方案。

图4.2.9

21

《电子设计与实践》实验手册

22

本文来源:https://www.bwwdw.com/article/8j3r.html

Top