面试真题 | 网易 嵌入式开发(上)

1.自我介绍

2.讲一下项目主要用了哪些模块或者协议

在嵌入式系统项目中,主要涉及的模块和协议会根据具体应用场景有所不同。以下结合工业控制、物联网、通信接口等典型场景,从硬件模块、软件协议栈、通信协议三个维度进行深度解析:

一、硬件模块

  1. 核心控制模块
    ARM微控制器:基于Cortex-M系列(如STM32系列)或Cortex-A系列(如S3C2440)的处理器,承担系统主控任务。例如在工业控制中,S3C2440通过SPI接口连接MCP2510 CAN控制器,实现总线通信。
    专用协处理器:如DSP用于信号处理(TMS320系列)、FPGA用于实时逻辑控制。

  2. 通信接口模块
    有线接口:CAN总线(MCP2510控制器+TJA1050收发器)、以太网PHY芯片(如DP83848)、USB接口芯片。
    无线模块:Wi-Fi/蓝牙模组(如ESP32)、ZigBee芯片(如CC2530),用于物联网设备互联。

  3. 存储与扩展模块
    存储器:Flash(存储固件)、SRAM/DRAM(运行内存)、EEPROM(配置参数存储)。
    外设接口:LCD驱动、ADC/DAC模块(传感器数据采集)、GPIO扩展。

二、软件协议栈

  1. 通信协议栈
    精简TCP/IP协议栈:针对资源受限设备,仅实现ARP、ICMP、TCP/UDP核心协议,通过主循环非中断方式处理网络包。
    CANopen协议栈:集成NMT网络管理、PDO实时数据对象、SDO服务数据对象,用于工业现场总线(如TinyARM模块)。
    PelcoD协议栈:通过SPI/UART实现云台控制,数据包构造需遵循标准帧格式(同步头+地址码+指令码)。

  2. 驱动与中间件
    硬件抽象层(HAL):封装底层寄存器操作,提供统一API(如STM32 CubeMX生成的驱动)。
    实时操作系统(RTOS):FreeRTOS或μC/OS-II的任务调度、内存管理模块,确保实时性。

三、通信协议

  1. 有线协议
    工业总线协议
    CAN总线:采用MCP2510控制器,支持最高1Mbps速率,通过ID过滤实现多节点通信(如汽车电子)。
    Modbus:基于RS-485的主从协议,用于PLC与传感器通信。
    板级协议
    SPI:全双工高速通信(如Flash存储器读写),需注意片选信号管理。
    I2C:多设备总线(如温湿度传感器),需处理地址冲突和总线仲裁。

  2. 无线协议
    短距离协议
    蓝牙/BLE:用于穿戴设备与手机交互,需优化功耗(连接间隔调整)。
    ZigBee:Mesh网络拓扑,适合智能家居多设备组网。
    广域网协议
    LoRa:低功耗远距离传输,用于农业环境监测。
    NB-IoT:蜂窝网络接入,支持海量设备连接。

  3. 应用层协议
    MQTT:基于TCP的轻量级发布/订阅协议,用于物联网云端通信。
    HTTP RESTful API:嵌入式Web服务器与云端交互(如智能网关)。

四、典型项目案例

  1. 工业机械臂控制系统
    模块:Cortex-M7核心板、CANopen从站模块、伺服电机驱动板。
    协议:CAN总线(PDO传输位置指令)、Modbus-TCP(与上位机交互)。

  2. 智能家居网关
    模块:ESP32(Wi-Fi+BLE双模)、ZigBee协调器、MicroSD卡存储。
    协议:ZigBee(设备控制)、MQTT(数据上报云端)、SPI(Flash读写)。

  3. 车载诊断系统(OBD-II)
    模块:S32K144 MCU(带CAN-FD)、4G模组、GPS模块。
    协议:ISO-TP(CAN传输层)、UDS(诊断服务)、TCP/IP(远程监控)。

五、关键设计考量

  1. 实时性优化
    • 中断优先级配置(如CAN接收中断高于UART)。
    • DMA传输减少CPU占用(如SPI批量数据传输)。

  2. 资源管理
    • 静态内存分配替代动态分配(防止内存碎片)。
    • 看门狗机制监测任务超时。

  3. 可靠性设计
    • CRC校验(CAN帧错误检测)。
    • 双缓冲机制(如网络数据包处理)。

以上模块和协议的选型需结合实际需求,例如工业场景侧重可靠性和实时性(CAN/CANopen),消费电子则关注低功耗和无线连接(BLE/Wi-Fi)。开发中可借助Wireshark、CANoe等工具进行协议分析,结合SystemView等RTOS调试工具优化任务调度。

4.详细讲下电机调试

以下是电机调试的详细技术流程及关键要点,结合工业控制中的实际案例进行解析:

一、调试前准备(硬件与参数初始化)

  1. 硬件连接验证
    • 检查电源线/控制线接口(如CAN总线、编码器接口)的紧固性,使用万用表检测三相电压平衡性
    • 验证电机与驱动器功率匹配(如额定电流、电压),避免过载烧毁
    • 案例:某伺服系统因编码器线接触不良导致位置反馈异常,通过重新压接端子解决

  2. 参数初始化配置
    • 清零PID参数并设置控制模式(位置/速度/扭矩模式)
    • 配置编码器分辨率与电子齿轮比(如17位绝对值编码器设置8192PPR)
    • 设置安全参数:最大转速限制为额定值的120%,过流保护阈值设为额定电流的150%

