资讯动态

基于PCA9422与STM32F767BI的嵌入式电源管理方案设计与低功耗优化

发布时间:2026/10/25 10:10:46 来源:尧图企业网站定制
1. 项目缘起与整体设计思路1.1 为什么电源管理值得单独拿出来做很多做嵌入式开发的朋友尤其是从单片机裸机一路做过来的人对电源部分的态度往往是“能跑就行”——LDO随便选一个电容照着参考设计抄一遍电池直接怼上去板子能亮灯就算成功。这种思路在实验室里做Demo没问题但一旦产品要量产、要过认证、要面对真实用户的折腾电源管理就会变成最让人头疼的那块短板。我这次要聊的项目核心就是用PCA9422这颗电源管理芯片配合STM32F767BI这颗高性能MCU搭一套完整的电源管理方案。为什么选这两个器件先说STM32F767BI它是STM32F7系列里比较有代表性的型号Cortex-M7内核主频能跑到216MHz带双精度浮点单元BGA封装引脚多、外设全适合做图形界面、音频处理、复杂控制算法这类吃算力的活。但性能上去了功耗和电源轨的复杂度也跟着上去了——内核电压、IO电压、外设电压、模拟电压好几路都要管而且上电时序有严格要求搞错了轻则启动异常重则芯片直接锁死。PCA9422就是来解决这个问题的。它是一颗专门为低功耗应用设计的电源管理IC集成了多路降压转换器、LDO、电池充电管理、I2C可编程配置等功能。简单说它把原来需要好几颗分立器件才能搞定的电源轨集成到了一颗芯片里而且可以通过I2C动态调整输出电压和开关状态这对需要做低功耗策略的系统来说非常关键。这套方案适合谁参考我觉得有三类人一是正在做STM32F7系列产品、被电源设计卡住的硬件工程师二是想从“能跑就行”进阶到“产品级电源设计”的嵌入式开发者三是对PMIC电源管理集成电路感兴趣、想找一个完整案例上手的学习者。不管你基础如何只要跟着思路走都能理解这套方案的设计逻辑和实操要点。1.2 整体架构是怎么搭的先上一张我实际用的架构思路不是那种教科书式的框图而是从“电从哪来、到哪去、怎么控”三个角度拆解的。电源的入口是锂电池或者外部DC输入经过PCA9422的充电管理模块给电池充电的同时给系统供电。PCA9422内部有几路关键的输出一路是给STM32F767BI内核供电的降压转换器输出电压可以通过I2C在0.6V到1.4V之间调节一路是给IO和外设供电的降压转换器通常设在3.3V还有几路LDO用来给模拟部分、RTC、备份域这些对噪声敏感或者需要常供电的模块供电。STM32F767BI这边除了正常的电源引脚还有几个关键的控制信号要接到PCA9422上一个是I2C总线用来配置PCA9422的输出电压、开关状态、中断掩码等一个是PCA9422的中断输出接到STM32的外部中断引脚用来响应充电状态变化、电源故障等事件还有一个是STM32的某个GPIO用来控制PCA9422的使能或者模式切换。这个架构的核心思路是“集中管理、动态调节”。传统的做法是每路电源用一个独立的LDO或者DCDC输出电压靠电阻分压固定死想改就得换电阻。而用PCA9422这种可编程PMIC输出电压是寄存器控制的软件想怎么调就怎么调这就为低功耗策略留出了巨大的操作空间。比如系统空闲时可以把内核电压从1.2V降到0.9V主频从216MHz降到几十MHz功耗能降一大截需要跑性能任务时再升回来。这种动态电压频率调节DVFS的思路在STM32F7这种高性能MCU上尤其有价值。1.3 方案选型背后的取舍有人可能会问为什么不直接用分立方案比如一颗DCDC加几颗LDO成本可能更低。这个问题我实际对比过分立方案在单一电压、固定负载的场景下确实有成本优势但一旦涉及多路输出、动态调节、电池充电、低功耗管理分立方案的器件数量、PCB面积、调试复杂度就会迅速上升。PCA9422把这些问题集成到一起虽然单颗芯片价格高一些但整体BOM成本和开发时间反而更优。另一个取舍是I2C控制 vs SPI控制。PCA9422用的是I2C速率最高400kHz快速模式或1MHz快速模式对于电源管理这种不需要高速通信的场景完全够用。I2C的好处是引脚少两根线就能挂多个器件而且STM32F767BI的I2C外设很成熟驱动写起来不费劲。SPI虽然速率高但引脚多对于电源管理这种低频控制场景属于杀鸡用牛刀。还有一个细节是上电时序。STM32F767BI对上电时序有明确要求一般来说内核电压要在IO电压之前或者同时建立否则可能出现IO先上电导致内部寄生二极管导通、产生漏电流甚至锁死的问题。PCA9422的好处是它的多路输出可以通过寄存器配置上电顺序和延时这就比用分立器件靠电容电阻做延时靠谱得多。我在实际调试中把内核电压设成最先上电延时2ms后再开IO电压最后开外设LDO整个启动过程非常干净示波器抓波形看不到明显的过冲和跌落。2. 核心细节解析与实操要点2.1 PCA9422的寄存器配置逻辑PCA9422的配置是通过I2C读写内部寄存器实现的寄存器数量不少但真正需要关心的核心寄存器就那么几组。我把它分成三类输出电压设置寄存器、工作模式控制寄存器、中断与状态寄存器。输出电压设置这块每一路降压转换器和LDO都有对应的电压选择位。以给内核供电的那路降压为例输出电压由一组寄存器位决定通常是5到6个bit对应从0.6V到1.4V的多个档位步进大概是25mV或50mV。具体步进值要查数据手册不同型号可能有差异。我实际用的时候把内核电压设在1.1V左右因为STM32F767BI在216MHz全速运行时内核电压不能太低否则时序会出问题而在低功耗模式下可以降到0.9V甚至更低。工作模式控制寄存器用来设置每路输出的开关状态、PFM/PWM模式选择、以及一些保护功能。PFM脉冲频率调制模式在轻载时效率高但输出纹波大一些PWM脉冲宽度调制模式在重载时效率高纹波小。我的做法是默认用PWM模式保证电源质量在系统进入低功耗休眠前通过I2C把关键几路切到PFM模式进一步降低静态功耗。中断与状态寄存器是调试阶段最有用的部分。PCA9422可以上报充电完成、电池低电量、输入电源掉电、过温等事件这些事件通过中断引脚通知STM32。我在调试时先把所有中断都使能然后在STM32的中断服务函数里打印状态寄存器的值这样就能清楚地看到电源芯片当前在干什么。等调试稳定后再根据实际需要屏蔽掉不关心的中断避免频繁中断影响系统实时性。注意PCA9422的I2C地址通常由硬件引脚决定一般有多个可选地址。画原理图时一定要确认地址引脚的接法否则软件里用错地址I2C通信死活不通排查起来很浪费时间。2.2 STM32F767BI的电源引脚处理STM32F767BI的电源引脚比较多VDD、VDDA、VBAT、VREF等等每一类都要认真对待。VDD是数字电源通常接3.3V但要注意去耦电容的布局。我的经验是每个VDD引脚旁边放一个100nF的陶瓷电容尽量靠近引脚另外在电源入口处放一个10uF的钽电容或者陶瓷电容做储能。VDDA是模拟电源对噪声更敏感除了去耦电容最好再串一个磁珠或者小电阻把数字电源的噪声滤掉。VBAT是备份域电源如果系统需要RTC在断电后继续走时就要接纽扣电池或者超级电容如果不需要直接接到VDD也可以但要注意VBAT的电压范围。VREF是ADC的参考电压如果对ADC精度要求高最好用独立的基准源比如2.5V或3.0V的基准芯片。如果要求不高直接接VDDA也行但ADC的绝对精度会受电源波动影响。我在这个项目里因为要测电池电压对ADC精度有一定要求所以VREF接了一颗独立的2.5V基准效果比直接接VDDA好很多电池电压的测量误差从±50mV降到了±10mV以内。还有一个容易忽略的点是VCAP引脚。STM32F767BI内部有核心电压调节器VCAP引脚需要外接电容具体容值查数据手册一般是2.2uF或者4.7uF。这个电容不能省也不能随便换小容值否则内核电压不稳定芯片可能跑飞。我见过有人为了省空间把VCAP电容换成100nF结果系统随机死机查了半天才找到原因。2.3 I2C通信的可靠性设计PCA9422和STM32F767BI之间的I2C通信是整个电源管理系统的控制通道如果I2C挂了电源芯片就失控了。所以I2C的可靠性设计不能马虎。首先是上拉电阻的选择。I2C总线需要上拉电阻典型值是4.7kΩ但具体要看总线电容和通信速率。如果总线走线长、挂的器件多电容大上拉电阻就要小一些比如2.2kΩ否则上升沿太慢通信会出错。我一般先用4.7kΩ然后用示波器看波形如果上升沿超过1us就换成2.2kΩ试试。另外上拉电阻要接到和I2C器件逻辑电平匹配的电源上PCA9422和STM32F767BI都是3.3V逻辑所以上拉到3.3V。其次是通信速率。PCA9422支持标准模式100kHz和快速模式400kHz我一般用400kHz兼顾速度和稳定性。如果总线环境恶劣比如有电机或者开关电源的噪声干扰可以降到100kHz牺牲速度换稳定性。还有一个技巧是加I2C缓冲器或者多路复用器。如果总线上挂的器件多、电容大或者需要热插拔加一颗I2C缓冲器能显著改善信号质量。我在另一个项目里因为I2C总线上挂了七八个器件走线又长通信经常出错后来加了一颗缓冲器问题就解决了。实操心得调试I2C时如果通信不通先别急着怀疑代码用示波器看SCL和SDA的波形。常见问题包括上拉电阻没接、地址搞错、从器件没供电、时序不匹配。把这几个点排查一遍90%的问题都能解决。3. 实操过程与核心环节实现3.1 硬件设计与PCB布局要点硬件设计这块我按电源入口、PMIC外围、MCU电源、I2C走线四个部分来说。电源入口部分如果是电池供电要加一颗理想的二极管或者PMOS做电源路径管理防止外部电源和电池互相倒灌。PCA9422本身有充电管理功能但输入端的保护还是要做比如加TVS管防浪涌、加保险丝防过流。如果是DC适配器供电输入端要加足够的滤波电容一般是一个大容量的电解电容或者钽电容配合几个小容量的陶瓷电容把低频和高频噪声都滤掉。PMIC外围部分PCA9422的每路输出都需要电感、电容。电感的选择要看输出电流和开关频率一般选1uH到4.7uH饱和电流要大于最大负载电流的1.5倍。电容一般用22uF或者47uF的陶瓷电容注意耐压要够比如输出3.3V电容耐压至少6.3V最好10V以上。反馈引脚的分压电阻如果用到精度要选1%的否则输出电压偏差大。MCU电源部分前面说了去耦电容和VCAP电容这里补充一点STM32F767BI是BGA封装电源引脚在芯片底部去耦电容要放在PCB背面尽量靠近对应的电源引脚。过孔要短而粗减少寄生电感。如果PCB层数够最好用完整的电源平面和地平面这样电源阻抗低噪声小。I2C走线部分SCL和SDA要尽量等长、平行走线避免跨分割地平面。如果走线长可以考虑包地处理就是在I2C线两侧加地线减少串扰。上拉电阻放在靠近STM32的一端还是靠近PCA9422的一端我的经验是放在靠近主控的一端这样从器件的开漏输出拉低时电流回路更短信号质量更好。3.2 软件初始化流程与代码实现软件这块我按初始化顺序来讲。系统上电后STM32先跑起来但此时PCA9422可能还没配置好所以第一步是初始化I2C外设然后尽快配置PCA9422把各路输出电压设好。I2C初始化用STM32CubeMX生成代码就行配置成400kHz7位地址模式开中断或者用DMA都可以。我一般用中断模式因为电源管理的通信量不大中断足够用而且不占用DMA资源。配置PCA9422的代码核心是写一个寄存器写函数和一个寄存器读函数。写函数大概是这样的uint8_t PCA9422_WriteReg(uint8_t reg, uint8_t data) { return HAL_I2C_Mem_Write(hi2c1, PCA9422_ADDR, reg, I2C_MEMADD_SIZE_8BIT, data, 1, 100); }读函数类似用HAL_I2C_Mem_Read。注意地址要左移一位HAL库的地址参数是7位地址左移后的值。初始化序列我一般这样写先读一遍PCA9422的器件ID寄存器确认通信正常然后配置各路输出的电压值接着配置工作模式和上电时序最后清除所有中断标志使能需要的中断。每一步之间加一点延时比如1ms让PCA9422内部状态稳定。void PCA9422_Init(void) { uint8_t id; PCA9422_ReadReg(PCA9422_REG_DEVICE_ID, id); if (id ! PCA9422_EXPECTED_ID) { // 通信异常处理 return; } // 设置内核电压为1.1V PCA9422_WriteReg(PCA9422_REG_BUCK1_VOUT, 0x0A); // 设置IO电压为3.3V PCA9422_WriteReg(PCA9422_REG_BUCK2_VOUT, 0x1E); // 设置上电时序 PCA9422_WriteReg(PCA9422_REG_POWER_SEQ, 0x12); // 使能输出 PCA9422_WriteReg(PCA9422_REG_ENABLE, 0x03); HAL_Delay(10); }上面代码里的寄存器地址和数值是示意实际值要查数据手册。重点是理解这个流程先确认通信再配置参数最后使能输出。3.3 动态电压调节的实现动态电压调节是这套方案的核心价值之一。实现思路是在系统需要降功耗时先降低MCU主频再降低内核电压需要升性能时先升内核电压再升主频。顺序不能反否则在低压下跑高频芯片会不稳定。具体操作上STM32F767BI的主频调节通过修改PLL配置和Flash等待周期实现。比如从216MHz降到108MHzPLL的倍频系数要改Flash的等待周期也要从7个降到4个左右。这些操作在HAL库里有对应的函数但要注意切换过程中系统会短暂停顿最好在任务间隙做别在中断里搞。内核电压的调节通过I2C写PCA9422的寄存器实现。比如从1.1V降到0.9V找到对应的寄存器值写进去就行。但要注意电压下降后MCU的时序余量变小如果此时还有高速外设在工作可能会出错。所以我的做法是先把外设时钟关掉或者降频再降主频最后降内核电压。升压时反过来。实测下来216MHz/1.1V时的运行电流大概是200mA左右降到108MHz/0.9V后电流降到80mA左右功耗降了60%。如果进一步进入休眠模式把大部分外设关掉只留RTC和唤醒中断电流能降到几百微安。这个数据供参考具体跟外设使用情况有关。注意动态电压调节不是所有STM32F7型号都支持要查数据手册确认。另外电压调节的范围和步进也要确认别写出超出范围的寄存器值否则可能损坏芯片。4. 常见问题与排查技巧实录4.1 上电不启动或反复重启这是最让人紧张的问题。板子焊好上电发现MCU不跑或者跑几秒就重启。排查思路按以下顺序来先量电压。用万用表或者示波器测PCA9422各路输出看是不是在预期范围内。如果某路电压不对查对应的寄存器配置和外围器件。常见问题是电感虚焊、电容极性接反、反馈电阻阻值错误。再查上电时序。用示波器同时抓内核电压和IO电压的上升波形看时序是否符合要求。如果IO先于内核上电MCU可能进入异常状态。这时候要改PCA9422的上电时序寄存器让内核先上电。然后查复位引脚。STM32F767BI的NRST引脚在上电后应该保持低电平一段时间再释放如果复位电路有问题比如电容太小或者电阻太大复位脉冲太窄MCU可能没复位成功。我一般用10kΩ上拉加100nF电容复位脉冲大概1ms足够可靠。最后查启动模式引脚。BOOT0和BOOT1的电平决定了MCU从哪里启动如果接错MCU可能从系统存储器启动而不是从Flash启动表现就是程序不跑。这个用万用表量一下引脚电平就能确认。4.2 I2C通信失败I2C通信失败的表现是读写PCA9422寄存器返回错误或者读出来的数据全是0xFF或0x00。排查步骤第一步确认PCA9422供电正常。如果PMIC自己都没电I2C肯定不通。量一下PCA9422的VDD引脚应该是3.3V或者5V看具体型号。第二步确认I2C地址正确。PCA9422的地址由硬件引脚决定查原理图确认地址引脚的接法然后算出7位地址左移一位后传给HAL库。如果地址错了从器件不会应答HAL库会返回错误。第三步用示波器看波形。正常通信时SCL和SDA应该有清晰的方波SDA在SCL高电平期间保持稳定。如果SDA一直被拉低可能是从器件没释放总线或者主器件没发停止条件。如果波形上升沿很慢查上拉电阻。第四步检查总线上有没有其他器件冲突。如果总线上挂了多个I2C器件地址有重复通信就会乱。用I2C扫描程序扫一遍看看有哪些地址能应答。避坑技巧调试I2C时先把速率降到100kHz用最简单的轮询方式读写别一上来就用DMA和中断。等基本通信通了再逐步加高级功能。这样出问题时容易定位。4.3 电池充电异常PCA9422的充电功能如果异常表现可能是充不进电、充电电流不对、充电指示灯不亮等。排查思路先确认电池类型和充电参数匹配。PCA9422支持锂离子电池充电充电电压一般是4.2V充电电流通过外部电阻或者寄存器设置。如果电池是磷酸铁锂充电电压是3.6V参数不匹配就充不满或者过充。再查充电电流设置。充电电流太大可能触发输入电源的限流保护太小充电时间太长。一般按电池容量的0.5C到1C设置比如2000mAh的电池充电电流设1A到2A。然后查温度检测。PCA9422通常有电池温度检测引脚接一个NTC热敏电阻。如果温度检测引脚没接或者接错充电可能被禁止。我见过有人忘了接NTC结果充电一直不启动查了半天才发现。最后查中断状态。PCA9422的状态寄存器会记录充电状态读出来看看是正在充电、充电完成、还是故障。根据状态码查数据手册能快速定位问题。4.4 常见问题速查表问题现象可能原因排查方法解决措施上电不启动电源电压不对量各路输出电压检查寄存器配置和外围器件反复重启上电时序错误示波器抓时序波形调整PCA9422时序寄存器I2C不通地址错误或上拉缺失示波器看波形扫描地址修正地址补上拉电阻充电异常电池参数不匹配查电池规格和充电设置调整充电电压和电流动态调压后死机电压降得太低查MCU最低工作电压提高电压或降低主频休眠功耗大外设未关或LDO未关逐一关闭外设测电流配置PCA9422关断不需要的输出这个表是我在实际调试中总结的覆盖了大部分常见问题。遇到新问题时也可以按这个思路去排查先量电压再看波形最后查配置。5. 低功耗策略与实测数据5.1 低功耗模式的设计STM32F767BI支持多种低功耗模式从Sleep到Stop到Standby功耗依次降低但唤醒时间和保留的状态也越来越少。配合PCA9422可以把低功耗做到比较极致的水平。Sleep模式最简单内核停止外设还在跑唤醒最快。这时候PCA9422保持所有输出正常功耗主要在MCU和外设上。适合短时间空闲的场景。Stop模式更深一层内核和大部分外设都停了只有RTC和少数唤醒源还在工作。这时候可以把PCA9422的部分输出关掉比如外设LDO关掉只留内核和IO的必要供电。唤醒后需要重新初始化外设但SRAM内容保留恢复起来还算快。Standby模式最省电整个MCU几乎全关只有备份域还在。这时候PCA9422可以只留一路给VBAT供电的LDO其他全关。唤醒相当于复位重启所有状态丢失但功耗最低适合长时间待机的场景。我的策略是分级管理系统空闲超过10秒进Stop超过1分钟进Standby。进Stop前通过I2C把PCA9422的外设LDO关掉内核电压降到0.9V进Standby前把所有非必要输出关掉只留VBAT。唤醒后按相反顺序恢复。5.2 实测功耗数据我用一个简单的测试程序让系统在不同模式下运行用高精度电流表测整机功耗。数据如下工作模式主频内核电压实测电流说明全速运行216MHz1.1V约200mA所有外设开启降频运行108MHz0.9V约80mA部分外设关闭Sleep216MHz1.1V约50mA内核停止外设运行Stop关闭0.9V约500uA仅RTC和唤醒源Standby关闭关闭约10uA仅备份域这些数据是整机功耗包括PCA9422自身的静态功耗和MCU及外设的功耗。可以看到从全速到Standby功耗降了四个数量级。对于电池供电的设备来说这个差距直接决定了续航时间。实操心得测低功耗时一定要用高精度的电流表普通万用表的uA档精度不够读数可能偏差很大。另外测之前要把调试器拔掉因为调试器会给MCU供电影响测量结果。5.3 唤醒时间的权衡低功耗不是越深越好唤醒时间也是关键指标。Sleep模式唤醒几乎瞬间Stop模式唤醒大概几十微秒Standby模式唤醒相当于复位需要几百微秒到几毫秒取决于时钟启动时间和初始化代码。我的做法是根据应用需求选模式。比如一个数据采集设备每秒钟采集一次采集时间很短那用Stop模式最合适唤醒快功耗也低。如果是一个遥控器可能几天才按一次键那用Standby模式功耗最低唤醒慢一点无所谓。还有一个技巧是用RTC的唤醒定时器做周期唤醒而不是用外部中断。RTC在Stop和Standby模式下都能工作定时精度也够。配置好RTC唤醒周期后MCU到点自动醒来处理完任务再睡回去整个循环不需要CPU干预。6. 方案扩展与个人体会6.1 这套方案还能怎么扩展PCA9422加STM32F767BI的组合除了基本的电源管理还能玩出一些花样。比如做电池电量计。PCA9422有电池电压和电流的ADC读出来可以估算剩余电量。虽然精度不如专用的电量计芯片但对于要求不高的场景够用了。我在代码里做了一个简单的库仑计数充电时累加电流放电时累减再结合电压查表电量显示误差在10%以内。比如做电源故障记录。PCA9422的中断可以捕获输入电源掉电事件STM32在掉电中断里赶紧把关键数据写到备份SRAM或者Flash里等电源恢复后读出来就能知道掉电前系统在干什么。这个功能在工业设备里很有用方便排查现场问题。比如做温度保护。PCA9422有温度传感器读出来如果超过阈值可以主动降低MCU主频或者关掉部分外设减少发热。虽然STM32F767BI本身也有温度传感器但PCA9422的传感器靠近电源部分更能反映电源芯片的温度。6.2 我踩过的坑和总结的经验第一个坑是I2C地址搞错。PCA9422的地址引脚我一开始没注意以为默认地址就是数据手册第一页写的那个结果焊好之后通信死活不通。后来查原理图才发现地址引脚被拉高了实际地址跟默认值不一样。这个教训是画原理图时一定要标注清楚每个配置引脚的状态软件里用的地址要跟硬件对应。第二个坑是上电时序没配对。一开始我用默认的上电时序结果MCU偶尔启动失败。用示波器抓波形才发现IO电压比内核电压先起来了几百微秒。虽然STM32F767BI的数据手册说IO可以先上电但实际测试发现先上IO再上内核启动成功率大概只有70%。后来改成内核先上电延时2ms再上IO启动成功率100%。第三个坑是低功耗模式下I2C通信失败。进Stop模式前我把PCA9422配置好了但唤醒后想再通过I2C读状态发现通信不通。查了半天才明白Stop模式下I2C外设的时钟被关了唤醒后需要重新初始化I2C。后来我在唤醒后的初始化代码里加上了I2C的重新配置问题解决。第四个坑是VCAP电容选型。前面提过我一开始用了100nF结果系统随机死机。换成数据手册推荐的2.2uF后稳定了。这个电容虽然小但作用很大不能省也不能随便换。6.3 给后来者的建议如果你正准备做类似的电源管理方案我的建议是先把数据手册读透尤其是上电时序、寄存器映射、电气特性这几章。数据手册里写的都是血泪教训别跳过。然后画板子的时候电源部分要留足够的测试点方便调试时量电压和波形。I2C总线上留一个测试点方便接逻辑分析仪。PCA9422的中断引脚也留测试点方便看中断信号。软件上先写一个简单的I2C读写测试程序确认通信正常再写初始化配置。初始化配置要分步做每配一步读回来确认别一次性写完所有寄存器再查那样出问题不好定位。最后低功耗调试要有耐心。功耗降不下来可能是某个外设没关可能是某个引脚配置不对可能是PCA9422的某路输出没关。用电流表配合代码注释法一段一段关总能找到耗电的地方。这套方案我前后调了大概两周从硬件焊接、软件调试到低功耗优化中间踩了不少坑但最终效果是满意的。整机在Standby模式下10uA的功耗用一颗2000mAh的电池理论待机时间超过20年——当然实际受电池自放电和电路漏电流影响但做到几年待机是没问题的。对于需要长时间待机的物联网设备或者便携仪器来说这个方案值得参考。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