使用USB2XXX实现的CAN Bootloader功能,实现CAN节点固件远程升级
- 利用CAN总线实现对有CAN总线接口的设备进行固件升级;
- 升级采用一键升级方式,傻瓜式操作,方便使用;
- 用户可以自己修改上位机源码和下位机源码,实现固件的加密传输;
- 目前此项目包含了STM32F1,STM32F2,STM32F4系列单片机示例源码,后面会增加其他单片机源码;
- 上位机界面程序目前是用Qt(C++)实现,后面会增加C#,Labview及安卓版本代码;
1,将USB2XXX(USB2CAN适配器)通过一个CAN收发器模块(如:TJA1050)连接到CAN总线上,同时将要实现升级功能的板子也连接到CAN总线上。
2,找到和你所使用的单片机对应的源码,比如为STM32F103芯片,用keil 5打开bootloader/RVMDK目录下的工程,检查下你的CAN总线引脚配置是否跟我代码里面的一样,若是一样的,则可以直接编译下载,若不一样,则需要更改CAN总线引脚配置部分代码;
3,和bootloader同目录下有个app目录,同样打开app/RVMDK目录下的工程文件,并编译工程,若一切正常的,那么在app/RVMDK/Output目录下应该会生成一个.bin文件,这个就是我们后面用来升级的固件;
4,使用Qt5打开software/CANBootloader-Qt/project目录下的CAN_Bootloader.pro文件,点击“构建”->“运行”即可编译运行此程序(若没有Qt开发环境,可以直接下载我打包好的程序,安装后即可运行,百度网盘下载地址:http://pan.baidu.com/s/1hsFjZMk ,在“软件”->“CANBootloader”目录)。
5,运行CANBootloader上位机软件后,点击“操作”->“扫描节点”,此时软件会弹出节点地址范围设置对话框,设置好扫描的节点返回,点击“确定”之后软件就开始扫描节点,同时将扫描到的节点显示在节点列表里面,选择列表里面的节点,然后再点击界面上的“打开文件”按钮,在弹出的文件浏览对话框中找到第3步编译出来的.bin文件,然后再点击“更新固件”按钮,此时就会开始固件更新,固件更新成功后,节点列表里面的节点固件类型会由原来的“BOOT”变成“APP”,到此固件更新完毕。
6,若当前固件是“APP”的情况下,一样是可以进行固件更新的,只是在更新固件之前程序会有一个固件跳转的操作,具体流程可以参考源码。
- 此项目所要用到的USB2CAN适配器可以到此购买:https://usbxyz.taobao.com/
- 上位机软件里面用到的API函数说明文档可以访问:http://www.usbxyz.com/
- 若在使用过程中有任何不清楚的地方可以QQ咨询我:188298598