Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

7 Commits

Folders and files

Repository files navigation

OBD 智能仪表终端——个人负责代码摘录

本仓库用于展示本人在校企合作项目中的嵌入式软件开发工作,内容为从完整工程中整理出的个人负责模块,不是可直接独立编译的完整产品工程。

项目概述

  • 项目时间:2024.01—2024.06
  • 项目类型:校企合作项目
  • 目标设备:基于 OBD 接口的新能源汽车车载智能仪表终端
  • 核心平台:STM32F407 + FreeRTOS
  • 主要技术:CAN 2.0A/2.0B、UDS 诊断通信、消息队列、互斥锁、软件定时器、状态管理、异常恢复

系统通过 OBD 接口接入整车 CAN 网络,读取车辆运行状态并在本地仪表端显示,同时完成链路状态管理、通信超时处理和异常提示。

本人负责内容

1. CAN 通信服务与底层抽象

  • 设计单通道 CAN 服务模块,封装初始化、启动、收发、状态查询和总线恢复流程。
  • 适配标准帧 / 扩展帧、数据帧 / 远程帧以及 CAN FIFO 接收。
  • 增加发送超时、接收超时、总线异常和运行时恢复处理。
  • 通过平台抽象层隔离 STM32 HAL 与上层业务逻辑。

对应代码:

  • 01_Service/service/service_can/
  • 02_Platform/platform_mcu/can/
  • Core/Inc/can.h
  • Core/Src/can.c

2. 车辆数据与通信状态管理

  • 维护车辆数据快照、数据有效性、车辆连接状态和通信在线状态。
  • 为仪表显示和上层业务提供统一的数据访问接口。
  • 处理车辆数据更新、状态切换、超时失效和恢复后的重新同步。

对应代码:

  • 01_App/app/app_vehicle_data/
  • 01_App/app/app_system_state/
  • 01_App/app/app_init/

3. 主机通信与诊断链路桥接

  • 实现主机通信服务任务及命令 / 响应队列处理。
  • 对车辆信息、仪表数据、诊断状态和通信错误进行统一的寄存器 / 状态映射。
  • 对请求超时、CAN 发送失败、车辆无响应和链路断开进行错误归类与上报。
  • 支持与现有应用任务队列的消息桥接,为车辆诊断和数据展示提供接口。

对应代码:

  • 01_Service/service/service_host_comm/
  • 01_App/app/app_task_common.h
  • 01_App/app/app_dtc_table.h
  • 01_App/app/app_version.h

4. FreeRTOS 任务与 OSAL 封装

  • 使用消息队列、互斥锁、信号量和软件定时器实现任务间解耦。
  • 对 FreeRTOS API 做 OSAL 统一封装,降低业务层对具体 RTOS 实现的依赖。
  • 支持任务超时、队列超时和资源状态错误的统一处理。

对应代码:

  • 02_Platform/platform_os/
  • Core/Inc/FreeRTOSConfig.h
  • Core/Src/freertos.c

5. 仪表提示与联调辅助

  • 实现蜂鸣器 / 指示灯控制服务,为连接状态、通信异常等场景提供反馈。
  • 保留 CAN 模块测试辅助代码,用于台架联调、报文收发验证和问题定位。

对应代码:

  • 01_Service/service/service_buzzer_led_ctrl/
  • 99_Utils/obd_module_test_demo.c
  • 99_Utils/obd_module_test_demo.h

目录说明

01_App/          应用层:车辆数据、系统状态、初始化及界面交互相关模块
01_Service/      服务层:CAN、主机通信、蜂鸣器/指示灯等服务
02_Platform/     平台层:CAN 抽象、FreeRTOS/OSAL 封装
Core/            STM32/CubeMX 生成的 CAN 与 FreeRTOS 配置关联文件
99_Utils/        台架联调与模块测试辅助代码

代码边界说明

本仓库仅保留与本人负责内容直接相关的代码,未上传以下内容:

  • STM32 HAL、CMSIS、FreeRTOS 内核、USB、LVGL 等第三方或厂商代码;
  • 完整 Keil 工程、编译输出、下载文件和本地调试日志;
  • 与本人职责无关的显示驱动、存储驱动及其他业务模块;
  • 整车 ECU 的 CAN ID、DID 映射、标定参数、测试数据和企业内部配置。

因此,仓库中的代码需要放回原工程并补齐依赖后才能编译。为避免泄露整车协议细节,公开版本不包含具体车型的 ECU 地址、DID 表和生产配置。

免责声明

本仓库只用于个人技术总结和求职作品展示,不代表任何企业的正式产品发布,也不包含完整商业工程。若项目存在保密或知识产权约束,应以项目方书面授权和公司制度为准。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages