ZigBee学习:VDD检测与处理器启动保障

需积分: 9 0 下载量 108 浏览量 更新于2024-09-17 收藏 41KB DOC 举报
在ZigBee的学习过程中,我们关注到了一个关键的函数`zmain_vdd_check()`,它位于`ZMain.c`文件中的第210行左右。这个函数的主要任务是确保微控制器的电源VDD(电压直流转直流)满足运行处理器的最低要求。如果VDD未能达标,程序会通过LED闪烁进行报警,并通过循环检测来监控电源状态,直至达到预设的成功检测次数。 `zmain_vdd_check()`函数采用了一个while循环结构,该循环会重复执行最多`MAX_VDD_SAMPLES`次,这里定义为3次。每次循环中,首先调用`HalAdcCheckVdd()`函数来检查VDD是否达到`ZMAIN_VDD_LIMIT`的阈值,这个阈值在这里被设置为`HAL_ADC_VDD_LIMIT_4`,即4.0V(由宏定义指定)。 `HalAdcCheckVdd()`函数内部会获取当前VDD的实际电压值,并与给定的限制进行比较。如果VDD值大于或等于`limit`参数,函数返回`true`,表示VDD已足够。否则,程序会认为VDD不稳定,重置检测计数器`vdd_passed_count`,然后等待50毫秒,再次尝试检测。 当VDD连续检测通过`MAX_VDD_SAMPLES`次,表明电源已经稳定,函数将不再继续循环等待。整个过程涉及到微秒级延时函数`MicroWait()`,用于在检测之间提供适当的间隔,确保电源稳定后再进行下一次判断。 值得注意的是,`HalAdcCheckVdd()`函数还考虑了芯片的修订版本号。如果当前芯片的修订版本号小于REV_D(0x03),则会直接完成电压检测,因为这可能意味着硬件配置已经内置了对电源电压的自适应管理。 总结来说,`zmain_vdd_check()`是一个用于确保ZigBee系统稳定运行的重要函数,它通过反复测量和等待,确保微控制器的供电满足标准,防止因电源问题导致的系统故障。在整个过程中,它体现了对硬件环境敏感的设计,确保了ZigBee设备在各种条件下的可靠工作。