嵌入式系统在温度控制中的应用..doc

上传人:豆**** 文档编号:24162435 上传时间:2022-07-03 格式:DOC 页数:67 大小:857KB
返回 下载 相关 举报
嵌入式系统在温度控制中的应用..doc_第1页
第1页 / 共67页
嵌入式系统在温度控制中的应用..doc_第2页
第2页 / 共67页
点击查看更多>>
资源描述

《嵌入式系统在温度控制中的应用..doc》由会员分享,可在线阅读,更多相关《嵌入式系统在温度控制中的应用..doc(67页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date嵌入式系统在温度控制中的应用.2系统的设计与实现湖南文理学院芙蓉学院课程设计报告课程名称: 嵌入式课程设计 专业班级: 通信1101班 学生姓名: 指导教师: 完成时间: 2014年 6月 5 日 报告成绩: 评阅意见: 评阅教师 日期 第一章 概述 嵌入式系统被定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要

2、求的专用计算机系统。实际上嵌入式系统是计算机的一种应用形式,是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物,具有软件代码小、高度自动化、响应速度快等特点。因此它是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。特别适合于要求实时的和多任务的系统。 复杂的微机控制系统使用常规的顺序程序设计方法加上中断来实现功能是比较困难的,主要体现在以下几个方面:(1).实时性差:由于计算机在处理中断时,一般不允许响应低级和同级中断,为了提高实时性,要求中断处理程序尽量短。但是有许多实时操作的处理比较复杂,需要较长的CPU执行时间。如果用中断来完成这些处理,则在处理时,无

3、法响应低级或同级中断。如果采用中断置标志的方法,让主程序来进行处理,则一方面会增加程序的复杂性,另一方面也难以做到实时处理,因为主程序不可能在执行其它程序时,随时去检查这些标志位而转向不同的处理程序。(2).难以实现并行操作的相互通信:在功能较强的实时系统中,除了主程序有时需要与中断间进行信息交换外,各个并行操作之间有时也需相互通信。这些用常规方法是难以实现的。(3).结构复杂、移植性差、维护困难:单片微机功能的复杂化,使软件越来越复杂,特别是为了实现并行操作,需使用大量的中断和标志,使程序结构十分混乱,难以设计和调试。同时由于程序采用线性结构,使得程序难于修改或者移植,因此缺乏灵活性、通用性

4、和可维护性。第二章 系统的设计与实现设计出一个实现对温度进行测量和控制的嵌入式系统。系统具有对外界两点温度进行采集的能力,采集的模拟信号经A/D模块转换成相应的数字量,送入微处理器进行处理。采集到的每一路温度都要与系统此路温度设定值进行比较,然后根据结果调用合适的控制算法,并通过控制相应的继电器的占空比实现对温度的控制、测量、运算处理、输出控制、显示、通信。为此引出串行通信设计利用RS-232串行通信,实现了与PC机进行通讯功能和远程加载功能。考虑到实际的应用及成本等因素,选用的主要硬件器件有台湾SynCMOS公司的生产的SM5964微控制器,数据采集部分选用了凌特公司(Linear Tech

5、nology)推出的20位无延迟模数转换器LTC2430,串行通讯部分使用MAX232芯片,液晶显示屏选用了北京精电蓬远显示技术公司生产的MGLS-12864。嵌入式操作系统选用了源代码公开的C/OS-II。选用的开发环境是:Windows 2000 Server 开发工具:Keil C51 7.0、VC+ 6.0使用的语言是:汇编、C语言2.1 系统的硬件设计系统的原理图如图2-1所示。主要有键盘输入、数据采集、输出控制、LCD显示、通信及电源模块等组成。 图2-1 系统原理框图下面介绍一下主要部分的电路图设计。1). 键盘输入电路键盘是一组按键的组合,它是常用的输入设备,可以通过键盘输入数

6、据或者命令,实现简单的人机对话。键盘可分为独立联接式和行列式(矩阵式)两类,每类按其译码方式又分为编码式及非编码式两类。设计中使用的是独立联接非编码式键盘。电路图如图2-2所示: 图2-2 键盘原理图每个按键使用的是一个瞬时接触开关,这种联接方式可以容易被微处理器检测,但由于按键会产生机械抖动,在按键被按下或者抬起的瞬间,一般持续515ms,因此设计中要去除键抖动。可以通过硬件双稳态电路或者软件延时来实现,设计中采用延时20ms实现的。对于串键,采用无限处理方法。同时为了防止按一次键而产生多次处理的情况(键扫描和键处理速度较快而此时键还没释放),在有键按下时,作一次键处理后还要检测按下的键是否

