一、单片机系统的基本开发过程
(一)系统开发概述
应用系统研制主要可以分为如下几个主要阶段:
1.总体方案的确定:主要包括可行性调研、技术指标的确定、器件的选择和软硬件功能的划分等.
2.系统设计:主要包括硬件设计和软件设计.其中硬件设计主要包括键盘、显示、A/D电路等外围扩展电路的设计和地址译码、总线驱动等电路的设计.软件设计则主要包括定义系统功能、画出程序流程图和编写代码等.另外特别重要的是,作为实际产品,除了满足基本的功能外,还必须考虑可靠性设计问题.
3.系统调试:主要包括硬件调试、软件调试以及软硬件的联合调试.硬件的调试主要包括静态调试和动态调试.软件调试则主要是在线的仿真调试.调试中一般软件和硬件不可能完全分开,软件调试和硬件调试通常要协同完成.
4.固化和运行:完成系统调试之后,反复运行正常则可将用户系统程序固化到EPROM之类的存储器上,单片机脱离开发系统独立工作,并在试运行阶段观测所设计的系统是否满足设计要求.
(二)总体方案设计
1.可行性调研.
可行性调研的目的,是分析完成这个项目的可能性.进行这方面的工作,可参考国内外有关资料,看是否有人进行过类似的工作.若有,则分析他人是如何进行这方面工作的,达到了什么样的技术水平,有什么样的优点,还存在什么样的缺点,是否可以借鉴等;若没有,则需要进一步调研,首先从理论上分析用户所提的技术指标是否具有实现的可能性.然后还要充分了解用户的需求及应用系统可能的工作环境,确定项目能否立项.
在可行性调研完成之后,必须明确任务,确定产品的技术指标,包括产品必须具有哪些功能.这是产品设计的依据和出发点,它将贯穿于产品设计的全过程,也是整个研制工作成败、好坏的关键.
图5-1 单片机系统开发流程
2.器件选型.
在产品设计任务和技术指标确定以后,应在此基础上选择所需的器件.器件的选择首先是确定最核心的芯片即单片机.单片机芯片的选择应适合于应用系统的要求,不仅要考虑单片机芯片本身的性能是否能够满足系统的需要,如:执行速度、中断功能、I/O驱动能力与数量、系统功耗以及抗干扰性能等,同时还要考虑开发和使用是否方便、市场供应情况与价格、封装形式等其它因素.如果要求研制周期短,则应选择熟悉的机种,并尽量利用现有的开发工具.
3.方案设计.
明确任务要求并选定合适的器件之后,要编写任务书,将应用系统要完成的各项任务转换为对单片机的各种输入输出.将一个大的系统划分为多个子系统,明确各个子系统之间的电气接口和通信协议.合理安排人员,确定工作进度.
在方案设计时,特别要注意合理协调软硬件的任务.因为单片机嵌入式系统中的硬件和软件具有一定的互换性,有些功能可以用硬件实现,也可以用软件来实现,因此,在方案设计阶段要认真考虑软、硬件的分工和配合.采用软件实现功能可以简化硬件结构,降低成本,但软件系统则相应的复杂化,增加了软件设计的工作量.而用硬件实现功能则可以缩短系统的开发周期,使软件设计简单,相对提高了系统的可靠性,但可能提高了成本.在设计过程中,软、硬件的分工与配合需要取得协调,才能设计出最佳的应用系统.
(三)硬件设计
单片机应用系统典型的硬件结构如图5-2所示.硬件设计的主要任务是根据总体设计要求,在所选器件的基础上,确定系统扩展所要用的存储器、I/O电路、A/D及有关外围电路等.另外,为了使系统稳定可靠地工作,在满足功能之余,还必须进行硬件的可靠性设计.
图5-2 单片机应用系统典型硬件结构
硬件设计的具体步骤如下:
1.绘制硬件框图:根据给定的总体任务,确定数字电路和模拟电路所需要的模块,画出总体的硬件框图,确定硬件的总体方案.
2.确定数据的输入输出方式:确定各输入输出数据的传送方式是中断方式、查询方式还是无条件传输方式等.
3.硬件资源分配:各输入输出信号分别使用哪个并行口、串行口、中断、定时器/计数器等.
4.绘制原理图:根据以上各步的分析结果完成硬件的电气连接原理图.
5.制作电路板:根据绘制的电路原理图,绘制出PCB图,并送厂家生产,得到实际的电路板.
6.器件焊接:将所有的元器件焊接到制出的电路板上.
在单片机应用系统硬件设计中,还应注意下列事项:
尽可能选择典型电路,并符合单片机常规用法.为硬件系统的标准化、模块化打下良好的基础.
系统扩展与外围设备的配置水平应充分满足应用系统的功能要求,并留有适当余地,以便进行二次开发.
硬件结构应结合应用软件方案一并考虑.硬件结构与软件方案会相互影响,需要考虑的原则是:软件能实现的功能尽可能由软件实现,以简化硬件结构.但必须注意,由软件实现的硬件功能,一般响应时间比硬件实现长,且占用CPU时间.
系统中的相关器件要尽可能做到性能匹配.如选用CMOS芯片单片机构成低功耗系统时,系统中所有芯片都应尽可能选择低功耗产品.如果既有CMOS电路,又有TTL电路时,要设计相应的电平兼容和转换电路.当有RS-232,RS-485接口时,还要实现电平兼容和转换.常用的集成电路有MAX232,MAX485等.
要考虑负载容限问题.单片机总线的负载能力是有限的.如MCS-51的P0口的负载能力为4mA,最多只能驱动8个TTL电路,P1—P3口的负载能力为2mA,最多只能驱动4个TTL电路.若外接负载较多,则应采取总线驱动的方法提高系统的负载容限.常用驱动器有:单向驱动器74LS244,双向驱动器74LS245等.
尽量朝“单片”方向设计硬件系统.系统器件越多,器件之间相互干扰也越强,功耗也增大,也不可避免地降低了系统的稳定性.随着单片机片内集成的功能越来越强,在设计中尽量选择性能更优、功能更强的芯片.
(四)软件设计
单片机系统软件的总体结构如图5-3所示.一般来说,单片机中的软件功能可分为两大类:一类是执行软件,它完成各种实质性的功能,如测量、计算、显示、打印、输出控制等;另一类是监控软件,它专门用来协调各执行模块和操作者之间的关系,充当组织调度的角色.
图5-3 单片机软件系统的总体结构
(五)软件设计
在软件设计中,还应注意如下事项.
1.根据软件功能要求,将系统软件分成若干个相对独立的部分.根据它们之间的联系和时间上的关系,设计出合理的软件总体结构,使其清晰、简洁、流程合理.
2.培养结构化程序设计风格,各功能程序实行模块化、程序化.既便于调试、连接,又便于移植、修改.
3.为提高软件设计的总体效率,以简明、直观的方法对任务进行描述,在编写应用软件前,应绘制出程序流程图.这不仅是程序设计的一个重要组成部分,而且是决定成败的关键部分.从某种意义上讲,多花一份时间来设计程序流程图,就可以节约几倍源程序编写调试时间.
4.要合理分配系统资源,包括ROM、RAM、定时器/计数器、中断源等.其中最关键的是片内RAM分配.当各种资源规划好后,应列出一张资源详细分配表,以备编程查用.
5.注意在程序的有关位置写上功能注释,提高程序的可读性.
(六)系统调试
1.硬件调试.
当硬件设计从布线到焊接安装完成之后,就开始进入硬件调试阶段.硬件调试的常用工具包括仿真器、万用表、逻辑笔、函数信号发生器、逻辑分析仪、示波器等.硬件调试可按静态调试和动态调试两步进行.
(1)静态调试.静态调试是指在系统加电前的检查,主要是排除明显的硬件故障.静态调试的内容包括以下几点.
①排除逻辑故障:这类故障往往由于设计和加工制板过程中工艺性错误所造成的.主要包括错线、开路、短路.排除的方法是首先将加工的印制板认真对照原理图,看两者是否一致.应特别注意电源系统检查,以防止电源短路和极性错误,并重点检查系统总线(地址总线、数据总线和控制总线)是否存在相互之间短路或与其它信号线路短路.必要时利用数字万用表的短路测试功能,可以缩短排错时间.
②排除元器件失效:造成这类错误的原因有两个:一个是元器件买来时就已坏了;另一个是由于安装错误,造成器件烧坏.可以采取检查元器件与设计要求的型号、规格和安装是否一致.在保证安装无误后,用替换方法排除错误.
③排除电源故障:在通电前,一定要检查电源电压的幅值和极性,否则很容易造成集成块损坏.加电后检查各插件上引脚的电位,一般先检查VCC与GND之间电位,若在5V—4.8V之间属正常.若有高压,有时会使应用系统中的集成块发热损坏.
(2)动态调试.动态调试又称为联机调试,主要是在静态调试的基础上排除硬件系统中存在的其他问题.联机前先断电,将单片机仿真器的仿真头插到样机的单片机插座上,检查一下仿真器与样机之间的电源、接地是否良好.
通电后执行开发机的读写指令,对用户样机的存储器、I/O端口进行读写操作、逻辑检查,若有故障,可用示波器观察有关波形(如选中的译码器输出波形、读写控制信号、地址数据波形以及有关控制电平).通过对波形的观察分析,寻找故障原因,并进一步排除故障.可能的故障有:线路连接上有逻辑错误、有开路或短路现象、集成电路失效等.
在用户系统的样机(主机部分)调试好后.可以插上用户系统的其他外围部件如键盘、显示器、输出驱动板、A/D板、D/A板等,再将这些电路进行初步调试.
(3)软件调试.软件调试与所选用的软件结构和程序设计技术有关.如果采用模块程序设计技术,则逐个模块分别调试.调试各子程序时一定要符合现场环境,即入口条件和出口条件.调试的手段可采用单步或设断点运行方式,通过检查用户系统CPU的现场、RAM的内容和I/O口的状态,检查程序执行结果是否符合设计要求.通过检测可以发现程序中的死循环错误、机器码错误及转移地址的错误,同时也可以发现用户系统中的硬件故障、软件算法及硬件设计错误.在调试过程中不断调整用户系统的软件和硬件,逐步通过一个一个程序模块.
各模块通过以后,可以把有关的功能块联合起来一起进行综合调试.在这个阶段若发生故障,可以考虑各子程序在运行时是否破坏现场,缓冲单元是否发生冲突,标志位的建立和清除在设计上有无失误,堆栈区域有无溢出,输入设备的状态是否正常等等.若用户系统是在开发机的监控程序下运行时,还要考虑用户缓冲单元是否和监控程序的工作单元发生冲突.
单步和断点调试后,还应进行连续调试,这是因为单步运行只能验证程序的正确与否,而不能确定定时精度、CPU的实时响应等问题.待全部调试完成后,应反复运行多次,除了观察稳定性之外,还要观察用户系统的操作是否符合原始设计要求、安排的用户操作是否合理等,必要时再作适当的修正.
如果采用实时多任务操作系统,一般是逐个任务进行调试.调试方法与上基本相似,只是实时多任务操作系统的应用程序是由若干个任务程序组成,一般是逐个任务进行调试,在调试某一个任务时,同时也调试相关的子程序、中断服务程序和一些操作系统的程序.调试好以后,再使各个任务程序同时运行,如果操作系统无错误,一般情况下系统就能正常运转.
(4)系统联调.硬件和软件经调试完后,对用户系统要进行现场实验运行,检查软硬件是否按预期的要求工作,各项技术指标是否达到设计要求.一般而言,系统经过软硬件调试之后均可以正常工作.但在某些情况下,由于单片机应用系统运行的环境较为复杂,尤其在干扰较严重的场合下,在系统进行实际运行之前无法预料,只能通过现场运行来发现问题,以找出相应的解决办法.或者虽然已经在系统设计时采取了软硬件抗干扰措施,但效果如何,还需通过在现场运行才能得到验证.
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。