网站首页

人工智能P2P分享搜索全网发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

9.9包邮的合宙Air32开发板,如何刷DFU?

时间:2023-04-20 09:28

人气:

作者:admin

标签: DFU工具  开发板 

导读:不得不说,合宙推出的9.9元包邮Air32系列MCU开发板太香了,资源全面升级,使用更畅快!Air32的日常开发中,烧录固件和升级必须要用串口或者调试器。那么,有没有办法可以用Air32自己...

不得不说,合宙推出的9.9元包邮Air32系列MCU开发板太香了,资源全面升级,使用更畅快!

Air32的日常开发中,烧录固件和升级必须要用串口或者调试器。那么,有没有办法可以用Air32自己给自己烧录和升级呢?——答案是肯定可以,我们可以自己编写BootLoad,通过DFU(Device Firmware Upgrade)模式实现用Air32自带的USB进行升级。

接下来,我们一起看看怎么做吧~

1

基础准备工作


1.1 合宙Air32小蓝板:

合宙推出的BluePill开发板,封装兼容经典STM32F103核心板,资源和工艺全面升级;兼容主流F103开发方式,提供SDK参考。

1.2 合宙Air32小黑板:

合宙经典40PIN黑金工业风沉金板,邮票孔设计;支持UART/SPI/I2C/ADC/ DAC/I2S/CAN接口

出厂内置DAPLink固件,可直接作为烧录器。

1.3 USB Type-C线

开发常用的Type-C线即可,缺线的同学可了解合宙10元10根论斤卖的数据线。

1.4 杜邦线

开发者必备的杜邦线,这里不细说。

1.5 Keil开发环境

合宙Air32系列支持Keil开发,参见Air32F103使用手册

1.6 DFU升级工具

2

给BluePill开发板烧录DFU固件


2.1 开发板接线

a4dbd54a-dd88-11ed-ad0d-dac502259ad0.png

2.2 烧录DFU固件

将USB线插入Air32小黑板,会在【我的电脑】虚拟出一个DAPLINK盘,将DFU固件(dapboot.bin)拖入即可。

a4fa8b2a-dd88-11ed-ad0d-dac502259ad0.png

DFU固件链接:

https://cdn.openluat-luatcommunity.openluat.com/attachment/20230414163518568_dfutools.zip

下载完毕后,点开DAPLINK盘,如果没有FAIL.TXT生成,则表示烧录成功。

a50b53b0-dd88-11ed-ad0d-dac502259ad0.png

烧录完毕后,把BluePill开发板接到电脑上,如果有DAPBoot DFU Bootloader显示,表示DFU固件烧录成功,此时BluePill开发板就可以通过DFU给自己升级了:

a51cb420-dd88-11ed-ad0d-dac502259ad0.png

3

BluePill开发板通过DFU给自己升级


3.1选用demo

用Keil打开Air32仓库的GPIO_IOOut demo:

a53192c8-dd88-11ed-ad0d-dac502259ad0.png

3.2设置参数

点开target,将IROM1的Start设置为0x8002000,Size设置为0x1E000,点击OK:

a5487358-dd88-11ed-ad0d-dac502259ad0.png

3.3生成升级文件

点开USER,选中After Buile/Rebuild一栏的Run #1 ,内容填入fromelf.exe --bin -o "$L@L.bin" "#L", 点击OK。

此步骤是用于生成升级文件:

a55edd50-dd88-11ed-ad0d-dac502259ad0.png

3.4 修改代码

BluePill开发板上蓝灯由PC13控制,将原先的代码改为蓝灯闪烁:

intmain(void)

{

RCC_ClocksTypeDefclocks;

Delay_Init(); //延时初始化

UART_Configuration(115200);//默认为串口1,波特率115200

RCC_GetClocksFreq(&clocks);//获取系统时钟频率

PRINTF_LOG("\n");

PRINTF_LOG("SYSCLK: %3.1fMhz, HCLK: %3.1fMhz, PCLK1: %3.1fMhz, PCLK2: %3.1fMhz, ADCCLK: %3.1fMhz\n",

(float)clocks.SYSCLK_Frequency/ 1000000, (float)clocks.HCLK_Frequency/ 1000000,

(float)clocks.PCLK1_Frequency/ 1000000, (float)clocks.PCLK2_Frequency/ 1000000, (float)clocks.ADCCLK_Frequency/ 1000000);

PRINTF_LOG("AIR32F103 GPIO IO Out Tset.\n");

GPIO_Configuration();

while(1)

{

GPIO_SetBits(GPIOC, GPIO_Pin_13);

Delay_Ms(200);

GPIO_ResetBits(GPIOC, GPIO_Pin_13);

Delay_Ms(200);

}

}

voidGPIO_Configuration(void)

{

GPIO_InitTypeDefGPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能GPIOC时钟

GPIO_InitStructure.GPIO_Pin= GPIO_Pin_13;

GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;//速度50MHz

GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP; //输出模式

GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化GPIOC.13

}

3.5编译固件

点击编译即可,然后在OBJ目录下找到GPIO.bin,这就是给自己升级的固件:

a56fdc90-dd88-11ed-ad0d-dac502259ad0.png

3.6执行命令

将编译出来的GPIO.bin放在dfutools目录中,通过命令行调用dfu-util.exe即可将闪灯固件下载进开发板:

a583e7c6-dd88-11ed-ad0d-dac502259ad0.png

dfu-util.exe -d 1209:DB42 -D GPIO.bin

1209 DB42为设备管理器中DAPBoot DFU Bootloader的VID 与PID:

a599eb3e-dd88-11ed-ad0d-dac502259ad0.png

a5b192b6-dd88-11ed-ad0d-dac502259ad0.png

接下来就可以看到设备蓝灯闪烁啦:

a5e65b0e-dd88-11ed-ad0d-dac502259ad0.gif

3.7 烧录了DFU固件的开发板,如何进入DFU模式:

如果0x8002000分区后没有代码,则自动进入DFU模式;

将GPIOB - 2, 也就是boot1接到GND上再上电,进入DFU模式。

注意事项:

DFU固件Flash分区为0x8000000 - 0x8002000

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信