二、核心调试步骤

  1. PID参数整定
    比例增益(Kp):从低值逐步增加直至出现轻微震荡,再回调20%(如初始值0.5调至3.2后震荡,最终设定2.5)
    积分时间(Ti):消除稳态误差的关键,在负载突增场景下测试(如从0.1s逐步调整至0.05s缩短响应时间)
    微分时间(Td):抑制超调的有效手段,通过阶跃响应测试优化(典型值0.002-0.01s)
    • 案例:机械臂关节电机采用Ziegler-Nichols法整定,震荡周期0.4s时获得最优参数组合

  2. 校准流程

    校准类型 操作要点 工具/协议
    位置校准 机械零点标定(拆除负载后执行)
    绝对位置闭环验证(±0.01mm精度)
    激光干涉仪
    CANopen SDO协议
    速度校准 空载/负载速度曲线测试
    加速度前馈补偿设置
    光电编码器
    Modbus-TCP
    负载校准 扭矩传感器标定
    惯量辨识算法执行
    动态扭矩仪
    EtherCAT PDO
  3. 自动整定技术
    电流环自整定:注入高频信号识别电机相电阻/电感(如STM32通过FOC算法实现R=1.2Ω,L=8mH的自动识别)
    速度环优化:基于伯德图分析带宽特性,结合800Hz低通滤波器抑制高频共振
    位置环增益调整:采用临界震荡法,将增益提升至震荡点后取50%作为安全值(如从2000调至4500时发生震荡,最终设定2200)

三、验证与优化

  1. 动态性能测试
    • 阶跃响应测试:上升时间<50ms,超调量<5%
    • 正弦跟踪测试:10Hz频带内相位滞后<10°
    • 案例:数控机床进给轴调试后,位置跟随误差从±15μm降至±3μm

  2. 抗干扰措施
    • 硬件层:增加磁环抑制共模干扰,信号线采用双绞屏蔽线(如伺服编码器线选用AWG22双绞屏蔽线)
    • 软件层:植入滑动均值滤波算法(窗口长度8点),配合IIR数字滤波器

四、故障诊断与处理(调试期常见问题)

  1. 异常震动
    • 检查联轴器同心度(激光对中仪偏差<0.02mm)
    • 转子动平衡校正(残余不平衡量<0.5g·mm/kg)

  2. 过热保护
    • 热成像仪检测绕组温度分布(热点温度<130℃)
    • 优化散热风道设计(风速≥2m/s)

  3. 通信异常
    • CAN总线终端电阻检测(120Ω±5%)
    • EtherCAT帧传输延时测试(<1μs)

调试工具推荐
• 示波器(观测PWM波形)
• CANalyzer(总线协议分析)
• 电机测试平台(如Magtrol HD-710测功机)

通过上述系统化调试流程,某新能源车用驱动电机调试周期从12小时缩短至4小时,故障率下降62%。建议结合具体电机类型(伺服/步进/直流)选择适配的调试策略。

5.串口相关,波特率计算,115200下数据吞吐量(1ms多少数据)

关于115200波特率下的串口数据吞吐量计算,结合理论公式与实际工程案例解析如下:

一、波特率与数据帧结构基础

  1. 波特率定义
    波特率(Baud Rate)指每秒传输的符号(码元)数,115200表示每秒传输115200个符号。在UART协议中,每个符号对应1位二进制数据,因此115200波特率等价于115200bps(比特率)。

  2. 数据帧格式影响
    每个数据包包含协议开销位: • 典型8N1格式:1起始位 + 8数据位 + 1停止位 = 10位/字节
    其他格式:若包含校验位(如8E1),则总位数为11位/字节

二、理论吞吐量计算

  1. 公式推导
    每秒传输字节数 = 波特率 / 总位数每字节
    以8N1为例:
    115200bps ÷ 10位/字节 = 11,520字节/秒
    每毫秒传输量
    11,520字节/秒 ÷ 1000 ≈ 11.52字节/ms

  2. 极限情况与协议优化
    无协议开销(仅数据位):
    115200bps ÷ 8位/字节 = 14,400字节/秒 ≈ 14.4字节/ms
    实际工程折中:通常按8N1格式计算,留出20%余量应对传输抖动

三、实际工程中的修正因素

  1. 硬件限制
    • 微控制器串口缓冲区容量(如STM32的16字节FIFO)可能导致分批次传输,增加软件中断开销
    • DMA传输可减少CPU占用,但需预留时间配置DMA控制器(典型损耗0.1~0.3ms)

  2. 软件协议开销
    • 应用层协议头尾(如MODBUS的地址码+CRC校验)占用额外带宽
    • 重传机制在误码率较高时显著降低有效吞吐量

  3. 时序误差补偿
    • 晶振频偏(±0.5%常见)导致实际波特率与理论值偏差
    • STM32的USART_BRR寄存器小数分频机制可将误差控制在0.1%以内

四、典型场景测试数据

场景 实际吞吐量(字节/ms) 效率损失原因
裸机轮询模式(8N1) 10.8~11.2 软件轮询延迟
RTOS任务调度(DMA) 11.0~11.4 任务切换开销
含MODBUS协议 9.6~10.5 协议头尾占用带宽
长距离RS-485通信 8.0~9.5 信号衰减导致重传率上升

五、优化建议

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

ARM/Linux嵌入式真题 文章被收录于专栏

让实战与真题助你offer满天飞!!! 每周更新!!! 励志做最全ARM/Linux嵌入式面试必考必会的题库。 励志讲清每一个知识点,找到每个问题最好的答案。 让你学懂,掌握,融会贯通。 因为技术知识工作中也会用到,所以踏实学习哦!!!

全部评论

相关推荐

投递牧原集团等公司6个岗位
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务