7、释放。2). 数据采集电路本系统实现对两路温度信号的采集,为了节省硬件成本,在前向通道中采用了多路选择开关,使用了两个多路模拟开关器件CD4052,实现信号的差分输入,完成对两路温度信号的轮流采样,然后将信号送入一个公共的模数转换器LTC2430,完成模数转换。由微处理器的P1.2、P1.3两引脚实现信道的选择。电路图如图2-3所示: 图2-3 数据采集原理图对温度的测量使用铂(Pt)热敏电阻(100),使用桥式电路进行测量。铂电阻是一种高性能的贵金属热电阻,具有精度高、稳定性好、性能可靠等优点,铂电阻的温度测量范围在-200 到 +850 之间,在小于200时,非线性误差小于0.3%,它的电

8、阻值R和温度t之间的关系可以近似地表示为:A,B为常数,A为热敏系数(R/)。测量时采用的是查表法来计算温度值。对于模数转换器LTC2430,设计中使其工作在外部时钟驱动模式下,工作状态分为转换(Conversion)、休眠(Sleep)和数据输出(DataOutput)三个状态。此时它的数据输出波形图如图2-4所示: 图2-4 LTC2430数据输出波形图3).通信电路本系统所进行的通信是实现与PC机的通信,选择了RS232通信标准。这是因为RS232标准是使用最为广泛的通信标准,几乎每一台PC机上都有两个符合RS232标准的串行口,所以采用RS232标准有利于通用性。由于PC机使用的是RS

9、232电平,而SM5964输出是TTL电平,因此选用MAX232解决电平匹配的问题。电路图如图2-5所示: 图2-5 通信电路原理图SM5964的串行发送端口TXD和接收端口RXD经MAX232芯片进行电平转换后,分别与PC机的数据接收端口RXD和数据发送端口TXD相连接。SM5964串行通信的发送端TXD连接到的11引脚,发出的数据信号经过MAX232芯片转换后,由05V的TTL电平变为-12+12V的RS232电平,从14引脚输出到PC机串行口的第二引脚。按RS232通信协议规定,PC机串行口的第二引脚为数据输入端,这样,发出的数据就可被PC机接收到。由PC机串行口的发送端TXD(PC机串

10、行口的第三引脚)传输来的数据,作为RS232电平的信号输入到MAX232芯片的第13引脚,经过MAX232芯片进行电平转换后变为TTL电平,再由MAX232的12引脚输出到SM5964串行口的接收端口RXD。从而完成数据的双向传输。在设计中,使用了两个发光二极管D7和D8监视通信的工作状态。4). LCD显示电路对于LCD MGLS-12864,内置HD61202图形液晶显示模块,厂家为其设置了7条指令来完成对它的控制,有两条指令用于显示状态的设置,其余指令用于数据读/写操作,在此不对其进行详细的说明。MGLS-12864与微处理器的连接方式有两种:一种是直接访问方式,一种为间接控制方式。直接

11、访问方式就是将液晶显示模块的接口作为存储器或者I/O设备直接挂在计算机总线上,计算机以访问存储器或者I/O设备的方式操作液晶显示模块的工作。而间接控制方式是计算机通过自身的或者系统中的并行口与液晶显示模块连接,通过对接口的操作达到对液晶显示模块的控制。设计中我采用了间接控制方式,这种方式的特点是电路简单,控制时序有软件实现,可以实现高速计算机与液晶显示模块的接口。电路图如下图所示,以 P2口作为数据口,P3.3为/CSA,P3.4为/CSB,实现左右两区的显示和切换。P3.5为D/I,P3.6为R/W,P3.7为E,三者产生控制LCD数据与状态的读写等信号。电位器用于显示对比度的调节。电路图如

