资讯动态

Microchip新8位MCU系列:模拟集成与硬件自动化双线升级

发布时间:2026/8/27 14:10:03 来源:尧图企业网站定制
1. 一次发两个系列Microchip要补的是哪两块短板Microchip这次一口气端出两个新的MCU系列消息出来的当天我身边几个做嵌入式开发的同事就在群里讨论到底值不值得把手头项目迁过去这种心情我很理解MCU选型这种事换平台等于把底层BSP、硬件设计、调试经验全部重新走一遍没有足够充分的理由谁也不愿意折腾。但如果你做的是传感器采集、电机控制或者电池供电设备这两个新系列里的东西值得你认真看一下。1.1 Microchip的三条产品线这次新系列落子在哪Microchip的MCU版图这么多年一直是三条线并行8位的PIC和AVR16位的PIC24/dsPIC32位的SAMCortex-M内核。很多新入行的朋友不理解这家厂商为什么不把资源全部集中到ARM内核上反而一直养着PIC和AVR两套8位体系。原因其实很简单8位MCU在成本、功耗、封装体积上有不可替代的位置。工业控制里大量传感器调理、电源管理、电机辅助控制这类活用32位属于杀鸡用牛刀8位才是性价比最合适的那把刀。这次两个新系列落子都在8位产品线上本身就是一个信号Microchip判断这块市场的需求远没有饱和只是需要一个更现代的答案。所谓“更现代”不是把主频堆得更高而是把以前需要外围电路和外部分立器件才能干的事情用更高的集成度、更智能的外设组合做进去。两个系列分别从两个角度切入一个主打模拟信号链的集成一个主打核心独立外设与硬件自动化。这两条路线恰恰是过去五年8位MCU市场上被验证过的两个增长点。1.2 新系列A模拟信号链的一次集中上探先说模拟集成这条路。以前做一个高精度传感采集模块板子上要摆仪表放大器、精密电阻、外部ADC再把信号送到MCU里处理。这样做的结果是BOM成本高、layout面积大而且模拟链路一旦走线过长抗干扰能力就下降。新系列A的思路是把运放、DAC、比较器、12位ADC这些模拟前端模块直接做进MCU内部。以我看到的PIC16F171系列为例它内部集成了高速运放和12位差分ADC可以直接对传感器的小信号进行放大和采样很多信号调理电路不再需要放在板级。这样做的好处不只是省钱省面积。更关键的一点是信号链路的噪声被压缩了。外部走线越长吸附的干扰就越多把运放输出到ADC输入这一段模拟信号挪进芯片内部布线的自由度大大提高EMC问题也会少很多。做工业传感器的老工程师都有这种体验模拟采样那一小块电路往往是整个板子最难布的地方新系列等于是把这个难点直接收了回去。当然集成模拟外设并不意味着外部什么都不用管。参考电压滤波、输入RC滤波、电源去耦这些基本功依然很重要但它确实把“首次打样就能采样准”的概率提高了一大截。1.3 新系列B硬件自动化与低功耗的延续第二个系列的主线是“核心独立外设”Core Independent PeripheralsCIP加低功耗。不少工程师一听到“8位MCU”第一反应是性能不够用。实际上大量实时性要求高的任务根本不需要CPU逐条执行指令。比如PWM生成、定时器联动、事件触发、可配置逻辑单元CLC这些外设可以自己跑成一个硬件状态机CPU只在必要时介入。这样CPU可以腾出时间去处理通信协议和跑算法系统的实时性和功耗表现反而更好。AVR EA系列就是沿着这条路在走。它内部同样集成了12位差分ADC、运放、DAC这些模拟资源同时在事件系统和低功耗模式上做了优化。几个外设之间可以互相触发完全不需要CPU参与。我曾经用类似的硬件架构做过一个电池供电的温湿度采集节点MCU大部分时间处于睡眠状态每秒钟醒来一次采样数据然后借助事件系统自动把数据搬到串口发送缓冲区整机平均功耗能压到微安级。这种设计在纯靠CPU轮询的老式8位MCU上很难做到。1.4 两个系列怎么选一张表说清楚两个系列都支持8位主力市场但设计导向有明显区分。我整理了一张选型对照表方便你快速判断手上的项目更适合哪一边对比维度模拟信号链系列如PIC16F171核心独立外设系列如AVR EA核心定位传感器信号调理、仪器仪表、电机电流采样电源管理、逻辑控制、接口转换、低功耗采集模拟资源高速运放、12位差分ADC、DAC、比较器12位差分ADC、运放、DAC、比较器主要卖点模拟前端集成度高板级设计简化CIP硬件自动化低功耗表现突出事件系统丰富适用场景需要稳定采集小信号的场景需要外设自行协同、CPU负担重的场景CPU负载中等ADC和运放模拟链路由硬件完成但控制逻辑仍需CPU通过硬件联动降低中断和轮询频率CPU负载更低简单说如果你项目里的核心痛点是“信号采不准”“模拟前端太多”优先考虑新系列A如果项目痛点是“功耗压不下来”“CPU忙不过来又要处理多种外设”重点看新系列B。当然这两个系列不是互斥关系很多项目里你可能会发现任选一个都比老平台好用。2. ADC与运放新系列对“传感采集”这件事做了什么新系列最大的变化在模拟外设那就不妨把ADC和运放这部分掰开揉碎讲一讲。很多人在MCU开发里一碰到ADC就发怵主要是不理解它内部到底怎么工作的。搞懂了原理寄存器的配置就不再是死记硬背。2.1 SAR ADC的原理和转换时间到底怎么算新系列里用的基本都是逐次逼近型ADCSAR ADC内部主要由比较器、电容阵列、逐次逼近寄存器组成。它转换的思路可以理解成“天平称重”先把未知电压放在一端然后用已知的参考电压从高位到低位一步步去试。比如12位ADC有4096个台阶它先试参考电压的一半看看比输入电压高还是低根据比较结果决定这一位是1还是0然后继续试下一位直到把所有位都确定下来。这样算下来完成一次完整转换需要N个比较周期12位就是12个周期再加上采样阶段一次转换大概需要13到15个ADC时钟周期。所以ADC总转换时间约等于“采样时间 转换周期数 × ADC时钟周期”。很多新手只关心ADC时钟频率却忽略了采样时间。如果你的信号源阻抗很大比如一个几十千欧的分压电阻网络直接接到ADC引脚采样电容在有限采样时间内充不到输入电压那么采样结果就会偏低而且这个误差是“稳定复现”的你用万用表量信号源电压发现没问题但ADC读出来就是不对。新系列的ADC模块通常提供了可配置的采样时间寄存器遇到高阻抗信号源时把采样时间拉长几倍精度立刻就能改善。这是我在现场调试中反复遇到的一个坑也是“mcu adc工作原理”里最容易被人忽略的部分。2.2 把运放装进MCU板级设计能省下多少事以前做微小信号采集传感器出来的信号往往只有几毫伏到几十毫伏直接进ADC连一个LSB都不到。标准做法是先在外部用运放放大到满量程附近再送进MCU。这个方案要求设计者会选运放、会算增益、会把反馈电阻的精度做对对新手朋友来说门槛不低。新系列把运放集成到MCU内部等于给了一块“可配置增益的放大级”。你用寄存器设置好增益输入信号经过片内运放放大后直接送到ADC采样。以电流采样为例电机控制里经常要采集采样电阻上的压降这个压降通常很小需要放大若干倍后才适合ADC转换。以前要专门选一颗合适的电流检测运放现在MCU内部那一组就可以承担。再加上很多新系列支持差分ADC输入可以直接测量采样电阻两端的电压共模干扰能被抑制掉一大截。不过集成运放也不是没有代价。片内运放的带宽、噪声和失调电压指标肯定不能跟专用的高性能外部运放比这是物理决定的。所以在高精度仪器仪表这类要求极高的场合外部精密运放仍然有存在价值。但对于绝大多数工业传感、消费电子、小功率电机控制的场景片内运放完全够用而且系统体积、BOM成本都会明显下降。2.3 采样保持、参考电压、地平面精度三件套把ADC用准绕不开三件事采样保持时间、参考电压、地平面处理。采样保持时间前面提过了它和信号源阻抗强相关。原则是信号源阻抗越高需要的采样时间越长。如果信号源是运放输出阻抗很低默认采样时间通常够用如果信号源直接来自高阻分压器或传感器就要手动加大采样时间。我的经验是拿不准的时候把采样时间设置为配置范围里偏大的那一档绝大多数情况下不会出错付出的代价只是采样率下降一点而已。参考电压决定了ADC转换的“尺子”是否准确。大部分MCU默认用VDD作为参考电压这本身没问题前提是VDD必须干净。如果你的VDD纹波大ADC结果就会跟着抖动。在做模拟采样时即便你用内部参考电压也建议给AVDD和VREF引脚加上RC滤波至少放一个0.1微法的去耦电容靠近引脚放置。很多原厂评估板上都有这路滤波设计你照抄就行。地平面处理核心思路是模拟地和数字地单点连接不要让数字开关噪声串进模拟采样回路。8位MCU的封装小、引脚密PCB上不一定要把模拟地数字地彻底分开但至少采样电路的“地”要就近、连续地回到MCU的地引脚不要在采样回路中间穿过一条数字信号线。3. 上电那几毫秒启动流程、复位源与时钟树讲完模拟外设我们把视角转向MCU上电的那一刻。我经常遇到朋友问“为什么我的板子一上电就卡死”“为什么偶尔会自己重启”这些问题很多时候就藏在启动流程、复位源和时钟配置里。3.1 给新手的MCU启动流程全景图一颗MCU从通电到执行你的main函数中间发生的事情比你想象的要多。大致顺序是电源电压爬升到阈值后内部上电复位POR电路被释放时钟开始起振等待稳定CPU从复位向量取出第一条指令地址初始化堆栈指针跳转到启动代码启动代码完成RAM清零、数据段拷贝把C运行环境准备好最后才调用main。很多人写程序只关心main里怎么配置其实启动阶段常常藏着问题。比如你犯了“堆栈溢出”的错误那可能不是运行时才发生而是启动代码在初始化阶段就爆了。再比如你用了外部晶振但晶振起振速度很慢如果代码里没有等待时钟稳定的逻辑就可能出现上电后程序跑飞的现象。新系列内部的时钟管理单元通常会自动等待振荡器稳定只要你的配置字没写错基本不会出大问题。还有一类典型问题出在配置字configuration words或熔丝位fuses上。8位MCU的很多关键属性比如看门狗是否默认开启、复位引脚是否禁用、代码保护是否生效都是由这些配置位决定的而不是由main函数里的代码决定。我见过不少项目写好了完整逻辑一烧录发现MCU无法连接编程器排查半天才发现是配置字把代码保护打开了。第一次接触某款芯片时一定要先把配置字相关的文档读干净。3.2 复位源判断设备循环重启时先看这个寄存器MCU复位不是只有上电这一种来源。常见的复位源包括上电复位POR、欠压复位BOR、外部复位引脚MCLR、看门狗复位WDT和堆栈溢出复位。大部分现代MCU在复位后会保留一个复位原因寄存器你可以通过读取它来知道这颗芯片上电之后经历的到底是什么类型的复位。前阵子我帮一个客户排查设备“偶尔重启”的问题现象是运行十几分钟到几小时不等就会自动复位一次。这类随机复位用示波器很难抓因为周期太长。我给他的建议是在main函数最开始加一段代码读取复位原因寄存器把复位源信息存到EEPROM或Flash的一个固定地址。跑一段时间后把日志读出来发现每次复位都是BOR欠压复位。继续往下查发现电源电路的储能电容容量偏小只要设备里某个大负载瞬间启动电源电压就被拉低到BOR阈值以下。把电容加大一档问题就消失了。这个案例想说明白一件事遇到复位问题不要急着怀疑代码先去读复位原因寄存器很多时候能帮你省下一整周的排查时间。新系列的参考手册里复位原因寄存器都写得非常清楚调试时养成“上电先读复位原因”的习惯非常有价值。3.3 时钟该用内部RC还是外部晶振新系列出厂时内部RC振荡器已经做过校准精度一般能做到±1%到±2%这个精度对UART通信、普通定时器、LED控制来说完全足够。如果你的产品对成本敏感、引脚紧张直接使用内部RC就能省下两颗晶振负载电容和两个引脚非常划算。但有几类场景外部晶振是绕不开的。第一是USB通信USB规范要求时钟精度至少在0.25%以内内部RC基本不可能达到。第二是CAN总线位时序对时钟偏差很敏感用内部RC容易在长距离和重负载下丢帧。第三是需要长时间精确计时的应用比如RTC日历内部RC的温漂会让时间越走越偏。新系列如果带PLL你还会面对PLL配置的问题。PLL的作用是把低频时钟倍频到高频系统时钟但PLL的输入频率范围、倍频系数、输出分频系数之间要满足数据手册里的约束。很多新手直接抄Demo的PLL配置换了一颗不同频率外部晶振后系统跑不起来原因就是PLL参数没有跟着改。配置PLL时先查数据手册里的频率表确认输入频率和输出频率落在允许范围内再回去填寄存器这样最稳妥。4. 串口上拉、GPIO设计与FOC三个高频实战问题开发过程里有三个问题被问得特别多一个是串口接收端要不要外加上拉一个是GPIO内部上拉到底可信不可信还有一个是8位MCU跑FOC现不现实。这三个问题都和硬件设计、外设能力有关放在一起讲正好。4.1 串口接收端要不要外加上拉取决于这三件事“mcu串口接收端口是否有上拉”这个问题几乎每个月都会在社区里出现。直接说结论UART协议规定空闲状态为高电平所以接收端在空闲状态下必须保持高电平。如果你用的是标准RS-232电平转换芯片或者USB转串口芯片对方芯片在空闲状态下会主动输出高电平MCU这边不加上拉也没有问题。但是如果你的MCU接收引脚直接连接到一个排针或连接器对端设备可能在调试时根本没插上此时MCU的RX引脚就处于悬空状态。悬空引脚的电压是不确定的不断跳变很容易造成MCU收到一堆乱码甚至因为引脚电平抖动导致误唤醒。第二种需要上拉的场景是长线传输。导线本身是天线会吸收各种电磁干扰给接收端一个弱上拉可以让线路在空闲时稳定在高电平降低干扰引发误触发的概率。第三种场景是热插拔在连接器带电插拔的瞬间引脚电平会经历剧烈变化上拉电阻能把引脚尽快拉回确定状态。上拉电阻选多大工程上常用10千欧起稳定电平的作用功耗又不至于过大。而且要注意MCU内部的上拉电阻往往有几十千欧阻抗较高对于干扰比较强的环境来说效果有限。所以我的建议是只要是板间连接的串口不管电平标准是TTL还是RS-232都在靠近连接器的地方放一个10千欧上拉电阻到VDD接收端和发送端都可以加。成本就几分钱稳定性提升明显。4.2 内部上拉不是万能药阻值、泄漏电流与上电时序MCU的GPIO内部上拉电阻特点用一个词概括就是“弱”。不同型号的内部上拉阻值从20千欧到70千欧不等具体数值必须查数据手册不能想当然。以I2C总线为例I2C规范要求上拉电阻通常在1千欧到10千欧之间总线上拉能力要能应付所有设备的灌电流需求。如果你偷懒直接用MCU内部上拉去跑I2C在低速模式下可能勉强能工作但总线电容一大、通信速率一提高上升沿就会变得很平缓通信偶发错误的概率显著上升。所以I2C总线的上拉电阻必须外部加别指望内部上拉能够替代。按键输入是另一个常见场景。按键一端接GND另一端接GPIO启用内部上拉后常态读取为高按下为低电路上不需要外部电阻。这个用法没毛病但要注意按键在按下和释放瞬间会有机械抖动电平会快速跳动多次。纯靠内部上拉并不能消除抖动你仍然需要软件消抖或外部RC滤波。新系列的部分型号在输入滤波方面做了硬件支持配置好触发条件后可以省掉一段消抖代码这类外设细节值得好好挖一下。还有一个容易踩的坑是上电时序。MCU在复位期间GPIO引脚通常处于高阻输入状态此时如果某个引脚被外部电路拉到了一个你不想看到的状态比如控制了一个MOSFET的栅极就可能在上电瞬间导致负载误动作。设计的时候要留意那些复位期间必须处于安全状态的引脚外部最好加上下拉电阻把上电瞬间的电平固定住。4.3 8位MCU跑FOC的底气运放高速ADCPWM配合FOC即磁场定向控制是直流无刷电机BLDC和永磁同步电机PMSM的主流控制算法。完整的FOC链路包括采集电机相电流和母线电压做Clark变换和Park变换经过PID调节再做反Park变换最后通过SVPWM生成三相PWM波驱动逆变器。这套算法涉及大量三角函数和矩阵运算通常被认为是32位MCU的“主场”很多工程师也习惯用STM32、TI的C2000这类芯片来做FOC。像热词里提到的STM32H7系列做FOC性能确实绰绰有余。但新系列8位MCU能不能碰FOC答案是可以但要做对分工。FOC最消耗CPU的部分是两个一是高速、同步的相电流采样二是PWM占空比的实时更新。传统8位MCU的ADC速度不够而且采样和PWM更新之间需要CPU反复介入中断处理频繁CPU根本忙不过来。新系列把这两块用硬件做了加速运放负责放大采样电阻上的微小压降差分ADC可以做到与PWM定时器同步触发采样硬件事件系统可以把“PWM周期开始”这个事件直接送到ADC触发端口ADC转换完成后又通过硬件事件去触发DMA搬运整个采样链路可以做到不用CPU参与。SVPWM方面虽然计算还是要CPU来做但PWM模块本身支持中心对齐、互补输出、硬件死区插入这些以前需要CPU配合完成的细节现在都是硬件自动处理。所以我的结论是在8位新系列上跑FOC适合那些小功率、对成本敏感的场景比如风扇、水泵、电动工具、小型云台电机。高端伺服、大功率牵引这类对动态响应和控制带宽要求极高的应用还是选更高性能的MCU或专用电机控制芯片更稳妥。选型的时候先算清楚你的PWM频率和电流采样频率看看CPU在完成FOC计算后还有多少余量处理通信和上层逻辑如果余量低于30%建议直接上32位。5. 新平台的开发环境搭建与换型决策了解完芯片本身最后聊一聊怎么上手以及要不要换平台。新系列再强开发工具链不顺手落地效率也会打折扣。5.1 MPLAB X与MCC新系列的标准着陆方式Microchip自己的开发环境是MPLAB X IDE搭配XC系列编译器8位MCU用XC8。这套工具链的最大特点是官方支持完善新系列发布后设备数据库和编译器更新都很及时基本不用担心遇到“芯片没被工具识别”的情况。对新手来说MPLAB X里有MCCMPLAB Code Configurator图形化配置工具你可以在图形界面里勾选要用哪些外设、引脚如何分配、时钟频率多少MCC会自动生成初始化代码。这比自己翻寄存器手册手写初始化代码要快得多也能大幅减少初学者在寄存器配置上的错误。不过MCC生成的代码不是银弹。它生成的初始化代码偏保守很多外设参数都按“安全默认值”配置到了实际优化阶段你还是得回到数据手册逐项确认。我的建议是用MCC搭好工程框架然后针对关键外设的寄存器配置逐个对照参考手册检查一遍尤其是时钟、ADC采样时间、PWM死区这些和产品特性强相关的参数。调试器方面入门可以选MPLAB Snap支持调试和编程性价比高如果要做更复杂的功耗分析可以上更高等级的调试器。开发板上通常自带板载调试器比如PKOB系列买一块官方评估板插上USB就能开跑比你自己画最小系统板要省事得多。5.2 在VS Code里搭建MCU开发环境的可行路径现在很多嵌入式工程师习惯在VS Code里写代码因为编辑体验、代码补全、Git集成确实比传统IDE舒服。VS Code能不能开发Microchip的新系列完全可以。大致有两种路径。第一种是用PlatformIO插件。PlatformIO的生态里支持Microchip AVR和PIC系列你可以在项目配置文件里指定开发板型号和框架插件会自动拉取编译器、烧录工具直接在VS Code里完成编译和上传。这个方案对AVR系列尤其友好因为AVR的GCC工具链是开源的PlatformIO支持很成熟。PIC系列稍微复杂一些XC8编译器的授权管理需要在外部处理好但同样可以配置给VSCode调用。第二种是用CMake加命令行工具链。你先用官方工具生成编译依赖或库文件再通过CMake组织代码VS Code里安装C/C插件配置好IntelliSense的编译器路径和宏定义就能获得不错的代码提示体验。调试则依赖OpenOCD或pyOCD配合调试器来实现。这条路配置起来麻烦一些但自由度更高适合团队统一开发环境。我的建议是如果项目团队里有不熟悉命令行的成员老老实实用MPLAB X避免把时间花在环境折腾上如果都是老手VS Code完全可行。不用盲目追求“IDE越重越好”关键是团队用着顺手。5.3 我的选型建议别为了“新”而“换”最后聊选型决策。很多工程师看到新系列发布就想着“是不是应该全切过去”。我的态度是先别急着动有几个客观条件摆在一起看。值得换的情况第一你的现有方案里用了外部运放或外部ADC而这些功能新系列已经集成并且集成后的精度指标能够满足需求这种情况换平台可以显著降低BOM成本。第二你正在做一个全新项目还没有历史代码包袱新系列的外设和低功耗模式能带来设计便利那没有理由不选新平台。第三你的产品对PCB面积和功耗有苛刻要求比如便携医疗设备、物联网传感器节点新系列的高集成度和低功耗是实实在在的优势。不值得换的情况也很明显现有产品已经在量产代码经过多轮验证供应链和测试流程都稳定了这时候仅仅因为“新系列更强”就换平台风险远大于收益。另外如果你们团队对老平台非常熟而新系列带来的收益又不明显那么学习和切换成本可能会吃掉所有好处。一个折中的做法是新项目优先试水新系列老产品继续维护既有平台。等新系列在你团队里积累出足够的开发经验和验证数据后再做全局性的决策。先买一块官方评估板把你要用的外设都跑一遍Demo确认没有自己无法接受的坑再投入正式设计。最后说一点我个人的体会。换MCU平台最怕的不是芯片本身有问题而是你对它的“脾气”不熟。新系列发布初期官方勘误手册Errata一定要从头到尾看一遍里面会列出首批芯片已知的问题和规避方法原厂FAE也会有一些在文档里还没更新的建议。这些信息往往能帮你少走很多弯路。在正式画板之前花一两周时间带着前文的这些关注点把新系列的启动流程、模拟外设、时钟配置都实测一遍后面整个项目推进就会顺畅得多。

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

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

免费获取报价