当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]嵌入式系统的应用领域越来越广泛,干扰或者恶劣环境常影响嵌入式系统运行的稳定性和可靠性。Reset是维护系统稳定的一个关键因素,正确地设计复位电路,巧妙地应用复位操作,能使整个系统更可靠、稳定地运行。本文结合实际项目经验分析Reset的相关应用与设计,展示Reset对系统稳定性的重要性。

嵌入式系统的应用领域越来越广泛,干扰或者恶劣环境常影响嵌入式系统运行的稳定性和可靠性。Reset是维护系统稳定的一个关键因素,正确地设计复位电路,巧妙地应用复位操作,能使整个系统更可靠、稳定地运行。本文结合实际项目经验分析Reset的相关应用与设计,展示Reset对系统稳定性的重要性。


引言

在嵌入式系统电子设备的运行中,当出现程序跑飞的情况或程序跳转时,可用手动或自动的方法发信号给硬件特定接口,使软件的运行恢复到特定的程序段运行,这一操作就是复位(Reset);这一过程中,手动或自动发给硬件特定接口的信号,就是复位信号。为了克服系统由于内因(时钟振荡源的稳定性)和外因(射频干扰)所引起的运行不稳定的情况,在嵌入式系统软件和硬件上,必须作相应的处理和保护。复位操作是一种行之有效的保护措施,同时复位系统本身也是引起嵌入式系统运行不稳定的因素,在设计时需特别注意。

本文结合笔者亲身经历的实例来说明Reset的重要性,巧妙地运用Reset使系统工作更稳定可靠。

1 Reset方式及手段

在嵌入式应用系统中,复位操作包括两个方面——处理器本身的复位和系统中外设(外接功能模块)的复位,如图1所示。



总的说来,嵌入式复位方式主要分硬件复位和软件复位。硬件复位,即采用硬件的手段、通过硬件复位信号对系统处理器或者外设进行复位。只要在RST端出现一定时间(具体看系统和处理器的机器周期)的复位电平信号,由CPU采样复位信号,启动复位时序,即可完成复位操作。硬件复位一般包括上电复位、按键复位、电压监控复位和看门狗复位等,这些复位信号,在系统设计时可用逻辑电路组合起来加载到系统的RST端。软件复位,即通过软件手段,在软件框架里对系统复位,重新初始化系统。

按处理器内外来划分,又分为芯片内复位和芯片外复位。于是,硬件复位又分外部硬件复位和内部硬件复位。

对于硬件复位,按复位信号电平高低又可分为高电平复位和低电平复位。高电平复位是高电平有效,并在复位脉冲的下降沿完成复位过程;低电平复位是低电平有效,并在复位脉冲的上升沿完成复位。具体用什么复位信号,视嵌入式系统本身而定,但大多采用低电平复位,这与TTL的功耗有关,因为TTL电路中高电平的吸收电流要远小于低电平的吸收电流。

2上电复位的实现及稳定性设计

2.1上电复位

上电复位(Power On Reset,POR),即系统上电时通过复位电路,在RST引脚提供一个足够长时间的复位电平信号,直至系统电源稳定后,再撤销复位电平。在嵌入式系统中,上电复位是系统启动初始化复位,全面而系统地复位处理器内的所有逻辑单元与模块,将初始化内部逻辑操作,如存储器控制器、中断控制器和I/O引脚等的配置。



上电复位是保证嵌入式系统正常运行的基本操作。通常处理器芯片内部自带上电复位电路,图2(a)所示为某MCU(微控制器)Reset引脚示意图,内部自带上电复位电路。MCU芯片上电时,片内POR将产生内部复位信号以初始化芯片内的数字模块,其时序如图2(b)所示。

有的处理器芯片通过在片外添加RC延时电路来得到上电复位信号。RC复位电路的复位脉冲宽度由芯片要求的复位时间决定,持续时间取决于RC电路参数,电容太大复位时间很长,电容太小复位时间不够,不足以稳定复位。