12、图2-6所示: 图2-6 显示电路原理图5). 输出控制及报警指示电路输出控制电路采用12V直流继电器对外电路进行控制,通过控制继电器的吸合时间来实现对温度的控制,继电器是与强电控制电路(大电流、高电压)联系在一起,会对应用系统产生严重干扰,使系统不能正常工作。为了消除干扰,在微机接口与继电器之间分别加了光耦,使系统主机部分的地与强电控制电路的地隔开。当温度超限或者系统出现致命错误时,系统会发出报警指示且实现在LCD上显示。2.2系统的软件设计与实现2.2.1 设计总述系统软件是以RTOS为平台的,RTOS作为一种专门为嵌入式微处理器设计的模块化、高性能的实时操作系统,提供了一种基于开放系统标

13、准的完善的多任务环境。它作为嵌入式应用软件的基础和开发平台,是一段嵌入在目标代码中的软件,在嵌入式系统启动后首先执行的背景程序,用户的应用程序是运行于其上的各个任务,RTOS根据各个任务的要求进行资源管理、消息管理、任务调度、异常处理等工作。(图2-7 软件体系结构)硬件抽象层内核其它API包网络图形I/O应用程序系统软件的体系结构如图2-7所示。硬件抽象层(HAL)把实时内核与硬件隔离开,实现了操作系统内核与设备无关,提高了应用系统的可靠性。内核层是一个是实时多任务操作系统(RTOS)内核。内核层上面是高层驱动和库函数,提供通用的API、I/O管理器。应用程序层是用户的不同的任务。2.2.2

14、 任务的划分系统中每个任务均有以下三部分组成:应用程序、任务堆栈以及任务控制块。其中只有应用程序被烧入ROM,而任务本身则被置于RAM,待系统运行时再予建立。任务堆栈用以存储CPU的寄存器内容。当某任务由运行态变为其它状态时,CPU寄存器内容压入相应任务堆栈,反之则将相应任务堆栈内容置入CPU寄存器。作为系统中定义的一个数据结构,任务控制块的内容包括任务堆栈的地址、任务当前状态、任务优先权等。操作系统通过查询任务控制块内容实现对任务的管理。在进行任务划分设计时,要考虑以下问题:1).任务间的关系:这包括两个方面,一方面是任务间的同步和通信,这可通过信号量、邮箱等通信方法实现。另一方面,资源共享

15、,通过信号量或其它方法实现。我在系统设计中使用了信号量和中断的开启,实现上述功能。2). 定时或者延时:一个任务可能需要每隔一段时间执行一次操作。如温度采样计算任务,在设计中每秒分别对各路温度采样一次,然后进行计算。这种定时操作可以而且必须使用操作系统的定时系统来实现。3). 等待操作:在任务程序设计中,应尽量避免使用程序询问方法,而用中断方式来实现等待操作,除非程序执行时间小于任务调度时间。另外为防止发生意外情况使等待事件不发生而引起任务无限等待的情况,都加了等待超时处理功能。 根据要实现的功能,我将系统划分为如下6个任务:按键处理、LCD显示、串行通信、输出任务、控制运算、信号采集处理。从

16、系统设计方面,可以划分为人机交互模块、串行通信模块、温度测量及控制模块和远程加载模块。系统软件结构图如图2-8所示。 图2-8 系统软件架构C/OS-II的任务调度是按优先级进行的, 根据各任务的实时性要求及重要程度,分别置它们的优先级为4、5、6、7、8、9。其中0、1、2、3、OS_LOWEST_PRIO-3、OS_LOWEST_PRIO-2、OS_LOWEST_PRIO-1、OS_LOWEST_PRIO 这几个优先级保留以被系统使用。优先级序号越低,任务的优先级越高。任务间的通信和同步是利用信号量和开关中断来实现的。下面对各任务作简要的介绍。1 按键处理任务此任务主要完成键盘扫描工作。用

17、户可以通过键盘对系统进行控制,如改变运行状态、修改相关的参数等,系统必须做出及时的处理,因此在系统中把它的优先级设为最高,一旦有键被按下,系统就能够作出响应完成相应的功能。2.LCD显示任务此任务用于刷新LCD显示的工作。系统的运行状态、各路的温度值、PID相关参数大小、各继电器的状态、错误指示及其它各种信息需要及时的通知用户,当有关的信息发生改变时,需要调用此任务更新显示。3.串行通信任务在设计中,通信任务一方面接收PC发来读写命令帧,对其进行分析处理后,做出相应的响应,从而实现PC机对其进行控制;另一方面也要把相关信息按要求组成相应的帧,发送给PC机。4.输出任务此任务完成对各路继电器进行

