面灵AI→

盛宏嵌入式一面:CAN、低功耗与外置ADC选型

轮次
一面
时间
2026-09
来源
牛客网

《面试题目》

  1. 聊聊 CAN(总线相关)
  2. 低功耗设计
  3. 为什么用外置 ADC?

《参考解析》

CAN 总线:这是一道典型的嵌入式基础题,能答到的层次决定分数。物理层上,CAN 用一对差分线(CAN_H/CAN_L)传输,差分方式抗共模干扰,总线两端必须各接一个 120Ω 终端电阻做阻抗匹配;电平显性(dominant,逻辑 0)会覆盖隐性(recessive,逻辑 1),这是仲裁能工作的物理基础。帧格式上,标准帧 11 位标识符、扩展帧 29 位,数据场经典 CAN 最多 8 字节,CAN FD 可以到 64 字节并支持更高的数据段波特率。仲裁机制是非破坏性的逐位比较:多个节点同时发送时,谁先发出隐性位却读回显性位就退出,标识符数值越小优先级越高——所以关键报文(如刹车、故障)要分配小 ID。位定时上要会算采样点,一个位时间由同步段 + 传播段 + 相位缓冲段 1/2 组成,采样点一般在 75%~87.5%,同总线所有节点必须配置一致的波特率与采样点,否则偶发错误帧。错误处理上每个节点维护 TEC/REC 计数器,超过阈值进入错误被动、再超就 Bus-Off,靠 CAN_Init 重新恢复;总线上出现连续错误会发错误帧主动破坏数据,这是 CAN 的容错设计。软件侧常见是邮箱/过滤器配置(验收滤波器决定收哪些 ID)、发送优先级队列、以及 bus-off 恢复策略。如果项目里用过,讲清楚你调过哪些寄存器、怎么用示波器或 CAN 分析仪定位过通信故障。

低功耗设计:可以从「硬件」和「软件」两条线讲。硬件上,选低静态电流的 LDO/DCDC、把不用的外设供电域切断、上拉电阻尽量放大、LED 与传感器用 MOS 管控制通断、晶振选低功耗型号。软件上,核心是让 MCU 尽可能长时间待在低功耗模式,按唤醒时间从浅到深依次是 Sleep(只停内核时钟)、Stop(停主时钟,保留 RAM 与寄存器)、Standby/Shutdown(只留后备域,靠 RTC/唤醒引脚恢复);外设按需开关,ADC/DMA/通信模块用完就关时钟;任务调度上把轮询改成事件驱动或中断唤醒,配合 RTOS 的 tickless idle 才能真正省电。唤醒源要设计清楚(按键、RTC 定时、外部传感器中断、通信唤醒),并注意唤醒后的时钟稳定时间和外设重新初始化开销。测量与验证同样重要:用高精度电流表或功耗分析仪分段测量各状态的静态电流与占空比,算平均功耗(各状态电流 × 时间占比的加权和),再按电池容量推算续航;只测「休眠时电流很小」是不够的,唤醒瞬间的峰值电流和唤醒频率往往才是耗电大头。最后要提一句取舍:低功耗和响应实时性是矛盾的,需要按业务确定唤醒周期和降级策略。

为什么用外置 ADC:通常是内置 ADC 在精度、通道或信号条件上不够用。具体原因分几类。精度与噪声:MCU 内置 ADC 常是 12 位,受数字电源噪声、地弹和内部参考源温漂影响,有效位数(ENOB)往往只有 9~10 位;外置 ADC 能做到 16/24 位,带独立基准和差分输入,适合小信号(热电偶、称重传感器、电流采样)测量。参考电压:内置 ADC 一般只能用 VDDA 或内部带隙做参考,稳定度和温漂差;外置方案可以配高精度基准芯片,测量结果才可重复、可校准。通道数与采样率:内置 ADC 通道少且靠模拟多路开关轮询,通道间串扰明显;外置多通道同步采样 ADC 可以同时采多路(比如三相电流),做电机控制时必须。量程与信号调理:外置方案可以灵活配 PGA(可编程增益)和差分输入,直接吃 mV 级信号,省掉外部运放,也便于做隔离(隔离 ADC/隔离放大器)满足安规。布局上:外置 ADC 能放在靠近传感器的位置,缩短模拟走线,减少噪声耦合。代价是 BOM 成本、SPI/I2C 通信开销和额外的校准工作,所以这个问题的正确答法是「按信号精度需求和成本约束权衡」,并给出你实际项目里的判断依据。

面试体验备注:原帖记录是线下面试、面试官不是专职做嵌入式的,整体问得比较浅。这类面试的准备重点反而在基础概念的清晰表达上——把 CAN、低功耗、ADC 选型这类问题讲出层次和取舍,比深入某个冷门寄存器更容易拿分。