理想汽车 社招面试记录总结


🧭 面试概况概览


🛠 项目背景(智能座舱)


🔌 硬件架构关系(SoC / EC / MCU)

三者关系:

模块 角色定位 核心职责
SoC(主控) 操作系统执行体 Linux / QNX 执行主系统逻辑
EC(Embedded Controller) 平台管理者 电源管理、电池监测、状态监控、接收 MCU 命令
MCU(如 TC387) 功能执行者 CAN、SPI、I2C 控制,逻辑判断,控制 EC / 外设

主从关系: MCU 为主控,EC 为从机,MCU 可通过 I2C 控制 EC 状态(如下电、心跳检测)


🚗 电源状态转换逻辑(S0 → S3 / S5)

graph LR
  A[SoC 正常运行 S0] --> B[MCU 监测到下电事件]
  B --> C[MCU 通过 I2C 通知 EC 下电请求]
  C --> D[EC 控制 eFuse 拉低,准备断电]
  D --> E[MCU 准备 SPI 状态:'S','3','S','0']
  E --> F[SoC 主动 SPI 拉取状态]
  F --> G[SoC 执行 Suspend,切换至 S3]
  G --> H[断电完成,待机状态]

唤醒机制:


🧩 通信协议细节整理

1. CAN 总线

典型字段说明:

字段 含义
Message ID 硬件过滤依据(如来源/命令类型)
Data Payload 如“关机请求”、“唤醒状态”
帧类型 标准/扩展帧

2. SPI 驱动逻辑

角色定义:

典型流程:

  1. MCU 调用 initQSPISlaveBuffers() 准备 TxBuffer 内容
  2. MCU 拉高 P21.3 通知主控有新数据
  3. SoC 拉低 CS,发起 SPI 通信
  4. 双向传输(MOSI+MISO)
  5. 中断触发 RxISR / TxISR

示例内容:

状态 内容
SPI 初始化就绪 ‘S’,’P’,’I’,’1’
请求休眠 S3 ‘S’,’0’,’S’,’3’
请求关机 S5 ‘S’,’0’,’S’,’5’

3. I2C 驱动设计

  1. 选择 I2C 引脚 / 模块(如 TC387 I2C0)
  2. 设置 EC 的地址
  3. 实现 I2C_WriteCommand()I2C_ReadStatus()
  4. (项目中未加入中断机制)
  5. 加入错误处理机制(如超时、重试)

⚡ 电源检测机制(VIN 采样)


🔋 GPIO 配置(初始化表)


🤖 TC387 & MCU 开发关注点


📝 面试改进建议


📌 后续建议


本记录由张子健整理,用于面试复盘与自我提升,欢迎交流改进意见。