2.2上电复位失效及应对措施

实际工作时,由于各方面的原因,上电复位会失效。由于受到干扰、电源波动、误操作等原因,短暂的电压下降造成供电恢复时由于电压没有满足POR的发生条件,复位端的低电平复位信号无法再次启动系统重新复位工作,此时会出现系统死机;电源二次开关时间间隔太短时,复位不可靠;当电源电压中有浪涌现象时,可能在浪涌消失后不能产生复位脉冲。这些现象尽管并不频繁,但对于某些特殊应用场景,如不能随时进行手动复位的远程自动控制系统,却是致命的。

出现失效时,常采用提高复位门限来应对,使复位门限位于处理器正常工作电压范围内,且接近处理器正常工作时的最低门限。另一应对措施是延长复位信号时间,让复位信号在电压值恢复后维持足够长的时间。电源稳定后还要经过一定的延时才撤销复位信号,以防止电源开关或电源捕头分一合过程中引起的抖动影响复位。另外,为了解决电源毛刺和电源缓慢下降(电池电压不足)等问题引起的POR不可靠现象,有设计人员在RC电路中增加了二极管放电回路,在电源电压瞬间下降时使电容迅速放电,这样,一定宽度的电源毛刺也可令系统可靠复位。

2.3实例分析:快速开关机单片机启动不稳定

笔者曾经做过一个ZigBee物联网项目,采用ZigBeeSoC芯片,硬件结构如图3所示,主要包括一个8051的MCU核和ZigBee收发器。调试时,发现ZigBee模块快速关机然后快速开机,即二次开机时不稳定,有时启动不正常,功能不能实现。在软件里加Trace信息,发现当快速开关机时MCU并没有正常启动,没有进入所需要的初始化和主循环。避免快速关机开机,则可以正常启动。当嵌入式系统关机后立即再开机,有时不能正常工作,是因为复位不充分,这是嵌入式系统的共同点。



最后发现,由于SoC芯片里有内部POR,所以片外没有加RC复位电路。而工作电源VDD_3V上有20μF电容,下电时不能快速放电。添加外部RC复位电路(100 kΩ电阻和1μF电容),延长复位时间,电源稳定后再取消复位。Reset功能在芯片上下电时更稳定,问题得以解决。有时候电阻电容这种“小器件”往往可以解决“大问题”。

3电压检测复位

为了防止系统在上电、突然掉电或者电网瞬间欠压引起嵌入式系统操作失误,更常用和有效的方法是采用具有复位信号输出的电压监测电路。电压监测电路提供多种保护功能:在系统上电、瞬间欠压时提供系统复位信号;系统突然断电、瞬间欠压时输出监测信号,以供系统实施保护措施,如数据保护、I/O安全设置;可连接备用电源,保证备用电源的投、切控制。

对于供电系统的容差范围较大、压值精度较低的情况,或者是遇到电网长期工作在欠压状态下时,可能会造成系统在正常工作条件下频繁复位。这种情况更应该监控电源电压,当监测到电压波动时,监控芯片向处理器发送电压异常信号,处理器响应该信号并中断正在运行的程序,进入掉电保护子程序,设置复位状态寄存器,避免下次上电时由于寄存器状态错误而无法启动上电复位。



电压监测复位,可以解决电源毛刺等造成系统不稳定。复位电路可以采用分立元件搭建,目前常用专用集成电路芯片,阈值电压和复位信号有些可通过编程修改。图4是一个典型的电压监控复位芯片与微处理器的连接图。

4看门狗复位

看门狗复位(即程序运行监视复位)可保证程序非正常运行时能及时进入复位状态。看门狗分硬件看门狗和软件看门狗。



4.1硬件看门狗复位

