不得不说,合宙推出的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 开发板接线
2.2 烧录DFU固件
将USB线插入Air32小黑板,会在【我的电脑】虚拟出一个DAPLINK盘,将DFU固件(dapboot.bin)拖入即可。
DFU固件链接:
https://cdn.openluat-luatcommunity.openluat.com/attachment/20230414163518568_dfutools.zip
下载完毕后,点开DAPLINK盘,如果没有FAIL.TXT生成,则表示烧录成功。
烧录完毕后,把BluePill开发板接到电脑上,如果有DAPBoot DFU Bootloader显示,表示DFU固件烧录成功,此时BluePill开发板就可以通过DFU给自己升级了:
3
BluePill开发板通过DFU给自己升级
3.1 选用demo
用Keil打开Air32仓库的GPIO_IOOut demo:
3.2 设置参数
点开target,将IROM1的Start设置为0x8002000,Size设置为0x1E000,点击OK:
3.3 生成升级文件
点开USER,选中After Buile/Rebuild一栏的Run #1 ,内容填入fromelf.exe --bin -o "$L@L.bin" "#L", 点击OK。
此步骤是用于生成升级文件:
3.4 修改代码
BluePill开发板上蓝灯由PC13控制,将原先的代码改为蓝灯闪烁:
int main(void)
{
RCC_ClocksTypeDef clocks;
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);
}
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_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,这就是给自己升级的固件:
3.6 执行命令
将编译出来的GPIO.bin放在dfutools目录中,通过命令行调用dfu-util.exe即可将闪灯固件下载进开发板:
dfu-util.exe -d 1209:DB42 -D GPIO.bin
1209 DB42为设备管理器中DAPBoot DFU Bootloader的VID 与PID:
接下来就可以看到设备蓝灯闪烁啦:
3.7 烧录了DFU固件的开发板,如何进入DFU模式:
如果0x8002000分区后没有代码,则自动进入DFU模式;
将GPIOB - 2, 也就是boot1接到GND上再上电,进入DFU模式。
注意事项:
DFU固件Flash分区为0x8000000 - 0x8002000
全部0条评论
快来发表一下你的评论吧 !