18、控制,从而实现温度调节。根据控制运算任务决策结果,负责各继电器占空比的调节。5.控制运算此任务是最重要的一环,当任一路温度转换结束后,都会发信号给控制运算处理任务进行处理,控制运算处理任务接到信号后,对信号分析之后,对要处理的测量结果进行转换查表等处理,算出实际温度值,一方面调用基于时间最优的PID控制算法加以决策处理,发信号给输出任务加以控制,另一方面也发信号给LCD显示任务更新显示。6.信号的采集处理此任务采用定时方式对各路温度信号进行采集,负责通道的选择,对LTC2430转换结果进行读取,根据设定,取转换结果的前16位,用一个无符号整数进行保存,然后存于各路温度存储区。并发信号给控制运算

19、任务进行转换。2.2.3 人机交互模块的详细设计在实现中人机交互模块包含两部分:键盘输入和LCD显示。2.2.3.1 任务的实现键盘是最重要的一种输入设备。一般在设计应用系统时,需要按键较少时采用独立式按键键盘,而在需要按键较多时,采用行列式键盘。但行列式键盘不仅硬件接线复杂,键号的判断和识别程序也较为繁琐。在此介绍使用软件将多个按键功能压缩至3个按键上,该键盘在硬件上使用独立式按键键盘的硬件结构,而在软件上实现了使用矩阵式键盘的功能。该键盘不仅在硬件上接口简单,软件实现也非常容易。其实现原理是:对于矩阵式键盘,如果它有3行4列,则可以构成一个34 键盘,共有12个功能键。在设计的键盘中,行线

20、使用一个按键实现,行线数由该键的按键次数确定,列线则由其它几个按键提供。假如一个键盘使用3个按键,3个按键中1个用于提供行线,设置其它2个键的功能,当该键按键次数为1时,其它2个键为P11、P12功能,而当该键按键次数为2时,其它2个键为P21、P22功能,当该键按键次数为3 时,其它2个键又为P31、P32功能,根据此原理,使用3个按键可以实现N行2列共N2个键的功能,这里的N为用做行线的键即功能设置键的按键次数。将该键的按键次数存于一内存单元(或寄存器)中,每按一次,该单元加1,读出该单元内容,就可知道其它2个键处于何种功能。共定义了8个功能键:单选择键,确认键,数值增加键,数值减少键,左

21、移、右移、上移、下移键。程序流程图如图所示LCD显示任务只是接收其它任务发来的信号量,经分析判断后刷新相应的显示区。其实现简单在此不再叙述。2.3.3 串行通信模块的详细设计串行通信模块是系统设计中的一个重要部分。它要实现与PC机通信,接收PC机发来的命令帧,在确认正确后进行分析执行,并向PC机发送相关信息和数据。通信协议的详细规定见下一章。2.2.4.1 串口设备驱动程序设计1. 系统串行口工作方式和波特率的计算1).串行口的工作方式串行口的工作方式由串行口控制寄存器SCON来确定。特殊功能寄存器SCON字节地址为98H,可以位寻址。通过对SCON.7和SCON.6进行设置可以确定串行口的工

22、作方式,它有四种工作方式,如表2 - 1所示。 表2 - 1 串行口工作方式SM0(SCON.7)SM1(SCON.6)方式 功能说明000移位寄存器方式(用于I/O口扩展)0118位UART,波特率可变(T1溢出率/N)1029位UART,波特率为fosc/64或fosc/321139位UART,波特率可变(T1溢出率/N)SCON结构如图2-9所示。 图2-9串行口控制字寄存器SCON2).波特率的计算串行口工作在方式0和方式2时,其波特率为固定值。工作在方式1和方式3时波特率可变,与溢出率有关,设计中常用定时/计数器1作为波特率发生器。计数器的工作模式共有4种,模式0模式3,但是当串行口

23、选择工作模式1时,计数器必须工作在模式2,自动载入计数模式,在模式2的计时下,使用的计数器寄存器为推理,而TH1则是在做自动载入计时值的设定。波特率的计算公式为:波特率= (2-1)设计时我们是先定出波特率再求TH1的值,将上式加以整理可得:TH1=256- (2-2) 在设计中,串行口(工作在)工作方式1且允许接收,通过语句SCON=0x50来实现。计数器工作在模式2能够自动载入计数值,通过语句TMOD=TMOD|0x20来实现。为便于使用 ,我设计了初始化串行口函数void Uart_Init (INT16U mclk, INT16U baud),利用此函数可根据系统工作频率和设定波特率完

