ECU模拟器开发笔记

前言

最近需要开发一款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只出现在应用层。

LayerModule
Applicationobd, hmi, dev, script
Functionj1979, j1939, iso14229
Dataiso15765_2, iso14230_2, ymodem, fatfs
BSPbsp_tim, bsp_shell, bsp_can, bsp_kline, bsp_lcd, bsp_touch, bsp_flash, usb_host
OSThreadX_RTOS, ThreadX_GUIX
DriverCMSIS, STM32F4xx_HAL_Driver, STM32_USB_HOST_Library

第三方协议栈

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

  • J1939使用了XeiTongXueFlyMe的协议栈,修改了一些自认为的bug,增加了71和73部分的应用:

    原库地址:https://github.com/XeiTongXueFlyMe/J1939.git

    派生地址:https://github.com/biao22ndg/J1939.git

    备用地址:https://gitee.com/biao22ndg/J1939.git

  • shell模块使用了NevermindZZT的letter-shell,加了一层封装接口,没有动原库:

    原库地址:https://github.com/NevermindZZT/letter-shell.git

    派生地址:https://github.com/biao22ndg/letter-shell.git

    备用地址:https://gitee.com/biao22ndg/letter-shell.git

  • 日志系统使用了

    原库地址:https://github.com/armink/EasyLogger.git

    派生地址:https://github.com/biao22ndg/EasyLogger.git

    备用地址:https://gitee.com/biao22ndg/EasyLogger.git

  • 串行 SPI Flash驱动使用了armink的SFUD通用驱动库

    原库地址:https://github.com/armink/SFUD.git>

    派生地址:https://github.com/biao22ndg/SFUD.git

    备用地址:https://gitee.com/biao22ndg/SFUD.git

工作流程

固件分为Bootloader和Application两部分

Bootloader启动流程图

Application启动流程图

系统任务-ECU


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部