1 Star 0 Fork 65

jjg0513 / can_uds_bootloader

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 5.03 KB
一键复制 编辑 原始数据 按行查看 历史
wdluo 提交于 2022-11-09 16:38 . 更新说明文档

can_uds_bootloader

介绍

基于CAN UDS协议实现的固件在线升级功能,此项目会包含一些常用的单片机范例程序工程,目前只有STM32F405的,后续会陆续增加,也可以参考我们提供的范例程序自行移植。

上位机测试使用图莫斯的TCANLINPro软件,要求最低版本为v2.1版本。

软件下载地址为:点击下载

USB转CAN工具使用的是图莫斯的USB转CAN/LIN适配器,结合TCANLINPro软件,使用我们提供的固件升级配置文件,可以很容易的测试验证功能。

CAN适配器购买链接:点击购买

软件架构

UDS CAN固件升级单片机程序主要包含CAN数据收发,UDS协议解析,UDS服务响应几个模块,CAN数据接收采用FIFO循环缓冲区接收数据,可以较高效率接收数据,防止丢帧。UDS协议解析采用状态机模式进行单帧,多帧接收解析,然后将接收完毕的请求传递给UDS服务处理函数进行数据处理。

移植说明

针对不同的单片机,主要是CAN数据收发方式,单片机内部Flash读写方式不一样,所以针对不同的单片机,主要是要移植这两个功能模块,UDS解析和处理部分可以根据自己需求适当修改即可,后续会逐步完善不同单片机的范例程序。

测试使用

使用图莫斯的USB转CAN适配器和TCANLINPro软件可以快速的实现功能测试验证,也可以根据自己的需求,自己写上位机软件来实现固件升级,图莫斯也提供UDS的二次开发接口函数。

单片机程序下载

  • 针对不同的单片机,测试工程和目录可能有所不同,请根据实际情况调整,此处以STM32F405/407单片机为例进行说明。
  • CAN引脚配置修改,打开bootloader工程,比如STM32F405单片机,bootloader工程所在目录为:“/firmware/stm32f405/bootloader”,用KEIL MDK打开之后,打开“can_driver.c”文件,找到里面的“CAN_GPIO_Configuration”函数,确认下CAN引脚配置是否跟自己使用的硬件一致?若不一致,则需要根据实际硬件情况修改下引脚配置。
  • 时钟配置修改,范例程序使用的外部8M晶振时钟,系统时钟配置为168M,若使用的硬件不是外部8M晶振,则需要在“system_stm32f4xx.c”文件的“SystemInit”函数中修改时钟配置相关代码。若系统时钟不是配置为168M的,则我们代码里面的CAN波特率参数是不能直接用的,也需要根据自己的时钟大小进行调节,波特率参数表在“can_driver.c”的“CAN_BaudRateInitTab”全局变量中。
  • 确认CAN引脚配置,系统时钟配置,CAN波特率参数配置没问题后,直接编译程序下载程序即可。
  • 若使用的硬件外部晶振是8M,CAN引脚使用的PB8 PB9,那么可以直接使用我们编译好的程序进行测试,程序所在路径为:“stm32f405/test/uds_can_boot.hex”,通过下载器将程序直接下载到芯片即可。
  • APP程序编译,APP程序在“/firmware/stm32f405/app”目录,跟bootloader程序一样,需要根据实际情况修改CAN引脚配置,系统时钟配置,CAN波特率参数,然后直接编译即可。成功编译后在工程目录下会输出对应的hex文件。若是要下载自己的APP程序,需要注意APP程序的起始地址和中断向量偏移的配置。
  • 单片机的PC12引脚为调试信息输出引脚,串口波特率为256000,起始位1位,停止位1位,正常升级固件串口输出信息如下图所示:

上位机软件使用

  • 将图莫斯的CAN1接到对应的CAN总线上,打开TCANLINPro软件,点击CAN1后面的启动按钮启动CAN,然后再弹出界面选择CAN波特率为500Kbps。
  • 再点击【高级功能】->【CAN UDS固件升级】,点击界面的【流程文件】选择按钮,选择“stm32f405/test/can_bootloader.tflash”流程文件,然后再点击【流程设置】按钮,打开流程编辑界面,选择“程序文件下载”行,然后在左边更改APP程序文件所在路径,再点击【更新到列表】,【应用到执行器】即可。
  • 回到固件升级主界面后,点击【执行】按钮即可开始固件升级下载,升级结果在列表中显示。

免责声明

该代码可以免费自由使用,但是文件头注释不要修改,得保留作者信息和代码出处。由于作者能力有限,不能保证代码没任何问题,若使用该代码因为代码问题造成的任何后果本人概不负责。

联系我们

若有意向进行商业合作,可以通过以下方式联系我们,若已经购买图莫斯CAN工具,可以联系我们免费获得技术支持:

C
1
https://gitee.com/jjg0513/can_uds_bootloader.git
git@gitee.com:jjg0513/can_uds_bootloader.git
jjg0513
can_uds_bootloader
can_uds_bootloader
master

搜索帮助