24、成串行口的初始化。2. 串行口输入输出驱动设计采用异步通信时,如波特率为1200,则每传送一个字符约需10ms,所以串行口的接收和发送应采用中断方式来实现,否则会浪费大量的CPU时间。为了可靠的接收和发送数据,专门设定了接收和发送缓冲区,在具体实现时,缓冲区采用环形缓冲区,它的大小按照任务的执行时间、通信速率和报文长短来定,一般为16至255字节,在系统中其值设为30。 1).串行口输入程序和串行口输入中断流程图如图2-10所示 图2-10串行口输入程序和串行口输入中断流程图 2). 串行口输出程序和串行口输出中断程序流程图如图2-11所示 图2-11串行口输出程序和串行口输出中断程序流程图3

25、.任务调用接口在应用程序设计中,只需分别调用函数Uart_Init()、Uart_SendStr()、Uart_Getch()、Uart_Sendch()等函数接口,即可完成对串口的操作,实现数据的输入和输出。4.3.4.2 串行通信应用程序的设计在系统中串行通行程序是专门用于接收PC机发送来的读写命令,根据命令的不同,完成不同的操作,既可以对系统当前的运行状态或参数进行改变,也可以把PC机需要的数据信息打包发送。在设计中,为简单起见,系统作为从机,只能被动接收PC机发来命令,对命令帧分析处理之后执行,可以改变系统当前的运行方式和参数。当需要向PC激发信息时,它要按要求把相关信息组帧发送,如当

26、前继电器状态、第一路温度值、第二路温度值等。关于帧的类型和组帧格式,详细内容在下一章中论述。它的流程图如图4-12所示。图2-12 串行通信流程图2.2.5 温度测量及控制模块详细设计数据信号的采集处理是把实际过程中的模拟量、开关量以及其它信息量通过相关的方式送入计算机,再由计算机进行存储和进一步的处理(如计算、显示、控制等)。模拟量的采集是将模拟量转换成数字量并送入计算机。然后调用处理算法将这些数字量存储并进行二次计算处理,一方面要输出显示便于观察,另一方面调用相关的控制模块,对被测对象进行控制。控制模块通常采用合理的控制算法,对被控对象进行控制,使其满足用户的要求。此模块完成对温度信号的采

27、集处理、控制运算和输出控制功能,是最重要的一个模块。系统要实现对两路温度进行采集控制,其电路图见图4-3。温度信号经两个模拟转换开关CD4052之后,以差分式输入模拟转换器LTC2430的输入端子,转换后的数字量送入微控制器SM5964,从而完成信号的采集。由于20位模数转换器LTC2430采用了专有的无延迟Delta Sigma结构,消除了数字滤波器的接续时间,使每次转换均有效,只要将其转换结果进行正确的读出即可。其数据输出格式如图4-4所示,当最高位EOC为低电平时,表示本次转换完成可以读取结果。对于温度的计算,采用了查表法。获得LTC2430转换结果之后,通过线性插值及标度变换之后,可以

28、计算出当前的实际温度值。以上的采集处理过程相应容易实现,在此模块中,主要是控制部分软件的设计,设计中采用了时间最优控制和PID算法相结合的控制方法,取得很好的效果,其实现如下。1).控制算法在工业过程控制中,应用最广泛的控制方法应该是PID控制,它是按偏差的比例(P)、积分(I)和微分(D)组合而成的控制规律。比例控制简单易行,积分的加入能消除静差,微分能提高,改善系统的动态性能。采用了数字PID的方式进行调节,其框图如图4-13所示。图4-13 PID控制框图下面是增量式PID控制算法公式。为了抑制饱和效应的发生,控制系统采用了积分分离式的PID控制算法。 (4-3)即: (4-4)在上式中

29、,为系统采样周期,为积分时间常数,为微分时间常数,为比例系数,为积分系数,为微分系数。温度变化是个慢过程,如单纯采用PID控制,当有较大扰动或大幅度改变给定值时,会产生较大的偏差,此时在积分项的作用下,往往会产生较大的超调和长时间的波动。因此在系统中又采用了PID算法与时间最优控制相结合的控制方式。时间最优控制是Pontryagin于1956年提出的一种最优控制方法。它是研究满足约束条件下获得允许控制的方法,也叫最大值原理。用最大值原理可以设计出控制变量只在|u(t)|1范围内取值的时间最优控制系统。而在工程上控制变量只取1两个状态,而且依照一定的法则加以切换,使系统从一个初始状态转到另一个状

