基于MC9S08QG4的烟雾传感器应用设计
扫描二维码
随时随地手机看文章
MC9S08QG4是采用高性能、低功耗的HCS08内核的飞思卡尔8位微控制器系列中具有很高的集成度的器件。MC9S08QG MCU集成了那些通常只有较大、较昂贵的元器件才具有的性能,包括背景调试系统以及可进行实时总线捕捉的内置在线仿真(ICE)功能,具有单线的调试及仿真接口。该产品的特色还包括一个可编程的16位定时器/脉冲宽度调制(PWM)模块(TPM)。
MC9S08QG4提供了丰富的外设与HCS08内核的多功能组合,包括更长的电池寿命(即使工作电压低至1·8V,也能发挥最大效能)、领先的FLASH技术以及创新的开发支持。对于诸如无线通讯、手持式设备、小家电、基于简化型媒体访问控制器(SMAC)的应用,以及玩具等对功耗和尺寸要求较高的应用,MC9S08QG4是出色的解决方案。
块状图
火警安全系统全系统块状图如图1中所示:
控制器联网(CAN)总线
环行板
带有24V 电源的探测器总线
中央处理器
烟雾探测器
执行模块
告警按钮
24V DC电源
液晶显示器
键盘
报警器
不间断电源
·中央处理器
中央处理器控制整个系统,定时询问每个烟雾探测器和告警按钮的状态,并通过环路板向每个执行模块发送命令。而且,它还提供带有TFT液晶显示器和键盘的操作员接口,如果出现火情,就显示位置并报警。
·环路板
通常在火警安全系统中有10个或更多的环路板。环路板与中央处理器连接。RS485以前是环路板和中央处理器之间最常用的连接方法,但是控制器联网总线目前成为最现代的新型设计解决方案。
每个环路板都提供一个带有模块数据的探测器总线,并在两条线上提供24V直流电源。根据不同生产商的产品不同,最多可以有240个烟雾探测器、告警按钮和执行模块连接在一个环路上。
·执行模块和告警按钮
执行模块是执行设备,如遇到火灾时根据探测器总线传来的的命令打开洒水器。一般来说,这些模块包括一个或多个由MCU多点控制单元的GPIO通用输入/输出接口控制的中继。通常情况下,执行模块使用与烟雾探测器相同种类的MCU多点控制单元。
告警按钮安装在走廊上,一旦遇到火灾或紧急事件,人们可以打破盖板,按下按钮进行报警。有时为了降低成本,使用更简单的MCU。
执行模块和烟雾探测器的数量比是1:2或更少,系统中的告警按钮数量比执行模块数量少。
·电源
整个火灾控制系统的电源是由UPS(不间断电源)提供的。24V直流电提供给中央处理器和每个环路板,然后环路板通过探测器总线将24V的直流电源提供给所有烟雾探测器、执行模块和告警按钮。通信数据可以在每根总线上调制。
·探测器的总线
探测器总线是一种装有两条线的特殊控制总线,带有24V直流电源和调制数据。图2显示了探测器总线上的常见波形,但没有更具体的波形,因为不同的生产商定义不同的通信协议。
时钟
托管数据
主机数据
设备电流
代码1
代码0
OPEN
调时决定了总线MCU频率的要求。
虽然它是个三态代码,但是只使用两种状态来传输总线数据,1和0(24V和0V)。第三种状态OPEN用来表示主机等待某一设备响应的状态。在这种状态下,总线被设置为一个恒定的中间电压,例如12V,然后设备可从总线获得电流,总线此状态下作为一个电流回路。通过改变总线电流来代表逻辑1和0进行通信。
·烟雾探测器
图3显示常用烟雾探测器的块状图
环路中的每个烟雾探测器都有独特的地址代码。询问命令定时通过总线发射(例如:每三秒钟)这种询问命令是一个广播,可以由所有的烟雾探测器接收的。如果一个探测器检测到火情,它会将信息发送给控制器进行报告。
MCU所需的资源和功能
以下是烟雾探测器应用所需的要求:
·非常低的功耗,对整个电路板所需的功率不超过400 uA
·一个信道模拟数字转换器(ADC)
·7个GPIO通用输入/输出接口
·一个用于定时功能的8位计时器
·监控器、计时器和低电压检测,用于保证系统安全
·16位的EEPROM电可擦写可编程只读存储器用于存储配置数据如地址和配置
·2K的闪存,80字节的内存
停止模式
QG4有四种操作模式,激活、等待、停止3、停止2和停止1。
激活背景模式用于代码开发
·等待模式:
。CPU停止操作来节约功率
。系统时钟运行
。保持全电压调节
·停止模式:CPU和总线时钟停止
。停止1:内部电路完全停止,以最大限度地节约功率。
。停止2:内部电路功率部分停止,保持内存内容。
。停止3:所有内部电路可以快速恢复,保持内存和注册器中的内容。
重启后,操作的正常模式是运行模式,并且在此模式中CPU被激活并且外围设备可使用。通过执行一个等待命令,MCU进入等待模式。在等待模式中所需功率减小,因为CPU没有计时。为了进一步减少功率消耗,可以使用停止模式。当执行停止命令时,就输入三个停止模式中的一个。停止1、停止2和停止3,每一种都具有不同级别的操作可减少功率的损耗。表1A描述了停止模式的行为。一般来说,停止模式的电源供应(3V供应)如下:
·停止1模式供应电流, 475 nA
·停止2模式供应电流, 600 nA
·停止3模式供应电流, 750 nA
·RTI加法器在停止1、停止2或停止3模式下,300 nA
·LVI加法器在停止3模式下 (LVDE = LVDSE = 1),70 uA
·振荡器加法器在停止3模式下,5 uA
*ATD停止模式或功率的减少都根据ATDPU的状态决定
**晶体振荡器可配置运行停止3。请见ICG注册器。
表1B描述了如何通过配置不同注册器的字节以及每个停止模式的结束条件来选择停止模式。
当使用停止2时要考虑以下几个因素来确保正确操作。
IRQ PIN中断请求脚必须激活或从外部拉起
LVD低压差动传输模式必须在停止模式中禁用(LVDSE = 0)
如果使用RTI,只有内部时钟源在停止2模式下生效。
OSCSTEN字节在停止2模式中无效,此时钟参考将总是消耗电源
只有RAM保持功率,所有其它的I/O注册器将在唤醒状态下重新设置
在I/O 针脚从停止2模式进入状态被修改前,PPDF标记必须被清除。
从停止模式恢复需要时间。在3V电压时,停止1和停止2的停止恢复时间大约为50 us,停止3的恢复时间根据时钟定义的不同而变化。如果使用内部参考时钟,启动时间大约为100 us,而如果使用外部 32KHz水晶,如果振荡器在停止模式下激活(设置为OSCSTEN),则是2·4ms。如果振荡器在停止模式下禁用(OSCSTEN被清除),则是180 ms到300 ms。
不幸的是,虽然使用停止模式可以大量节约功率,但是许多烟雾探测器的设计师都不能接受停止模式,因为它需要一直保持MCU工作,以从总线获得响应。从停止模式恢复的时间使其很困难或甚至不可能。
低功耗设计的ICS网络联机共享配置和操作模式
·建议使用ICS配置和操作模式由一般总线调时确定,至少需要100KHZ总线频率。
根据不同的ICS配置,QG4有六种操作模式:FEI、FEE、FBI、FBILP、FBE和FBELP。因为FBE模式有最低的功耗和最准确的时钟,所以建议用于烟雾探测器的应用。遗憾的是,由于生产商使用不同的总线计时,所以有时可能无效。例如:有些总线计时需要1MHz的总线频率,QG4需要一个外部2MHz晶体振荡器用于FBE模式,许多客户不愿意支持额外的2个MHz晶体振荡器成本,有些总线需要很低的总线频率(如16Hz),然后可以选择FBI模式。
QG4的内部32KHz时钟具有典型的的0·2%的准确性和在整个操作温度范围有2%的误差。
非常普遍而且低成本、低功率的配置是使用一个455KHz震荡电路,用于FBELP模式。总线频率是227·5KHz(可以分开为113·75KHz)。如果供应电压是3V,227·5KHz频率下的(BDIV = 0)的QG4的电流供应就是240μA,而113·75 KHz(BDIV=1)的电流供应是200 μA,28·4 KHz(BDIV=4)的电流供应是170UA。
表2显示所有适合烟雾探测器应用的操作模式,考虑到功率损耗和成本问题。而且考虑以下因素用于计算不同模式的总线频率。
·FEI:Fbus= Firc * 512 / (2 * 总线分配器)
·FBI:Fbus = Firc / (2 *总线分配器)
·FBE:Fbus = Ferc / (2 *总线分配器)
·与外部455KHz震荡电路共同使用
当MCU与外部455KHz振荡电路共同使用,获得功率损耗、系统成本、时钟准确度和总线频率的最佳平衡时,必须考虑振荡电路组件的选择以使其可靠。
图4显示典型的455KHz振荡器电路。
C1,C2是指生产商的建议值,通常80到100 pF
在QG4的数据表上,规定了两种特点,低范围是32到38·4KHz,高范围超过1MHz。但是QG4可以与455KHz震荡电路共同使用;虽然在电路特点中没有具体说明。通过此配置, ICSC2 注册器5位的范围应该设置为ICS的高范围模式。
·高电流应该于POR
G4进行重新设置时的电源,ICS的默认模式总是FEI,在此模式中总线频率是4Hz,大约从电源消耗2mA的电流,不适用于烟雾探测器应用。建议在POR之后立即设置ICS到FBI模式。虽然高电流状态一直存在于POR,但是用户可以通过此方法缩短几个说明周期的时间。在Tcsth之后,晶体振荡器启动时间(5 ms用于高范围,低的振荡器功率模式),用户可以将ICS转换到最终工作模式,对FBE进行正确操作。在Tcsth的过程中,用户可以完成对系统初始工作,这对计时并不重要。
·使用内部模块的电流供应
每个内部模式在工作时都从电源获得电流,可以禁止某些未使用的模块以节约电源,但是已使用的模块的电流供应必须考虑系统的电源损耗,以下是QG4内部模块的电流供应列表。
·RTI: 300 nA
·LVD: 70 uA
·ACMP: 20 uA
·ADC: 120 uA(取样时间长,低电流模式)
·OSC: 5 uA(范围低、低电源模式)
·IRG: 100 uA
·FLL: 210 uA ~ 300 uA(根据频率和电压的供应决定)
·FLL: 210 uA ~ 300 uA(根据频率和电压的供应决定)
MCU的I/O 针脚必须正确设置来节约电源。所有未使用的I/O必须通过挂起或下拉的输入来设置,或 简单的输出模式可输出禁止外部电路的状态。
带有闪存的EEPROM仿真
烟雾探测器使用EEPROM存储数据,如地址和系统配置。16位对于这些数据足够了。QG4的闪存可轻松用于模拟EEPROM。通过内部Vpp充电泵,无需外部Vpp。QG4的闪存可擦写/编程10000次,是HC08 Flash MCU的10倍还多。而且建议采用一些解决方案来延长闪存的生命周期。
·闪存擦写/编程代码样本
如何消除/编程闪存的样本代码可在CW5·x的样本目录中找到。
在Vpp状态时,CPU使用不安全,那些闪存擦写/编程代码必须在RAM上执行,而不是在闪存上执行,为此用户可以限定一个阵列,包含上述 C语言源代码所编辑的二位代码,并且称RAM中的这个阵列为子程序。
PGM[21]总是闪存操作命令。以下macros操作可以被定义以使RAM中的这些代码更容易做为子程序而被调用。
以下实例显示如何调用函数。
在闪存可以正确擦写或编程前,FCLK必须设置在150KHz到200 KHz之间的正确值。
·在227·5 KHz FCLK 下正确操作。
QG4的Ffclk特性是在150KHz到200 KHz之间。FCDIV的注册器必须被写入正确的值以设置正确的Ffclk。如果是PRDIV8,此寄存器的六位必须被清除。
·fFCLK = fBus / (DIV + 1)
通过外部455 KHz FBE模式,在此模式中总线频率是227·5KHz。Ffclk只能被设置为227·5 KHz(不分开)或113·75 KHz(两分),它最接近特定的Ffclk。
对于可靠的操作来说,建议采用带有113·75 KHz Ffclk的突发编程模式闪存。请注意突发编程与byte编程略有不同,所以源代码应该为突发模式重写。
另一方面,当闪存编程/擦写时电源消耗更大,FLL加法器的供应电流可以被忽略,所以另一个建议是使FLL获得更高的总线频率,然后在完成闪存操作后回到正常的设置。
·模拟EEPROM的生命周期延长
闪存只能被擦除为页。QG4闪存的页面大小是512个字节,由于只有少量字节用于烟雾探测器,所以可采用一些解决方案来延长模拟EEPROM的生命周期。解决方案之一就是存储记录数据在整个EEPROM上(参考图5)。每个记录有n个字节数据和1个字节标记组成,这个标记字节说明这n+1个字节地址是否被使用。如果没被使用,用户代码可将新的数据写入此位置;如果已被使用,那么将数据写入下一个位置。当阅读虚拟EEPROM时,用户代码应该首先检测这个标记,然后从最后一个已使用位置上读取数据,它包含最新的数据。当所有的地址(页面尺寸/记录尺寸)被使用时,下一个写操作应该从页面的第一个地址重新开始,结果闪存这一页的生命周期就被(页面尺寸/记录尺寸)成倍延长了。
如果15个字节被要求存储地址代码和配置数据,那么要使用额外的一个字节作为标记,所以记录的尺寸是16个字节,一页可被使用512/16=32次,其生命周期可延长至32*100,000=3,200,000循环。
·当闪存擦写/重新编程时的电流
当删除/编程闪存时要考虑提供电流。当Vdd = 3·2V, Ffclk = 227·5 kHz,擦除页使用5·78 mA,并且花费4000Tfcyc,也就是17·58 ms。
·闪存块保护
由于Flash编程/删除代码包括在用户代码中,所以闪存必须被块保护以避免由于程序运行错误所导致的意外内存操作。要块保护闪存,用最后一个未被保护内存的地址来设置NVPROT寄存器。例如,要通过0xFFFF保护0xFA00,0xF9FF是最后一个未保护地址,所以0xF8必须向NVPROT写为15位到9位的内存地址(8位到0位都是逻辑1)。
如果支持块保护,确保向量是否被重新导向。如果向量被清除NVOPT寄存器内的FNORED位进行重新导向,用户代码必须改变,以从新的向量位置分配和接入向量。如果引导装入程序被在系统内编程或更新使用,它就是块保护,向量必须重新导向,或者引导装入不能编辑默认的向量位置,因为如果只支持块保护,这些也被保护。
正常情况下,中断服务的方式如下:
3号或4号说明ISR函数的绝对向量数量,例如,QG4的向量3是低电压检测中断,向量位置是0xFFF8:0xFFF9。
但是如果支持向量的重新导向,这种情况就不生效——在被重新导向后,模拟比较器向量就转向地址0xFDF8:0xFDF9。仍旧从0xFFF8:0xFFF9输入中断服务将导致致命错误,然后中断服务的方法如下:
宣布中断服务的另一种方法是在向量表起始的位置定义一个函数阵列。
一旦向量被重新导向,就可以将函数阵列地址改变到新的位置。
在任何情况下,重设向量都不被重新导向,它总是0xFFFE:0xFFFF。所以,启动函数地址不能改变。单独在PRM文件中的定义它的函数地址。
模数转换器(ADC)的配置
·模数转换器(ADC)时钟选择模数转换器(ADC)能够使用多点控制单元MCU总线时钟、一个总线时钟脉冲分为两次或在模块内的本地异步时钟进行转换操作。如果总线频率低于fADCK的频率,当支持短信号时,连续转化的准确信号时间就不能保证。如果总线频率低于fADCK频率的1/11,当支持长信号时,连续转化的准确信号时间就不能保证。
当455kHz振荡电路被使用,并且总线频率是227·5kHz时,异步时钟(ADACK)应该被选为模数转换器(ADC)的时钟源。
比较
表4列出烟雾探测仪应用最常使用的MCU。
*这是为Vdd=3V、Fbus=1 MHz、FBE模式(带有外部2 MHz晶振)提供的电流。FLL使用大约220310uA,ICR一般使用100uA,对于FEI模式,一般490+250+100=840uA;同时OSC在LP模式下使用5uA,带有32kHz外部表晶体振荡器的FEE模式大概是490+250+5=745uA。
**这是为Vdd=3V、Fcpu=1 MHz,带有外部4 MHz RC振荡器提供的电流。
***这是为Vdd=3V、Fmclk=1 MHz,带有32768表晶体振荡器提供的电流。因此包括DCO和振荡器的供应电流。
^FBE模式,Fbus=455(2*2)=113·75kHz。
^^Fmclk=455/4=113·75kHz。
参考
飞思卡尔
MC9S08QG4数据表
飞思卡尔AN2493、MC9S08GB/GT低功耗模式