摘要
在MAXQ系列以及其他嵌入式微控制器中,MAXQ3210独具特色。它把基于EEPROM的代码和数据存储、压电喇叭驱动器、9V稳压器集成在低引脚数封装内。高性能的16位RISC核使其运行速度快,并且省电。由于是基于MAXQ10核,MAXQ3210不同于其他的MAXQ微控制器,它采用的是8位累加器,而不是16位累加器。MAXQ3210非常适合于需要较少I/O引脚和一些智能控制的许多应用。本文讨论它在环境监视中的应用。
MAXQ3210的特性及其监视功能
MAXQ3210包含2kB EEPROM程序存储器、128字节EEPROM数据存储器、64字节RAM存储器。其内置的9V稳压器简化了电池供电电路。它也为其他电路元件输出5V电源。在调试方面,它用内置的JTAG调试引擎取代了昂贵的外部仿真器。
MAXQ3210集成了用于环境监视的外围部件。当环境条件不安全和发生变化时,它能够通过压电喇叭驱动器和大电流LED驱动器等外围部件进行告警。这些外围部件在简单的保安系统、烟雾警报器、温度监视器和运动检测器等应用中很实用。
此外,MAXQ3210为环境监视电路提供了多种接口选项。其内部的电压比较器可以监视外部电路输出的随外部环境变化的电压值。其外部电路可以很简单,比如测量温度的热敏电阻;也可以较复杂,比如测量电容充电时间的斜率式模数转换器(ADC)。
除了电压比较器外,MAXQ3210也可以通过数字I/O口监视外部电路。例如,当环境条件超出范围时,外部监视电路可以通过中断引脚向MAXQ3210发送中断请求信号。MAXQ3210也可以使用串行通信协议,通过数字I/O口与测量距离和照明情况的外部IC电路进行数据传输。
监视系统的软件架构
通常,为MAXQ3210编写的应用程序都很简短,足以用MAXQ汇编语言编写。下面列举的应用程序用MAX-IDE工具包编写。MAX-IDE是一个由Dallas Semiconductor免费提供的开发环境,为MAXQ系列微控制器提供了一个汇编和调试环境。图1示出了一个环境监视应用的基本架构。
启动后,微控制器首先要经过一个初始化过程,将相关寄存器和配置位按照应用要求进行设置。如果微控制器初次加电,可能还需要一些额外的操作,例如制造商设定的一些测试和配置。经过初始化和加电检测后,应用程序进入主循环体,开始测量和响应外部环境的变化。首先,应用程序通过电压比较器或数字I/O口读取环境信息,并分析环境条件是否超出范围。接下来,进行系统诊断,如检测外部电路、测量电池电压、核实存储在数据EEPROM中的永久性故障信息等等。随后,应用程序检查状态信息,其中包括告警(如低电池)和提示信息(如温度过高)。如果环境情况要求执行一些动作,有以下一些选项我们将在下面讨论:驱动喇叭发声,使LED闪烁,通过I/O引脚和其他设备通信,或者简单地把告警信息存入数据EEPROM以便后续分析。
简单的监视应用软件
可以下载为开发环境监视系统而编写的简单应用程序。该程序是在MAXQ3210评估工具上编写和测试的。一个按钮被用来切换告警和正常状态。喇叭发声表示告警。
该环境监视应用的主循环体在下面几段中给出。用于环境监视的状态机非常简单:获取传感器输出并分析它是否超出了某种门限(温度太高,空气中烟雾浓度太大等)。如果超出边界,则发出告警。
MainLoop: move DP[0], #CONDITION_FLAG ; see if we are alarming move ACC, @DP[0] ; read the alarm flag jump z, MainLoop_NoSignal ; skip next code if not alarming ; ; If our condition is above threshold, see if it is ; time to sound the horn ; call CheckSignalTime ; see if it is time to sound the horn jump nz, ReadAndSleep ; back to sleep if no signal call SignalCondition ; sound horn, light LEDs, etc. jump ReadAndSleep ; let's go to sleep now ; ; In a real sensor, we still want to take readings even if we are ; signaling. We need to check to see if environmental conditions ; have returned to normal. ; MainLoop_NoSignal: call CheckForSelfTest ; time to run periodic diagnostics? jump z, ReadAndSleep ; skip if not time yet call SelfTest ; perform self diagnostics ReadAndSleep: call ReadSensor ; get a 'sensor reading' call AnalyzeSensor ; see if condition out of threshold jump Sleep ; put the device into low power mode
其中的SelfTest为系统诊断子程序。系统诊断子程序用于监视电池电压和外部电路的异常情况。在SelfTest中也很适合实现一个计时器,用它来跟踪MAXQ3210投入运行的时间,从而计算外部传感器系统的工作寿命。
该应用程序说明了MAXQ微控制器外围部件的易操作性,以及如何节省代码的存储空间和执行周期。例如,仅需用一个单比特来开关喇叭。
SoundTheHorn: move HORN_DRIVER, #1 move LC[0], #10 call DelayMilliseconds move HORN_DRIVER, #0 ret
电源管理
功耗是环境监视应用中最为重要的一个因素,因为它通常是由电池供电的。MAXQ3210提供低功耗停止模式和电池欠压监视器。
定期检测外部环境条件时,应用程序可以用两种方式唤醒处于低功耗停止模式的MAXQ3210,使其执行代码。这两种方式分别是外部中断或定时器唤醒。在等待外部电路触发条件的应用中,外部中断方式比较合适。比如,在等待开门或热敏电阻上的压降超出门限时,就应该采用外部中断。
唤醒定时器是另外一种使MAXQ3210脱离停止模式的方式。唤醒功能在前面的应用案例中已有讨论:外部监视电路唤醒MAXQ3210,使其检测外部环境条件,必要时进行响应,然后再返回到停止模式。图2示出了这种工作方式的电流消耗模式。从中可以看出,在大部分时间内,MAXQ3210微控制器处于低功耗休眠模式。当MAXQ3210从休眠模式醒来后电流消耗增大。此时正是高性能MAXQ核的用武之处。MAXQ3210能够更快地完成任务,在高功耗状态下停留的时间更短,而更多的时间处于低功耗休眠模式。
由于电池是大多数监视应用中的关键部件,检测电池是否快用完很重要。MAXQ3210通过检测一个寄存器状态位来判断电池电压是否低于门限。这个门限被固定于7.7V,这正是9V电池濒临耗尽时的电压。在这个电平下,电池还有一定的电量,可保障MAXQ3210继续运行一段时间。低功耗应用系统,比如烟雾警报系统,可以在电池电压低于门限后工作几天或几周,并不断发出低电压告警信号。
数据EEPROM
MAXQ3210的128字节数据EEPROM极大地方便了应用程序,可使应用程序存储永久性的配置和状态数据,即使在电源失效或去掉电池后也可保持这些数据。永久性数据存储可用于以下这些目的。
- 改进性能。稍微不能满足性能指标要求的系统(比如,测距仪测量的距离稍微偏短)可以存储永久性配置信息,以使软件能够补偿外部电路的偏差。这种措施可以使已被弃用的设备被重新利用或出售。
- 动作配置及用户化。MAXQ3210应用系统可以按照特定环境或用户的要求定制。比如,环境监视系统可以被配置为大型网络的一部分,当测量值超过门限时,该系统不但自己鸣喇叭告警,而且还可向其他设备发出警报。通过配置,生产厂家可以使能或禁止这种网络功能。
- 工作期限。用于环境监视的传感器和测量电路可能会随着使用期限而劣化。通过修改EEPROM中的数据,应用程序可以确定电路必须被替换的时间。比如,在使用5年后,监视系统可以自动禁止自己工作,并通过鸣喇叭或点亮LED提示自己不能再工作。
环境监视应用
火灾和煤气警报器等住宅安全系统是典型的环境监视应用。MAXQ3210完全可以实现这些功能,但是它比烟雾警报专用微控制器更通用。利用本文前面介绍的环境监视程序架构,可以开发出各种应用系统。在下面列举的安全应用中,有些应用是为了防止或减少公司或家庭的损失,其余的应用是为了方便用户。
为了防止家庭或办公室遭受水灾,可以为地下室安装水位监视系统。该系统可以利用湿度传感器或类似于卫生间冲洗水箱的装置来检测水位。当水溢出或超过一定水位时,传感器或浮漂触发外部中断,MAXQ3210鸣喇叭,发出警报。此外,MAXQ3210可以和公司或家庭网络通信,把警报发给公司或家庭成员。
温度监视是另一种可能的应用。超市冰柜或运输车冷冻车厢内的温度不能过高。为此,可以用简单的热敏电阻和MAXQ3210构成监视系统。当冷却器内的食物温度超过安全界线时,系统发出警报。这种监视系统有许许多多的用途,比如,用于监视网络设备、实验室设备、保藏艺术品、饮料以及其他易腐烂物品的温度。
监视应用的目的也可能是为了方便用户。当宠物、小孩或入侵者进入家庭的禁区时,由MAXQ3210构成的运动检测器可以向主人发出警报。当然,该检测器应该可以通过按钮来开关。
MAXQ3210也很适合实现一个辅助泊车装置。它可以根据距离探测电路测量的距离使喇叭发出不同的警报声音。这种系统需要一些配置和智能处理。在车库内停车时,系统能够帮助车主防止碰撞墙壁,但用户并不希望他们从探测电路前面走过时系统鸣喇叭警告。为此,可用软件实现延迟,当系统初次探测到移动时,软件可以让系统等待两秒钟看是否有进一步的移动。若无,这可能是有人在传感器前面走动。也可以通过按钮来开关系统;这样可以避免用户在车库内工作时系统不断地发出警告。
评估工具
MAXQ3210评估工具(EV kit)是开发原型应用系统的理想平台。它使用9V电源或电池,用两个按钮分别来复位和产生中断信号,用一个10针JTAG接头访问硬件调试程序,可以显示和调整MAXQ3210的寄存器、存储器和堆栈。I/O引脚由一个便利的2 x 20针接头引出,靠近原型区以便于测试外部电路。
板上压电喇叭和LED可被用作应用中的测试信号和发生设备。默认状态下,压电喇叭输出经过阻尼的声音—响亮,但不刺耳。也可通过跳线来短路阻尼电路,使喇叭发出最强的85dB音量。
MAXQ3210评估工具可以配合MAX-IDE使用。它支持MAXQ3210的硬件调试引擎,可进行源代码级的调试和监视内存。
MAXQ3210的优点总结
如上所述,MAXQ3210在环境监视应用中有诸多优点。其中的主要优点之一是高集成度。监视应用所需的元件基本上都被集成到了芯片上(包括电压比较器、喇叭和LED驱动器等),因此省去了不少外部元件。高集成度降低了系统的费用,提高了系统的可靠性,减少了需要测试的元件数量。而且,单片化的方案所需的连线更少,缩短了电路板的测试时间。单片方案也意味着印刷板更小、成本更低。
MAXQ3210的另一个优点是高性能,低功耗。单周期MAXQ核和大量的寄存器空间允许应用程序更高效地保存数据并更迅速地执行任务。MAXQ3210在更多的时间内处于低功耗休眠模式,而执行代码的时间更少。
最后,MAXQ3210的电池监视功能和数据EEPROM便于实现灵巧、自我监视的应用。电池快耗尽时器件可警告用户。此外,系统还可跟踪其元件的寿命,实现有计划的设备更新。
结论
MAXQ3210是一款MAXQ微控制器的低引脚数实现,用于不需要高档微控制器提供的外设的应用。虽然MAXQ3210是环境监视系统的理想方案,但它也是一个通用的、高性能、节能型微控制器,能够为许多应用提供智能和互动能力。
值得注意的是,虽然本文只讨论了MAXQ3210在环境监视中的应用,实际上它的应用范围要广阔得多。利用其数据EEPROM、支持捕获、比较和PWM操作的16位定时器、以及高性能MAXQ微控制器核,MAXQ3210可以应用在许多领域。