ECU模拟器开发笔记

本文记录了基于STM32F407VG的ECU模拟器的开发过程,包括功能规划如总线支持和人机交互,硬件设计如MCU选择和接口配置,以及软件设计中的系统分层、协议栈选择与修改。文中提到了采用的开源库,如J1939协议栈、shell模块和日志系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

最近需要开发一款ECU模拟器,用于辅助OBD产品的测试验证,由于这是内部使用的工具,项目优先级较低,开发周期会比较长,可能到后面连自己都看不懂了,因此有必要写点笔记。

功能规划

  • 总线

总线物理层支持CAN和K-Line,网络层支持ISO15765-2、ISO14230-2、ISO9141-2、J1939-31。

  • 控制

  • 主要的人机交互是显示屏+触摸+旋转编码器,并附加车速、转速调节旋钮及一个自复位的快捷键。

  • 预留了USB转UART,可通过电脑的超级终端控制系统运行,未来也可以开发上位机进行控制。

  • 设计有USB -A母头,可连接U盘,读取脚本进行自动化控制。

硬件设计

MCU是STM32F407VG,屏是ILI9486 3.5寸 480*320,触摸是TSC2046驱动的电阻,CAN收发器是TJA1042,K-Line收发电路使用三极管搭建,调试口是CH340实现USB转UART。

软件设计

系统分层

整个软件框架分6层:驱动、操作系统、板级支持包、数据、功能、应用,并且RTOS的task只出现在应用层。

Layer Module
Application obd, hmi, dev, script
Function j1979, j1939, iso14229
Data iso15765_2, iso14230_2, ymodem, fatfs
BSP bsp_tim, bsp_shell, bsp_can, bsp_kline, bsp_lcd, bsp_touch, bsp_flash, usb_host
OS ThreadX_RTOS, ThreadX_GUIX
Driver CMSIS, STM32F4xx_HAL_Driver, STM32_USB_HOST_Library

第三方协议栈

效率为王的时代,肯定要避免重复造轮子,因此引用了一些优秀的开源库。由于需要小修小改,所以用了派生库,既能管理自己的迭代,又能跟随原作者的更新。

工作流程

固件分为Bootloader和Application两部分

Bootloader启动流程图

Created with Raphaël 2.2.0 ECU模拟器 初始化 快捷键已按下
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值