CH32X035实现U盘固件更新 - RISC-V MCU技术社区 - 电子技术william hill官网 - 广受欢迎的专业电子william hill官网 - 威廉希尔官方网站
分享 收藏 返回

郭祥峰 关注 私信
[文章]

CH32X035实现U盘固件更新

CH32X035的开发板上有个USB-A口, 实现一个U盘固件更新功能还是比较容易的,厂家有自己的U盘库,这就省去了不少麻烦,但有部分核心文件是以.a形式的库文件提供的,使用时还是有需要注意的地方。下图是厂家的U盘库
1.png
初始化部分直接调用厂家提供的函数即可
2.png
固件更新的操作都是在UDisk_USBH_IAP( );内实现的
3.png
首先使用UDisk_USBH_DiskReady函数检查U盘是否就绪
4.png
如果U盘就绪,再进行文件打开,这里需要注意的是,文件名称必须是大写,但实际文件名可以是小写,否则找不到文件(应该和厂家的库有关)
5.png
如果文件打开正常,先获取一下文件的大小,为下面的文件读取做准备
6.png
根据文件大小,开始逐次读取文件内容
7.png
这里有个地方需要注意,接收缓存区的大小不能超过255,否则会报错(.a文件内的数据类型有限制)。
8.png
9.png
我这里根据我的实际情况修改为了128
10.png
因为每次读取的数据长度最大是128字节,但芯片flash的编程页大小是256,所以需要对两次读取的数据进行拼包处理,满256字节会最后一包时再去写入编程。
11.png
升级文件都写入完成后就可以进行跳转了
12.png
实现效果
启动升级
13.png
升级完成后
14.png
至此,使用U盘进行固件更新和问题点就介绍完了。
固件源码:
HOST_Udisk_IAP.zip (843.63 KB)
(下载次数: 3, 2023-10-30 17:52 上传)

更多回帖

×
发帖