
芯片选型这件事说简单也简单说复杂能让人掉一把头发。我刚入行那会儿拿到一个方案需求第一反应就是打开采购网站搜型号结果搜出来几百个结果封装不同、电压不同、温度等级不同光看手册就看了三天。后来跟着一位做了十几年硬件的老工程师跑项目他跟我说了一句话让我印象特别深“你别把芯片当零件看你要把它当工种看。每个芯片在板子上都有自己的岗位先搞清楚它干什么活再去找谁能干这个活。”这句话后来成了我理解芯片分类的核心逻辑。芯片按功能分类本质上就是按它在电路里承担的职责来划分——谁负责算、谁负责记、谁负责感知外界、谁负责管电、谁负责传信号。把这几个大类搞清楚选型的时候就不会像无头苍蝇一样乱撞了。这篇文章我打算从实际项目的角度出发把芯片按功能分类这件事掰开揉碎讲清楚每个大类下面会展开具体的子类、典型型号、应用场景和选型时容易踩的坑。不管你是刚入行的硬件新人还是做了几年想系统梳理一下知识体系的工程师应该都能从中找到对自己有用的东西。1. 从一块典型PCB上认识芯片的功能分工1.1 为什么按功能分类比按型号分类更实用很多人学芯片分类喜欢按厂商记什么德州仪器系列、意法半导体系列、微芯系列记了一大堆型号真到做项目的时候还是不知道选哪个。按厂商记的问题是同一家厂商可能同时做计算、电源、模拟、存储好几条产品线你记住了厂商名字但不知道什么场景该用它的哪条线。按功能分类就不一样了它直接对应你在原理图设计阶段要回答的问题这个位置需要一个什么功能的器件我举个具体的例子。假设你现在要做一个带电池管理的便携式数据采集器主控用STM32需要采集两路模拟信号通过无线模块上传数据锂电池供电。你拆解一下需求就会发现这里面至少涉及五类芯片主控是计算处理器芯片模拟信号采集需要ADC芯片或者带ADC的MCU无线通信需要射频芯片电池充放电管理需要充电管理芯片和电源芯片固件和采集数据存储需要存储芯片。你看按功能一拆选型路径立刻就清晰了。按功能分类还有一个好处是它帮你建立了“替代思维”。比如某个型号的电源芯片缺货了你知道它属于DC-DC降压芯片这个类别就可以在同类别里找参数兼容的替代品而不是死盯着一个型号等货。2021年那波缺芯潮的时候这个能力救了很多项目。1.2 一块板子上的芯片功能分区我习惯把一块典型PCB上的芯片按功能分成五个区计算与控制区、存储区、模拟与感知区、功率与电源区、通信与接口区。这五个区不是严格隔离的有些芯片可能跨区比如SoC芯片里面可能同时集成了CPU核心、GPU、NPU和部分模拟外设但它的主要职责还是计算所以归到计算区。计算与控制区是板子的“大脑”负责执行指令、处理数据、协调其他芯片工作。存储区是“记忆”负责保存程序代码和数据。模拟与感知区是“感官”负责把现实世界的模拟信号转换成数字信号或者反过来。功率与电源区是“心脏和血管”负责供电和电能转换。通信与接口区是“嘴巴和耳朵”负责跟外部设备交换数据。这个分区方法在实际调试的时候特别好用。板子不工作了你先判断是哪个区的问题电源指示灯不亮先查功率与电源区程序跑飞了先查计算区和存储区采集数据不对先查模拟与感知区。排查范围一下子就缩小了。1.3 功能分类与选型决策的对应关系功能分类最终要落到选型决策上。我总结了一个简单的对应关系先确定功能类别再确定关键参数最后确定封装和温度等级。功能类别决定了你搜索的方向关键参数决定了你能选的范围封装和温度等级决定了最终能不能用到你的板子上。举个例子你要选一颗DC-DC降压芯片功能类别是功率与电源区下面的电源管理芯片。关键参数包括输入电压范围、输出电压、最大输出电流、开关频率、效率。假设你的输入是12V输出需要3.3V最大电流2A那你就按这个参数去筛选。筛选出来一批之后再看封装是不是适合你的板子空间温度等级是不是满足你的工作环境。这样一步步下来选型就不会跑偏。2. 计算处理器芯片从MCU到SoC的完整谱系2.1 MCU与MPU的分界线在哪里MCU和MPU的分界线很多人以为是主频高低其实不准确。我见过跑在400MHz的MCU也见过跑在200MHz的MPU。真正的分界线在于有没有MMU内存管理单元和能不能跑完整的操作系统。MCU通常不带MMU跑裸机程序或者RTOS内存和Flash集成在片内适合实时控制场景。MPU带MMU可以跑Linux这类完整操作系统内存和存储通常外挂适合需要复杂应用和网络协议的场景。STM32系列是MCU的典型代表从STM32F0到STM32H7覆盖了从低端到高端的广泛需求。我最早做项目用的是STM32F10372MHz主频64KB Flash20KB RAM做简单的数据采集和控制绰绰有余。后来项目需要跑TCP/IP协议栈和文件系统F103就不够用了换成了STM32F407168MHz主频1MB Flash192KB RAM跑RTOS加网络协议栈就很流畅了。再往上如果需要跑Linux那就得用MPU了比如RK3328、RK3588这类芯片。选MCU还是MPU核心看你的软件架构需求。如果你的程序逻辑是确定性的实时控制任务数量有限MCU就够了。如果你需要文件系统、网络协议栈、图形界面、多任务调度那MPU更合适。不要为了“性能冗余”盲目上MPUMPU的硬件设计复杂度、软件开发周期、功耗和成本都比MCU高一个量级。2.2 SoC芯片的集成逻辑与典型应用SoCSystem on Chip是把多个功能模块集成到一颗芯片上的产物。以RK3588为例它集成了四核Cortex-A76和四核Cortex-A55的CPU、Mali-G610 GPU、6TOPS算力的NPU、8K视频编解码器、多个显示接口、PCIe、USB、以太网等接口。你拿到这颗芯片基本上只需要外挂内存、存储和少量外围电路就能搭出一个完整的计算平台。SoC芯片的典型应用场景包括智能座舱、边缘计算网关、AI视觉设备、工业HMI等。我去年做过一个边缘AI盒子项目用的就是RK3588跑YOLOv5做目标检测同时处理四路摄像头输入整机功耗控制在15W以内。如果用传统的CPU加独立GPU加独立NPU的方案光是芯片数量就多出好几颗PCB面积和功耗都下不来。SoC选型的时候要注意几个关键点一是接口资源够不够用比如你需要几路USB、几路PCIe、几路以太网要提前数清楚二是内存和存储的搭配DDR的位宽和频率、eMMC的版本都会影响系统性能三是散热设计SoC芯片功耗集中散热做不好会降频甚至死机。2.3 专用计算芯片GPU、NPU、DSP、FPGA的适用边界除了通用的MCU、MPU、SoC还有几类专用计算芯片它们在特定场景下的效率远超通用处理器。GPU擅长并行浮点运算适合图形渲染和深度学习训练。NPU是专门为神经网络推理设计的能效比远高于GPU。DSP擅长数字信号处理比如音频编解码、电机控制、雷达信号处理。FPGA是可编程逻辑阵列适合需要硬件级并行和低延迟的场景比如高速数据采集、协议转换、实时图像处理。我做过一个电机控制项目最开始用MCU的PWM加软件算法做FOC控制转速环响应总是差一点。后来换成带DSP指令集的MCU同样的算法跑起来就轻松多了。再后来项目要求同时控制四路电机MCU算力不够了换成了FPGA做电流环和速度环的硬件实现MCU只负责上层逻辑效果立竿见影。这几类芯片的选型逻辑是先看你的计算任务是什么类型是标量计算、向量计算、还是需要硬件并行再看延迟要求是毫秒级、微秒级还是纳秒级最后看开发成本和周期FPGA开发周期最长GPU和NPU需要软件栈支持DSP需要专门的算法移植。3. 存储芯片数据在板子上的落脚点3.1 易失性存储与非易失性存储的选择逻辑存储芯片按掉电后数据是否保留分为易失性和非易失性两大类。易失性存储包括SRAM和DRAM掉电数据就没了但读写速度快通常用作运行内存。非易失性存储包括Flash、EEPROM、eMMC、UFS等掉电数据还在但读写速度相对慢通常用作程序存储和数据记录。选型的核心逻辑是运行时的数据和程序放在易失性存储里需要持久保存的数据和固件放在非易失性存储里。MCU内部通常集成了一定容量的Flash和SRAM小项目直接用片内资源就够了。当片内资源不够时就需要外挂存储芯片。我做过一个数据记录仪项目需要连续记录一个月的传感器数据每秒采样一次每次采样4字节。算一下总数据量30天×24小时×3600秒×4字节≈10MB。MCU片内Flash只有1MB肯定不够所以外挂了一颗SPI Flash芯片容量16MB足够存一个月的数据。运行时的缓冲区用MCU片内SRAM存满一页就写到外部Flash里。3.2 NOR Flash与NAND Flash的工程取舍NOR Flash和NAND Flash是两种最常见的非易失性存储技术。NOR Flash的读取速度快支持随机访问可以直接在芯片上执行代码但容量小、成本高、写入速度慢。NAND Flash容量大、成本低、写入速度快但不支持随机访问需要控制器管理通常用于大容量数据存储。在嵌入式项目里NOR Flash通常用来存启动代码和关键配置参数NAND Flash或者eMMC用来存操作系统镜像、文件系统和用户数据。我见过一些项目为了省成本把操作系统镜像放在NOR Flash里结果启动速度慢得让人抓狂。正确的做法是启动引导程序放NOR Flash操作系统和文件系统放eMMC。eMMC芯片是把NAND Flash和控制器封装在一起的模块对开发者来说接口更简单不需要自己管理坏块和磨损均衡。选eMMC的时候要注意RPMB分区的使用有些安全相关的数据需要存在RPMB分区里这个分区有独立的认证机制普通读写访问不了。3.3 存储芯片选型中的速度、寿命与成本三角存储芯片选型永远绕不开速度、寿命、成本这三个因素的权衡。速度方面SRAM最快DRAM次之NOR Flash再次NAND Flash和eMMC相对较慢。寿命方面EEPROM和NOR Flash的擦写次数通常在10万次以上NAND Flash的擦写次数根据工艺不同在几千到几万次之间需要靠磨损均衡算法来延长寿命。成本方面单位容量价格从高到低依次是SRAM、NOR Flash、EEPROM、NAND Flash。实际选型的时候先确定你的数据写入频率和总量。如果是频繁写入的小数据比如配置参数用EEPROM或者带磨损均衡的NOR Flash。如果是大块数据的顺序写入比如视频录像用eMMC或者NAND Flash。如果是高速缓存用SRAM或者DRAM。我踩过一个坑在一个环境监测项目里用SPI NOR Flash记录每分钟一次的温度数据跑了半年之后发现部分扇区写坏了。原因是NOR Flash的擦写寿命有限而我当时没有做磨损均衡总是往同一个地址写。后来改成循环写入加地址映射表问题就解决了。这个教训告诉我存储芯片选型不能只看容量和接口寿命管理必须提前考虑。4. 模拟芯片连接物理世界与数字世界的桥梁4.1 信号链芯片从传感器到ADC再到MCU模拟芯片里最重要的一类就是信号链芯片它负责把现实世界的模拟信号转换成数字信号供MCU处理。一个典型的信号链包括传感器、放大器、滤波器、ADC。传感器把物理量转换成电信号放大器把微弱信号放大到ADC能识别的范围滤波器去掉噪声ADC把模拟电压转换成数字码。我做过一个压力采集项目用的压力传感器输出是毫伏级的差分信号直接接ADC根本采不到有效值。中间加了一颗仪表放大器增益设为100倍把信号放大到0到3V的范围再接到STM32的ADC引脚上采集就稳定了。这里放大器的选型要注意输入失调电压和温漂这两个参数直接影响采集精度。ADC芯片的选型要看分辨率、采样率、输入通道数和接口类型。分辨率决定了能分辨的最小电压变化比如12位ADC在3.3V参考电压下最小分辨电压是3.3V除以4096约0.8mV。采样率决定了能采集多快的信号根据奈奎斯特采样定理采样率至少是信号最高频率的两倍。接口类型有SPI、I2C、并行等根据MCU的接口资源来选。4.2 电源管理芯片LDO与DC-DC的选型分水岭电源管理芯片严格来说可以归到功率芯片里但因为它涉及大量模拟设计考量我习惯放在模拟芯片这一章讲。LDO和DC-DC是两种最基本的电源转换芯片。LDO是线性稳压器优点是输出纹波小、噪声低、电路简单缺点是效率低、发热大。DC-DC是开关稳压器优点是效率高、输出电流大缺点是输出纹波大、电路复杂、有EMI问题。选LDO还是DC-DC核心看两个指标输入输出电压差和输出电流。如果压差小、电流小比如从3.7V降到3.3V、电流100mA用LDO就够了效率是3.3除以3.7约89%可以接受。如果压差大、电流大比如从12V降到3.3V、电流1A用LDO的话效率只有3.3除以12约27.5%剩下72.5%全变成热量芯片会烫得没法摸。这种情况必须用DC-DC。我见过一个项目工程师用LDO从12V降到5V输出电流500mA结果LDO表面温度到了120度手都不敢碰。后来换成DC-DC效率从41.7%提升到90%以上温度降到了50度以下。这个案例说明电源芯片选型不能只看功能效率计算必须提前做。4.3 接口与驱动芯片RS485、CAN、LED驱动的典型电路接口芯片负责电平转换和协议驱动。比如RS485芯片把MCU的UART信号转换成差分信号能传输上千米。CAN芯片把MCU的CAN控制器信号转换成差分信号用于汽车和工业网络。LED驱动芯片提供恒流输出保证LED亮度一致。RS485芯片选型要注意共模电压范围、数据速率和节点数量。MAX13487是一颗常用的RS485芯片支持自动方向控制不需要额外的GPIO控制收发切换省了一个引脚。CAN芯片选型要注意速率和隔离需求高速CAN用到1Mbps隔离CAN芯片内部集成了隔离器适合工业现场。LED驱动芯片分线性驱动和开关驱动两种。线性驱动简单但效率低适合小电流LED。开关驱动效率高但电路复杂适合大功率LED。我做过一个LED闪灯项目用的就是线性驱动芯片电路简单成本低闪灯效果也满足要求。但如果要做LED照明灯具那就得用开关驱动芯片效率才能上去。5. 功率芯片电能转换与管理的核心器件5.1 MOSFET与IGBT电压电流等级决定选型MOSFET和IGBT是两种最常用的功率开关器件。MOSFET适合低压高频场景比如12V到100V的电源转换开关频率可以到几百kHz甚至MHz。IGBT适合高压低频场景比如600V以上的电机驱动开关频率通常在几十kHz以下。选型的核心参数是耐压、导通电阻、开关速度和封装散热能力。耐压要留足够的裕量通常选工作电压的两倍以上。导通电阻决定了导通损耗越小越好但导通电阻小的芯片通常价格更高、封装更大。开关速度影响开关损耗速度越快开关损耗越小但EMI问题可能更严重。我做过一个电机驱动项目母线电压48V电流峰值20A。最开始选了一颗耐压60V的MOSFET结果电机堵转的时候母线电压尖峰到了80VMOSFET直接炸了。后来换成耐压100V的型号问题解决。这个教训是功率器件的耐压裕量一定要留够特别是电机、继电器这类感性负载关断瞬间的电压尖峰可能远超电源电压。5.2 电源转换芯片Buck、Boost、Buck-Boost的适用场景电源转换芯片按拓扑结构分为Buck降压、Boost升压、Buck-Boost升降压三种。Buck把输入电压降到比输入低的输出电压Boost把输出电压升到比输入高Buck-Boost在输入电压可能高于也可能低于输出电压的场景下使用。选型的时候先确定输入电压范围和输出电压再确定最大输出电流。比如锂电池供电的设备电池电压在3.0V到4.2V之间变化需要输出3.3V这时候电池满电4.2V高于3.3V电池快没电3.0V低于3.3V就需要用Buck-Boost芯片。如果只用Buck电池电压低于3.3V时输出就稳不住了。我做过一个便携式设备最开始用Buck芯片从锂电池降到3.3V电池用到3.4V左右设备就重启了因为Buck芯片的压差不够了。后来换成Buck-Boost芯片电池用到3.0V还能正常工作续航时间多了将近20%。5.3 充电管理芯片与电池保护芯片的配合充电管理芯片负责给锂电池充电电池保护芯片负责防止过充、过放、过流、短路。TP4056是一颗经典的线性锂电池充电芯片电路简单适合小容量电池。4056A是它的升级版增加了温度监测和充电状态指示功能。4054充电芯片规格书里标注的充电电流范围是几十毫安到几百毫安适合小型便携设备。充电管理芯片选型要注意充电电流、充电电压精度、是否支持温度监测。电池保护芯片选型要注意过充保护电压、过放保护电压、过流保护阈值。这两类芯片通常配合使用充电芯片负责正常充电保护芯片负责异常保护。我见过一个项目工程师只用了充电芯片没有加保护芯片结果电池过放到了2.0V电池鼓包了。锂电池过放到2.5V以下就会损坏必须有保护芯片在2.5V左右切断负载。这个坑一定要避开。6. 通信与接口芯片设备互联的物理层实现6.1 有线通信芯片以太网、USB、CAN、RS485有线通信芯片负责实现各种有线协议的物理层。以太网芯片分MAC和PHY两部分有些MCU集成了MAC只需要外挂PHY芯片。USB芯片分Host和Device两种角色有些MCU集成了USB控制器只需要外挂接口保护器件。CAN芯片和RS485芯片前面已经提过这里不再重复。以太网PHY芯片选型要注意速率10M/100M/1000M、接口类型MII/RMII/RGMII、是否支持自动协商。我做过一个工业网关项目用的就是外挂PHY芯片的方案MCU通过RMII接口连接PHYPHY再通过变压器连接到RJ45座子。这里变压器的作用是隔离和阻抗匹配不能省。USB接口保护器件包括ESD保护二极管和限流开关。ESD保护二极管防止静电打坏芯片限流开关防止过流。这两个器件成本很低但能大幅提升产品的可靠性建议不要省。6.2 无线通信芯片WiFi、蓝牙、LoRa、ZigBee的选型维度无线通信芯片的选型维度包括通信距离、数据速率、功耗、频段、协议栈复杂度。WiFi适合高速近距离场景蓝牙适合低功耗短距离场景LoRa适合低功耗远距离场景ZigBee适合自组网场景。ESP32是一颗集成了WiFi和蓝牙的SoC芯片在物联网项目里用得非常多。它自带MCU核心可以独立运行程序也可以作为从机和主控MCU配合使用。我做过一个智能家居网关用的就是ESP32同时跑WiFi和蓝牙WiFi负责连接路由器蓝牙负责配网和连接传感器。无线芯片选型的时候射频布局非常关键。天线匹配电路、地平面设计、走线阻抗控制都会影响通信距离和稳定性。我见过一个项目同样的芯片和固件换了PCB布局之后通信距离从50米降到了10米后来发现是天线匹配电容的接地过孔太少导致匹配失效。射频这块布局比选型更重要。6.3 接口扩展芯片I2C、SPI、UART扩展与电平转换当MCU的接口不够用时就需要接口扩展芯片。I2C扩展芯片可以一路I2C扩展出多路GPIO比如PCA9555可以扩展16路GPIO。SPI扩展芯片可以扩展出多路UART或者CAN。UART扩展芯片可以一路UART扩展出多路串口。电平转换芯片用于不同电压域之间的信号转换。比如MCU是3.3V逻辑外设是5V逻辑直接连接可能损坏MCU需要电平转换芯片。电平转换芯片分双向和单向两种双向的适合I2C这类双向总线单向的适合UART这类单向信号。我踩过一个坑在一个项目里3.3V的MCU直接连接5V的LCD模块结果MCU的IO口烧了。后来加了电平转换芯片问题解决。这个坑提醒我不同电压域的器件连接之前一定要确认逻辑电平是否兼容。7. 功能分类在实际选型中的落地方法7.1 从需求到芯片清单的拆解流程实际项目里从需求到芯片清单的拆解流程是这样的先画系统框图把功能模块划分清楚再为每个模块确定关键参数然后按功能类别去搜索候选芯片最后对比参数、封装、价格、供货情况确定最终型号。系统框图是第一步也是最关键的一步。框图里每个方框代表一个功能模块方框之间的连线代表数据流或能量流。画完框图你就能清楚地看到需要哪些功能类别的芯片。比如框图里有“电池充电”这个方框你就知道需要充电管理芯片有“无线通信”这个方框你就知道需要射频芯片。确定关键参数的时候要区分“必须满足”和“最好满足”。比如输入电压范围是必须满足的效率是最好满足的。先把必须满足的参数列出来用这些参数去筛选筛出来的候选芯片再按最好满足的参数排序。7.2 选型中的替代方案与国产芯片的考量选型的时候一定要准备替代方案。主选型号和备选型号最好来自不同厂商封装和引脚尽量兼容这样一块PCB可以贴两种芯片缺货的时候不至于停产。国产芯片这几年进步很快在电源管理、MCU、模拟开关等领域已经有很多可以替代进口型号的选择。GD芯片在MCU领域是一个典型的国产替代方案引脚和STM32兼容固件移植工作量不大。3PEAK的模拟芯片在信号链和电源管理领域也有不少型号可以对标进口产品。选国产芯片的时候要注意数据手册的参数测试条件可能和进口芯片不同要仔细对比实际工作条件下的性能。我个人的经验是关键位置比如主控、ADC、精密运放优先选经过验证的型号非关键位置比如LED驱动、电平转换、接口保护可以积极尝试国产芯片。这样既保证了核心性能又降低了成本和供货风险。7.3 芯片测试与验证环节的功能分类视角芯片测试和验证环节也可以借助功能分类来提高效率。计算类芯片重点测运算性能和接口时序存储类芯片重点测读写速度和数据保持能力模拟类芯片重点测精度和噪声功率类芯片重点测效率和温升通信类芯片重点测通信距离和抗干扰能力。我习惯在测试计划里按功能类别分组每个类别列出对应的测试项和判定标准。比如电源芯片的测试项包括输入电压范围、输出电压精度、负载调整率、效率曲线、纹波、温升。这样测试的时候不会漏项出了问题也容易定位。芯片测试还有一个容易被忽略的点是批次一致性。同一型号不同批次的芯片参数可能有细微差异。批量生产之前最好多买几个批次的样品做对比测试确认参数分布范围。我见过一个项目小批量试产没问题大批量生产的时候发现部分板子的ADC精度不达标后来查出来是ADC芯片换了批次偏移误差变大了。7.4 常见分类混淆与选型误区最后说几个常见的分类混淆和选型误区。第一个误区是把MCU和SoC混为一谈其实两者的软件架构和硬件设计复杂度差别很大。第二个误区是把LDO和DC-DC的适用场景搞反导致要么效率太低要么纹波太大。第三个误区是忽略存储芯片的寿命管理导致产品用了一段时间之后数据丢失。第四个误区是功率器件的耐压裕量不够导致批量炸机。第五个误区是无线芯片只看参数不看布局导致通信距离不达标。这些误区我都踩过或者见别人踩过每一个都付出了真金白银的代价。芯片选型这件事理论归理论最终还是要落到实际项目里反复验证。功能分类是一个帮你理清思路的工具但工具用得好不好还得看你对具体应用场景的理解深度。我在实际项目里还有一个习惯每选一颗芯片都在选型表里记下选它的理由和当时的考量。项目做完之后回头看哪些选对了哪些选错了原因是什么。这个习惯坚持了几年之后选型的直觉就慢慢培养起来了。芯片分类的知识可以从书本和文章里学但选型的判断力只能从项目里积累。希望这篇文章能帮你少走一些弯路把更多时间花在真正有价值的设计工作上。