硬件看门狗的基本原理是,为电路提供一个用于监视系统运行的信号线,当系统正常运行时,应在规定的时间内给信号线提供一个特定信号;如在规定的时间内无这个信号,自动复位电路就认为系统运行不正常,并重新对系统进行复位。具体方式是通过处理器的定时复位计数器来实现。此复位电路的可靠性还与软件有关,即将向复位电路发出脉冲的程序放在何处,在哪里插入“喂狗”指令,需作优化。

硬件看门狗复位主要有三种形式:使用内部带WDT功能单元的电路,外部增设WDT电路和专用集成WDT芯片。图5是一个看门狗芯片的工作方式图。

4.2软件复位

软件复位可以节约电路板的空间和成本;软件复位方式更灵活,更便捷。尤其是对一些功能模块或者外设的监控,借鉴硬件看门狗思想,采用软件看门狗更有优越性。用软件来监测功能模块或者外设的工作情况,一旦认为功能模块或者外设工作异常,通过设定特殊的标记,达到Reset判据时,则通过处理器强行复位并重新初始化工作异常的功能模块或者外设,而其他功能模块或者外设照常工作。当然,有时也需要重新复位并初始化整个系统,使系统更稳定地运行。有些系统人为操作硬件复位(按键复位或者上下电)很不方便时,或者有些系统和产品不便于让用户知道其重启时,就可采用软件复位。

4.3实例分析:手机找网问题

笔者做过一个功能手机(feature phone)项目,由于手机平台刚推出,平台不太稳定,软件存在一些Bug,尤其是底层Layer1部分。手机找不到网,或者手机有网但过一段时间又没有网的现象,发生概率很小,很难Debug.当时软件找了很长时间的Bug,并把问题反馈给平台厂商,但没能及时给出解决方法。情急之下,只好做了应急之便,采用软件复位的方法来救急。


在RTOS实时多任务操作系统软件中,添加一任务,设置网络状态标志位来监视网络状态,当手机没有信号时设置某标志;通过适当的判据,确认是否Reset,如果达到Reset条件就迅速地软件复位,软件重新初始化,如图6所示。复位过程只能是“偷偷地”快速进行,不能让用户察觉,否则用户体验极为不好;要保持用户界面,底层快速重启,不知不觉地完成重启。重启后,网络正常,用户使用正常,巧妙地缓解,当然最终还是从本质上去解决问题。

5外设的复位及稳定性设计

5.1外设复位的特殊性与可控性

嵌入式系统通常有LCD显示、摄像头和无线通信模块等外设。外设正常工作也需要正确的复位。有些设计直接将外设的复位引脚与处理器的复位引脚连在一起,共用一个外部硬件复位源,如图7(a)所示。这种连接方式存在一些问题。首先,这要求复位电路有足够的复位时间,才能保证处理器和外设都正确复位;其次,一旦外设出问题,那么处理器也需要复位,整个系统都需重新初始化;最后,容易产生非同步复位,在处理器复位后,对外设写入命令时,可能被外设所复位掉,导致初始化出错。



这些问题可以从硬件和软件两个方面来处理。硬件方面,对处理器和外设的复位分别进行复位电路设计,适当展宽复位脉冲。软件方面,采用延时法,CPU上电后延时一段时间,等待外设复位充分,再进行外设初始化。最可靠并最具操作性的是保证外设复位的可控性,使外设的复位信号与处理器复位信号分开,由处理器的某一GPIO来控制。当处理器稳定上电完成自身的初始化后,由处理器软件控制外设复位,适当延时后,再对外设进行初始化,如图7(b)所示。



外设复位的可控性,对要求特殊复位时序的外设尤其有用。不同的外设,其复位时序要求不同,具有个性与特殊性,系统应根据具体的复位时序要求进行个性化复位,否则可能导致外设工作不正常。

对于应用系统中有多个外设时,不应该如图8(a)那样把多个外设的复位引脚连在一起,由处理器的一个GPIO控制,进行一次外部硬件复位。通常采用如图8(b)的连接方式,处理器完成上电复位后,分别通过不同的GPIO控制、采用不同的延时对各外设分别进行上电及复位。系统运行过程中,某个外设因受干扰工作不正常时,可以单独对该外设进行复位操作,而不影响其他外设;有利于提高系统设计的灵活性和可靠性,能保证多个外设的可靠运行。