30、态所经历的过渡时间最短,这种类型的最优切换系统,称为开关控制(Bang-Bang)系统,即: 当时,。当时,。 为tkT时控制器的输出,为系统的最大输出,e(k)为温度测量值与给定值之差,当偏差大于零时,控制器输出最大值,控制对象加热当偏差小于等于零时,控制器输出0,停止加热这种算法具有控制简单、实现方便等优点,但当偏差接近零时,系统容易发生振荡因此,采用PID算法与时间最优控制相结合的双模控制方式,控制规律为: 时,采用时间最优控制 时,采用PID控制 规定一阈值(偏差区域),当偏差大于时,实行时间最优控制,即BangBang控制;而在阈值以内,实行PID控制这样,既可以发挥BangBang

31、控制快速消除大偏差的优点,又能发挥PID控制精度高,超调小的优点,从而使静态、动态性能指标较为理想 2).参数的整定数字PID调节器参数的整定是根据控制对象对控制性能的要求,调整调节器的参数,使控制过程满足要求。在系统采样周期确定的情况下,需要调整的参数有比例系数Kp、积分时间常数Ti和微分时间常数Td。它们分别对控制性能的影响如下: 比例系数Kp:它控制着系统调整的反应速度,减少静差,如Kp太小,系统动作缓慢,Kp加大,可以使系统动作灵敏,调节速度加快。但Kp偏大,可能使系统震荡次数增多,调节时间加长。Kp过大,可使系统不稳定。 积分时间常数Ti: PID调节中的的积分项主要作用是消除静差。

32、Ti减少时,积分项作用增大,系统调节速度加快,但易使系统趋于不稳定,震荡次数较多。Ti增大,积分项对系统性能的影响减少,跟踪速度减慢。当Ti合适时,过渡度特性比较理想。 微分时间常数Td: 微分控制可以改善调节的动态特性,如减少超调量,缩短调节时间。当Td偏大或者偏小时,超调量和调节时间都会增大,只有当Td合适时,才能得到比较满意的结果。在做PID参数整定时,首先根据系统要求应选择合适的采样周期,采样周期确定之后,比例系数Kp、积分时间常数Ti和微分时间常数Td的整定可以根据一定的算法,比如扩充临界比例系数法、扩充响应曲线法以及PID归一化参数整定法来设定。但是在现场系统不允许振荡或外加扰动信

33、号,以上方法在现场不能使用。实际上在现场主要根据经验整定参数,应遵循以下规则: 在进行PID参数调节时,调节幅度要小; 在调节时,需要各参数协同调节; 系统反映(温度变化)速度慢,可调大比例系数Kp,增大微分时间常数Td,减少积分时间常数Ti; 有振荡现象时,可减少比例系数Kp,减少微分时间常数Td。对于的确定,可根据具体情况来确定。3).程序流程图在设计中,为2。程序流程图如图4-14所示 图2-14 温度控制流程图2.2.6 远程加载程序的设计此功能模块就是利用“在系统编程” (In-System Programming,简称ISP)技术,可以实现对系统进行在线升级。所谓“在系统编程”技术

34、是指在用户设计的微控制器系统中为配置新的系统功能而对器件进行重新编程,并在线地将程序代码(固件)下载到程序存储器中的一种编程技术。它的出现是对传统编程方法的重大突破。在设计中,PC机利用串口向系统发送各种命令,如片擦除、页擦除、编程等命令,系统正确接收之后分析执行,从而完成加载升级功能。其详细设计如下。1).相关寄存器简介本设计中选用了SynCMOS公司的SM5964作为主控制器,利用串口即可方便地实现ISP功能,SM5964处理器是以80C52为内核,芯片有64KB Flash 存储器,其中可用于实现ISP功能的程序空间为N512 字节(N= 0,1,8 ),为实现ISP功能,专门设计了5个

