1. 项目缘起与整体设计思路
便携式电子设备最让人头疼的问题从来都不是功能不够多,而是电池不够用。尤其是那种需要长时间脱离市电运行、又要驱动多种外设的嵌入式终端,电源管理做不好,要么续航崩盘,要么上电时序混乱导致主控反复复位。我最近在做一个低功耗数据采集终端的电源方案,主控选了 PIC18LF46K42,电源管理芯片用了 PCA9422,整套方案跑下来待机功耗压到了微安级,动态响应也稳。这篇文章就把整个设计过程拆开来讲,从选型逻辑到寄存器配置,再到实测踩坑,尽量说透。
先交代一下这两个核心器件是什么定位。PIC18LF46K42 是 8 位单片机里比较能打的一颗,低功耗特性突出,带 XLP 技术,休眠电流可以做到纳安级别,外设也够用,适合做需要长时间待机的控制核心。PCA9422 则是一颗面向低功耗应用的电源管理 IC,集成了多路稳压输出、电池充电管理、I2C 可编程配置以及多种低功耗模式,专门为便携设备设计。把这两颗芯片组合起来,本质上就是让 PCA9422 负责“供电和充电”,让 PIC18LF46K42 负责“决策和调度”,两者通过 I2C 总线通信,主控根据系统状态动态调整电源输出和功耗模式。
为什么不用分立方案?我早期试过用 LDO 加充电 IC 加电压检测的分离组合,板子面积大不说,上电时序完全靠 RC 延时和使能引脚硬凑,稍微换个负载特性就出问题。PCA9422 把多路输出和时序控制集成在一颗芯片里,通过寄存器就能配置各路输出的上电顺序和电压值,省掉了大量外围元件,也省掉了调试时序的噩梦。这个选择背后的逻辑很简单:集成度换可靠性,可编程换灵活性。
整套系统的供电架构大致是这样:锂电池接入 PCA9422 的充电输入端,芯片内部完成充电管理并输出系统电压;PCA9422 提供多路稳压输出,其中一路给 PIC18LF46K42 供电,另外几路给传感器、存储和通信模块供电;主控通过 I2C 读写 PCA9422 的寄存器,实现电压调节、模式切换和状态查询。这个架构的关键在于,主控不只是被动接受供电,而是主动参与电源管理决策,比如在传感器不工作时关掉对应那路输出,在系统空闲时切到低功耗模式。
适合谁来参考这篇内容?如果你正在做电池供电的嵌入式设备,尤其是需要多路电源轨、对上电时序有要求、又希望主控能动态管理功耗的场景,这套方案可以直接借鉴。即便你用的不是这两颗具体型号,电源管理的设计思路和调试方法也是通用的。下面我会按模块拆解,把每个环节的考量、配置和实测数据都摆出来。
2. 核心器件选型与关键参数解析
2.1 为什么是 PIC18LF46K42 而不是其他 8 位机
选主控的时候我对比过几款常见的低功耗 8 位 MCU。PIC18LF46K42 的几个特性最终打动了我。第一是XLP(超低功耗)技术,在休眠模式下典型电流只有几十纳安,看门狗和实时时钟还能继续运行,这对需要长期待机的采集终端来说是刚需。第二是外设集成度,它自带多路 ADC、比较器、DAC、以及多个通信接口,省掉了不少外围芯片。第三是工作电压范围宽,1.8V 到 5.5V 都能跑,这意味着它可以直接由 PCA9422 的输出供电,不需要额外的电平转换。
还有一个容易被忽略的点:PIC18LF46K42 的外设引脚选择功能非常灵活,可以把数字外设映射到任意空闲引脚上。这在 PCB 布线紧张的时候特别有用,我这次板子面积压得很小,靠这个功能把 I2C 和 UART 的引脚位置调了好几次才布通。相比之下,有些同级别的 MCU 外设引脚是固定的,布线时就很被动。
功耗实测数据我记录了一下:在 3.3V 供电、系统时钟 4MHz 的运行模式下,电流大约 1.2mA;切到 31kHz 低速时钟后降到 45μA 左右;进入休眠模式后,只保留看门狗和外部中断唤醒,实测电流 0.8μA。这个数据是在室温下用高精度电流表测的,板子上其他外围器件都断开了,只留主控本身。
2.2 PCA9422 的电源管理能力拆解
PCA9422 这颗芯片的功能密度相当高,我把它对项目有用的部分列一下。它内部集成了线性充电器,支持可编程充电电流,最大可以到几百毫安,对于小容量锂电池够用了。多路稳压输出方面,它提供几路可独立配置的 LDO 和一路 buck-boost,输出电压可以通过 I2C 以步进方式调节,覆盖了从 1.8V 到 3.3V 的常见需求。I2C 接口支持标准模式和快速模式,主控可以随时读取充电状态、输入电压、芯片温度等参数。
它还有一个我特别看重的特性:可编程上电时序。每一路输出的启动顺序和启动延时都可以通过寄存器配置,这对于有严格上电要求的系统来说太重要了。以前用分立方案,上电顺序靠 RC 延时或者主控 GPIO 控制,前者精度差,后者占用引脚且依赖主控先启动。PCA9422 自己就能管理时序,主控还没上电的时候,各路输出的顺序就已经按配置执行了。
低功耗模式方面,PCA9422 支持多种省电状态,可以通过 I2C 命令或者外部引脚触发切换。在系统待机时,把不需要的输出路关掉,只保留主控供电那一路,整体静态电流能压得很低。我实测过,在只保留一路 3.3V 输出、其他路全部关闭的情况下,PCA9422 自身的静态电流大约在 15μA 左右,加上主控休眠的 0.8μA,整机待机电流不到 20μA。
2.3 两颗芯片的协作关系与接口设计
PIC18LF46K42 和 PCA9422 之间通过 I2C 总线连接,主控作为主机,PCA9422 作为从机。这里有个细节需要注意:PCA9422 的 I2C 地址是固定的还是可配置的,直接影响到总线上能不能挂其他从机。我查了手册,它的地址有几种可选配置,通过特定引脚的上拉或下拉来设定,所以总线上同时挂一颗 EEPROM 或者传感器是没问题的。
中断连接也很关键。PCA9422 有一根中断输出引脚,可以在充电完成、输入电压异常、温度超限等事件发生时通知主控。我把这根线接到了 PIC18LF46K42 的外部中断引脚上,主控平时休眠,一旦电源侧有事件就立刻唤醒处理。这样就不需要主控轮询电源状态,进一步降低了功耗。
供电方面,PCA9422 的一路输出直接给 PIC18LF46K42 供电,电压设定在 3.3V。这里要注意的是,主控的 I/O 电平必须和 PCA9422 的 I2C 电平匹配。PCA9422 的 I2C 引脚电压通常跟随其供电电压,所以如果主控供电是 3.3V,那 I2C 上拉电阻也要接到 3.3V,不能接到更高的电压上,否则可能损坏 PCA9422 的 I2C 引脚。我在第一版板子上就犯过这个错,上拉接到了 5V,结果通信时好时坏,后来改成 3.3V 就稳定了。
3. 硬件设计与实操要点
3.1 原理图设计中的关键连接
画原理图的时候有几个地方我反复确认了好几遍。首先是充电输入路径,锂电池的正极接到 PCA9422 的电池引脚,同时系统负载也要从这个节点取电。这里要加足够的去耦电容,我用了 10μF 和 0.1μF 并联,靠近芯片引脚放置。充电电流设定电阻的选值要根据电池容量来算,我用的电池是 500mAh,充电电流设在大约 0.5C 也就是 250mA 左右,对应的设定电阻值查手册表格可以确定。
I2C 总线的上拉电阻取值也有讲究。总线速度我设在 400kHz,上拉电阻用了 2.2kΩ。这个值是在总线电容和上升沿时间之间折中的结果。如果上拉太大,上升沿变缓,高速通信会出错;如果上拉太小,功耗增加,低功耗模式下不划算。我实测 2.2kΩ 在 400kHz 下波形很干净,上升时间大约 300ns,满足时序要求。
中断引脚我加了一个 100kΩ 的上拉电阻,因为 PCA9422 的中断输出是开漏结构。这个引脚接到主控的 INT0 外部中断输入,配置为下降沿触发。主控休眠时,一旦电源侧有事件,中断拉低,主控被唤醒,然后通过 I2C 读取 PCA9422 的状态寄存器判断具体事件类型。
3.2 PCB 布局的注意事项
电源类芯片的 PCB 布局对性能影响很大,我踩过几次坑之后总结了几条经验。输入电容和输出电容必须尽量靠近芯片引脚,走线要短而粗,否则开关噪声和纹波会明显增大。我第一版板子把输出电容放得离芯片有点远,结果测纹波的时候发现比预期大了将近一倍,后来重新布局把电容挪到引脚旁边,纹波立刻降下来了。
接地处理也很关键。PCA9422 的接地引脚和主控的接地引脚应该通过一个低阻抗的接地平面连接,避免地环路。模拟地和数字地如果分开处理,要在单点连接,通常是在芯片下方的焊盘处。我这次板子用了四层板,第二层完整铺地,电源走线在顶层和底层,信号线尽量短,整体噪声控制得不错。
I2C 走线要远离高频开关节点,尤其是 buck-boost 的电感附近。如果走线必须经过,尽量垂直交叉而不是平行走线,减少耦合。我在布局时把 I2C 走线安排在了板子的另一侧,和电源开关区域隔开,通信稳定性明显更好。
3.3 上电时序的配置逻辑
上电时序是这套方案的核心优势之一,我详细说一下配置思路。系统里有三路主要供电:主控 3.3V、传感器 2.8V、通信模块 3.3V。上电顺序要求是主控先上电,等主控初始化完成后再给传感器和通信模块供电。这个顺序通过 PCA9422 的寄存器配置实现,每一路输出都有一个启动延时字段,可以设置从使能信号到输出电压建立之间的延迟时间。
我配置的顺序是:主控那路延时 0ms,传感器那路延时 10ms,通信模块延时 20ms。这样主控有足够时间完成初始化并准备好 I2C 通信,然后再让其他模块上电。如果顺序反了,传感器先上电而主控还没准备好,传感器可能会输出无效数据或者拉低 I2C 总线,导致主控初始化失败。我之前用分立方案时就遇到过这个问题,传感器上电后立刻开始输出,把总线拉住了,主控起不来,后来加了延时才解决。
PCA9422 的延时配置是通过 I2C 写入的,但这里有个鸡生蛋的问题:主控还没上电的时候谁来配置 PCA9422?答案是 PCA9422 支持将配置存储在内部非易失存储器中,上电时自动加载。所以我在生产时先把配置写好,之后每次上电 PCA9422 都会按照预设的时序和电压值启动,不需要主控干预。这个特性非常实用,省掉了很多初始化代码。
4. 软件配置与功耗管理实现
4.1 I2C 通信层的搭建
PIC18LF46K42 的 I2C 外设配置起来不算复杂,但有几个寄存器需要仔细设置。我把它配置为主机模式,时钟频率 400kHz,使用 7 位地址格式。初始化代码大致如下:
// I2C 主机初始化,400kHz @ 4MHz Fosc I2C1CON0 = 0x04; // 使能 I2C 主机模式 I2C1CON1 = 0x00; // 禁用多主机模式 I2C1CON2 = 0x00; // 标准配置 I2C1CLK = 0x03; // 时钟源选择 Fosc I2C1BAUD = 0x09; // 波特率设置,400kHz I2C1PIE = 0x00; // 禁用错误中断 I2C1CON0bits.EN = 1; // 使能 I2C 模块波特率的计算方式是:I2C 时钟频率 = Fosc / (4 * (BAUD + 1))。我用的系统时钟是 4MHz,想要 400kHz 的话,BAUD 值应该是 4MHz / (4 * 400kHz) - 1 = 1.5,取整后是 1 或者 2。但实际配置时我发现用 BAUD = 1 时通信不稳定,后来改成 BAUD = 2,实际速率大约 333kHz,虽然没到 400kHz,但稳定性好很多。这里不用死磕理论值,实测稳定才是硬道理。
读写 PCA9422 寄存器的函数我封装成了两个基本操作:写寄存器和读寄存器。写操作是先发送从机地址加写标志,然后发送寄存器地址,再发送数据。读操作是先发送从机地址加写标志,发送寄存器地址,然后重新发送从机地址加读标志,最后读取数据。这个流程和大多数 I2C 从机一样,但要注意 PCA9422 的寄存器地址是 8 位的,发送时不需要额外的高字节。
4.2 电源模式的动态切换策略
系统运行时有几种功耗状态,我根据实际需求定义了三种模式:全速模式、低功耗模式和休眠模式。全速模式下所有电源轨都开启,主控运行在 4MHz,传感器和通信模块正常工作。低功耗模式下关闭传感器和通信模块的供电,主控降到 31kHz 低速时钟,只保留必要的定时器和中断。休眠模式下只保留主控供电,主控进入休眠,等待外部中断唤醒。
模式切换的核心操作是写 PCA9422 的输出使能寄存器。每一路输出都有一个对应的使能位,写 0 关闭,写 1 开启。关闭某路输出后,那路负载的电流消耗就完全切断了,比让负载自己进入低功耗模式更彻底。我实测过,传感器模块即使进入自己的低功耗模式,仍然有几十微安的漏电流,而直接切断供电后漏电流降到了零。
切换顺序也有讲究。从全速切到低功耗时,要先通知传感器和通信模块做好断电准备,比如保存状态、停止通信,然后再关闭它们的供电。如果直接断电,传感器可能正在写内部存储器,突然断电会导致数据损坏。我的做法是主控先通过 I2C 给传感器发一个“准备休眠”命令,等传感器回复确认后再关闭供电。这个握手机制虽然多花几毫秒,但避免了数据丢失的风险。
4.3 中断驱动的唤醒机制
休眠模式下主控不轮询任何状态,完全靠中断唤醒。我配置了三个唤醒源:PCA9422 的中断输出、外部传感器的报警信号、以及定时器周期唤醒。PCA9422 的中断可以来自充电状态变化、输入电压异常、或者按键事件。定时器唤醒用于周期性采集,比如每 10 分钟唤醒一次读取传感器数据。
中断服务程序的编写要注意一点:进入中断后要尽快清除中断标志并读取 PCA9422 的状态寄存器,判断具体事件类型,然后决定是继续休眠还是切换到其他模式。如果中断处理时间太长,会浪费功耗。我的中断服务程序只做最必要的操作,把复杂处理放到主循环里,中断里只设置一个标志位。
唤醒后的初始化也需要考虑。从休眠模式唤醒后,主控的外设状态可能丢失,需要重新初始化 I2C 和 GPIO。我在唤醒处理里加了一段重新配置 I2C 的代码,确保通信恢复正常。这个细节很容易被忽略,但如果不做,唤醒后第一次 I2C 通信可能会失败。
5. 实测数据与功耗优化实录
5.1 各模式功耗实测对比
板子打回来之后我做了一轮完整的功耗测试,用高精度电流表串联在电池和板子之间,记录不同模式下的电流消耗。测试条件:电池电压 3.7V,室温 25℃,所有外设按模式定义开启或关闭。
| 工作模式 | 主控状态 | 电源轨状态 | 实测电流 | 备注 |
|---|---|---|---|---|
| 全速模式 | 4MHz 运行 | 三路全开 | 8.5mA | 传感器和通信模块工作 |
| 低功耗模式 | 31kHz 运行 | 仅主控供电 | 52μA | 传感器和通信断电 |
| 休眠模式 | 休眠 | 仅主控供电 | 18μA | 等待中断唤醒 |
| 深度休眠 | 休眠 | 主控供电关闭 | 6μA | 仅 PCA9422 待机 |
深度休眠模式是我后来加的一个状态,把主控的供电也关掉,只保留 PCA9422 的待机电路和唤醒逻辑。这个模式下整机电流只有 6μA,对于需要长时间存储或者极低频率采集的场景非常有用。唤醒方式是 PCA9422 检测到按键或者充电插入事件后,重新给主控上电。
从数据可以看出,关闭不必要的电源轨对功耗的影响非常明显。全速模式到低功耗模式,电流下降了超过两个数量级,主要贡献就是切断了传感器和通信模块的供电。这也验证了前面的设计思路:主动切断比被动省电更有效。
5.2 充电管理与电池续航估算
PCA9422 的充电管理我配置为恒流恒压模式,恒流阶段电流 250mA,恒压阶段电压 4.2V。充电状态可以通过 I2C 读取,包括正在充电、充电完成、充电异常等。我还在软件里加了充电温度监测,如果芯片温度超过设定阈值就降低充电电流,保护电池。
续航估算方面,假设电池容量 500mAh,系统大部分时间处于低功耗模式,电流 52μA,每天唤醒 10 次进行全速采集,每次持续 30 秒,全速电流 8.5mA。那么每天的功耗大约是:低功耗模式 24 小时减去 300 秒,约 23.92 小时 × 52μA = 1244μAh;全速模式 300 秒 × 8.5mA = 708μAh;合计约 1952μAh,也就是 1.95mAh。500mAh 的电池理论上可以支撑超过 250 天。当然这是理想估算,实际还有自放电和温度影响,但即便打对折,续航也超过四个月。
这个估算让我对方案很有信心。之前用分立方案时,光是 LDO 的静态电流就有几百微安,续航直接缩水到几周。换成 PCA9422 之后,静态功耗降到了微安级,续航提升了一个数量级。
5.3 纹波与动态响应测试
电源纹波是另一个关键指标。我用示波器交流耦合档测量了各路输出的纹波,在满载和空载条件下分别记录。主控那路 3.3V 输出,空载时纹波大约 5mVpp,满载时大约 12mVpp。传感器那路 2.8V 输出,纹波在 8mVpp 左右。这个水平对于数字电路和大多数模拟传感器来说足够了。
动态响应方面,我测试了负载突变时的电压跌落。在主控那路上加了一个电子负载,从 10mA 突跳到 100mA,电压跌落大约 80mV,恢复时间 50μs 左右。这个响应速度对于主控来说完全够用,不会导致复位。如果负载变化更剧烈,可以在输出端加更大的电容来改善,但会增加上电时间和体积,需要权衡。
这里分享一个实测技巧:测量纹波时示波器探头要用弹簧接地环,不要用长接地线,否则会引入额外的噪声,测出来的纹波偏大。我一开始用长地线测,纹波显示 30mVpp,换了弹簧环之后降到 12mVpp,差别很大。另外探头要尽量靠近输出电容引脚测量,远离开关节点。
6. 常见问题与排查技巧实录
6.1 I2C 通信失败排查
调试过程中遇到最多的问题就是 I2C 通信失败。现象是主控发送地址后收不到 ACK,或者读回来的数据全是 0xFF。排查思路我整理了一个顺序:先查硬件连接,再查时序,最后查配置。
硬件方面,先确认上拉电阻是否焊接、阻值是否正确、上拉电压是否匹配。我用万用表量了 SDA 和 SCL 对地的电阻,正常应该是上拉电阻的阻值,如果明显偏小说明有短路,偏大说明上拉没接好。然后查从机地址是否正确,PCA9422 的地址由地址引脚决定,我一开始没注意地址引脚的接法,用了错误的地址,怎么都不通,后来查手册确认了地址引脚的配置才解决。
时序方面,用示波器看 SDA 和 SCL 的波形,确认上升沿是否足够快、时钟频率是否在从机支持范围内。如果上升沿太慢,减小上拉电阻;如果时钟太快,降低波特率。我遇到过一次通信不稳定,示波器看波形发现 SCL 上升沿有台阶,后来发现是上拉电阻太大,换成 2.2kΩ 后波形干净了。
配置方面,确认 I2C 外设的使能位、时钟源、波特率寄存器都设置正确。PIC18LF46K42 的 I2C 模块有几个配置位容易漏掉,比如 I2C1CON0 的 EN 位、I2C1CLK 的时钟源选择。我建议初始化之后先做一个简单的写操作测试,用示波器确认有波形输出,再逐步调试。
6.2 上电时序异常的处理
上电时序异常的表现是系统偶尔启动失败,或者某个模块工作不正常。排查时先用示波器同时抓多路输出的上电波形,看顺序和延时是否符合配置。如果顺序不对,检查 PCA9422 的配置寄存器是否写入成功,非易失存储器是否正常加载。
我遇到过一次上电后传感器不工作,抓波形发现传感器那路输出比主控那路还早建立。查了半天发现是配置写入后没有触发保存到非易失存储器,断电后配置丢失,恢复成了默认值。PCA9422 的配置保存需要一个特定的命令序列,我漏掉了最后一步。后来在初始化代码里加上了保存命令,问题解决。
另一个常见问题是上电时电压跌落导致主控复位。如果某路输出的负载电容很大,上电瞬间充电电流会拉低输入电压,导致其他路输出也受影响。解决办法是增大输入电容,或者调整上电顺序,让大电容那路最后上电。我在传感器那路加了软启动配置,上电时电压缓慢上升,避免了浪涌电流。
6.3 休眠唤醒异常的调试
休眠唤醒异常通常表现为唤不醒、唤醒后死机、或者唤醒后功耗偏高。唤不醒先查中断配置,确认中断使能位打开、中断标志正确清除、中断优先级设置合理。我用的是外部中断 INT0,配置为下降沿触发,但一开始忘了打开全局中断使能位,怎么都唤不醒,查了好久才发现。
唤醒后死机可能是时钟切换问题。休眠时主控可能切到了低速时钟,唤醒后需要切回高速时钟,如果切换代码有问题,主控会跑飞。我的做法是在唤醒中断里先切换时钟,再做其他初始化。另外唤醒后要重新初始化 I2C,因为休眠时 I2C 模块可能被关闭了。
唤醒后功耗偏高通常是某个外设没有正确关闭,或者某个引脚状态不对导致漏电流。我遇到过一次唤醒后电流比正常休眠高了 100μA,查了半天发现是一个 GPIO 配置成了输出高电平,但外部电路是接地的,形成了漏电流路径。后来把这个引脚改成输入或者开漏输出,问题解决。这个坑很隐蔽,建议唤醒后逐个检查 GPIO 状态。
6.4 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 解决措施 |
|---|---|---|---|
| I2C 无 ACK | 地址错误、上拉缺失、从机未供电 | 查地址引脚、量上拉电阻、测从机电压 | 修正地址、补上拉、确保从机供电 |
| 上电顺序错误 | 配置未保存、延时设置不对 | 抓上电波形、读配置寄存器 | 保存配置、调整延时值 |
| 休眠唤不醒 | 中断未使能、标志未清除 | 查中断寄存器、测中断引脚波形 | 使能中断、正确清除标志 |
| 唤醒后死机 | 时钟切换错误、外设未重初始化 | 单步调试唤醒流程 | 先切时钟、重初始化 I2C |
| 功耗偏高 | GPIO 漏电、外设未关 | 逐个断开负载测电流 | 修正 GPIO 配置、关闭外设 |
| 纹波偏大 | 电容布局远、探头接地长 | 靠近引脚测、用弹簧环 | 优化布局、改善测量方法 |
这张表是我调试过程中逐步积累的,基本上覆盖了八成以上的问题。实际调试时建议按表里的顺序排查,从简单到复杂,避免一上来就怀疑芯片坏了。大多数问题都是配置或布局引起的,芯片本身出问题的概率很低。
7. 方案扩展与个人实操体会
这套电源管理方案跑通之后,我又做了一些扩展尝试。比如把 PCA9422 的充电状态和电池电压通过 I2C 读出来,在主控里做了一个简单的电量计,根据电压曲线估算剩余电量。虽然精度不如专用电量计芯片,但对于显示大概电量足够了。另外我还试过用 PCA9422 的中断输出做按键检测,把按键接在芯片的特定引脚上,按键按下时产生中断唤醒主控,省掉了一个额外的按键检测电路。
如果后续要升级这个方案,我会考虑几个方向。一是换用引脚更多、RAM 更大的主控,把数据采集和存储都放在本地,减少通信模块的工作时间。二是增加一路 boost 输出,给需要 5V 供电的传感器用。三是把 PCA9422 的配置做成可升级的,通过主控 I2C 写入新配置并保存,方便现场调整电源参数。
最后分享几个我在这个项目里体会最深的点。第一,电源管理不是选一颗好芯片就完事了,配置和布局同样重要。同样的芯片,布局不同,纹波和功耗能差出一倍。第二,低功耗是设计出来的,不是省出来的。该关的电源轨要果断关,该休眠的时候要彻底休眠,不要指望负载自己省电。第三,调试电源问题一定要有示波器和电流表,光靠万用表看不出动态问题。我在这上面花了不少时间,但每次抓到波形、定位到问题,都觉得值。第四,配置保存这个步骤千万别漏。我因为漏了保存命令,多花了一整天排查一个本可以避免的问题。
这套方案目前已经稳定运行了几个月,没有出现过电源相关的异常。如果你也在做类似的项目,希望这些经验能帮你少走些弯路。电源管理这块,前期多花点时间把时序和功耗理清楚,后期会省心很多。