5.2实例分析:WiFi模块的特殊复位信号

笔者做过一个用WiFi进行数据传输的项目,整个系统如图9所示,SoC处理器模块采集到的数据通过UART传送给WiFi模块,WiFi模块再通过2.4 GHz无线信号传送给无线WiFi AP,最后经以太网口传送给PC,由PC把无线AP获取的数据保存到硬盘。



调试时,发现前端部分工作不稳定,WiFi模块启动不稳定,各次启动现象不一致,有时能正常启动,有时不能正常启动。最后,找到问题的所在点:WiFi模块上电启动时,没有得到正确的复位。系统上电的RC复位电路产生的Reset信号并不能完全使系统稳定,需要再加一个脉冲信号,如图10(a)所示。WiFi模块的Reset时序包括两个阶段:大于20 ms的上电Reset和大于1 ms的硬件脉冲信号。微处理器SoC上电复位并初始化后,由I/O控制WiFi模块上电及复位,按需求进行了特殊复位处理,采用特殊的Reset信号和时序,如图10(b)所示,模块可以稳定启动,工作正常,问题解决。

结语

嵌入式系统的复位方式有上电复位、按键复位、电压监控复位和看门狗复位等很多种,正确地设计复位电路,合理并巧妙地应用各种类型的复位操作,能使整个嵌入式系统更可靠、更稳定地工作。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

【2024年3月25日,德国慕尼黑和瑞典瓦尔贝格讯】不同汽车的独特性给汽车零部件供应商和OEM厂商等带来了挑战,因为每辆车的驾驶方式、驾驶地点、驾驶者、设计、用途以及道路和交通状况都是独一无二的。为保证每辆汽车都能正常运...

关键字: AI 机器学习 嵌入式系统

GD32F303作为一款先进的微控制器,在嵌入式系统领域有着广泛的应用。本文旨在深入探究GD32F303的发布时间,并分析其背后的技术背景和市场环境。通过对相关资料的梳理和分析,本文揭示了GD32F303发布的历史背景、...

关键字: GD32F303 微控制器 嵌入式系统

物联网控制模块作为连接物理世界与数字世界的桥梁,在现代科技领域扮演着至关重要的角色。本文将详细探讨物联网控制模块的定义、功能、应用领域以及未来发展趋势,旨在为读者提供全面而深入的了解,并展望其在未来物联网产业中的广阔前景...

关键字: 物联网 控制模块 嵌入式系统

在这篇文章中,小编将为大家带来嵌入式开发的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: 嵌入式 嵌入式开发

以下内容中,小编将对嵌入式开发的相关内容进行着重介绍和阐述,希望本文能帮您增进对嵌入式开发的了解,和小编一起来看看吧。

关键字: 嵌入式 嵌入式开发 嵌入式系统

本文中,小编将对嵌入式开发予以介绍,如果你想对它的详细情况有所认识,或者想要增进对嵌入式的了解程度,不妨请看以下内容哦。

关键字: 嵌入式 嵌入式开发

在这篇文章中,小编将为大家带来嵌入式开发的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: 嵌入式 嵌入式开发

IAR Embedded Workbench for Arm全面支持3PEAK TPS32混合信号微控制器主流系列产品

关键字: 嵌入式开发 微控制器 MCU

众多周知,TI Sitara系列在近10多年间推出了很多优秀的处理器,其中最具代表性的AM335x系列处理器,引领工业市场从MCU向MPU演进,帮助产业界从ARM9迅速迁移至高性能Cortex-A8处理器,成为一代经典!...

关键字: 处理器 工业4.0 嵌入式系统

在这篇文章中,小编将对嵌入式开发的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: 嵌入式 嵌入式开发
关闭
关闭