35、专用特殊功能寄存器。分别如下: 系统控制寄存器(SCONF,BFH)WDRRRRRISPEOMEALE1SCONF的位2(ISPE)是ISP功能的使能位,该位置置1使能ISP功能,置0禁止ISP功能。这可以防止由于软件设计失误而造成的芯片擦除操作。 FLASH控制寄存器(FCR,F7H)STARTRRRRRF1F0START:ISP功能起始位,置1时,执行由位1、位0(F1、F0)所制定的ISP功能。置0时,空操作。START位被置1后,SM5964内部硬件电路会锁存地址和数据总线,并保持住PC指针直到START位置0。不必对此位的状态进行查询。位F1、F0:ISP功能选择位如下所示 F 1:

36、0 ISP功能 00 字节编程 01 片保护 10 页擦除 11 片擦除 FLASH 高位地址寄存器(FAH ,F4H)和低位地址寄存器(FAL, F5H) FAH & FAL为ISP功能提供16位的FLASH地址。 FLASH数据寄存器(FDAT, F6H) FDAT寄存器为ISP功能提供8位数据。2).协议的约定PC机侧的详细情况见下一章。在实现中,系统只是根据PC机发来命令执行相应的功能,根据命令执行情况向PC机返回执行结果(执行成功还是失败),当执行成功时向PC机发送AAH命令,当执行失败时,向PC机发送55H,通知PC机重新执行。 功能 命令 校验和 命令执行成功 AAH 56H 执

37、行命令失败 55H ABH 3).程序设计系统工作转到ISP功能状态时,首先对串口进行初始化,然后接收PC机发来的命令帧(有的包含数据),确认正确接收之后,分析执行。设计中,串口初始化状态是:8位数据,波特率1200,2.4 系统设计中的注意事项(硬件抗干扰、软件调试)-第三章 PC侧程序的设计根据第二章的论述,为了实现对系统的监控和在线升级,需要在PC机侧完成相应的功能,同时也可以把系统的相关信息发送给PC机加以存储,以备以后分析利用。把测的温度值存储起来,在PC机上加以分析,有利于获得系统的特点,总结经验,更好的调节PID参数,完成对系统更有效快速的控制。PC机侧程序的设计主要由两部分组成

38、:通讯部分和ISP功能部分。根据它们的具体情况在实现时使用不同的协议。通信部分,要完成对系统的实时监控,既要发送控制命令,调节系统的运行状态和参数,也要读取相关信息,加以分析。由于信息类型较多,实现起来较复杂。相对而言ISP功能部分简单,除了对系统在线编程时要发送大量的数据信息外,其它的命令如片擦除、页擦除和保护功能,仅发送相关的命令即可完成。在整个实际开发过程中,使用了如下开发条件:开发环境:Windows 2000 Server 开发工具:Microsoft Visual C+ 6.0在设计中使用了多线程技术。在Windows的一个进程内,通常包含一个或多个线程,线程是指进程的一条执行路径

39、,它包含独立的堆栈和CPU寄存器状态,每个线程共享所有的进程资源,包括打开的文件、信号标识及动态分配的内存等等。一个进程内的所有线程使用同一个32位地址空间,而这些线程的执行由系统调度程序控制,调度程序决定哪个线程可执行和什么时候执行线程,线程有优先级别,优先权较低的线程必须等到优先权较高的线程执行完任务后再执行。在多处理器的机器上,调度程序可以把多个线程放到不同的处理器上运行,这样可以使处理器的任务平衡,也提高系统的运行效率。3.1 PC机侧串行通信程序的设计使用MFC开发是较普遍的VC+编程方法。在VC+6.0下,MFC应用程序的线程由CWinThread对象表示。VC+把线程分为两种:用

40、户界面线程和工作者线程。用户界面线程能够提供界面和用户交互,通常用于处理用户输入并响应各种事件和消息;而工作者线程主要用来处理程序的后台任务,程序一般不需要直接创建CWinThread对象,通过调用AfxBeginThread()函数就会自动创建一个CWinThread对象,从而开始一个进程。创建上述的两种线程都利用这个函数。线程的终止取决于下列事件之一:线程函数返回;线程调用ExitThread()退出;异常情况下用线程的句柄调用TerminateThread()退出;线程所属的进程被终止。参考文献01. 刘洪涛 ARM嵌入式体系结构与接口技术 人民邮电出版社2009.802. 吴明辉 基于ARM嵌入式的开发与应用人民邮电出版社2004.603. 沈伟慈 通信电路(第三版)西安电子科技大学出版社 2012.904. 樊昌信 通信原理国防工业大学 2001

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com