STM32芯片烧录的三种方式介绍,串口、STM32 ST |
您所在的位置:网站首页 › smspush是什么程序 › STM32芯片烧录的三种方式介绍,串口、STM32 ST |
STM32芯片烧录的三种方式介绍,串口、STM32 ST-LINK Utility以及STM32CubeProgrammer
1 概述1.1资源概述1.2 STM32串口烧录方式(ISP)-FLYMCU
2.KEIL软件下载介绍(内部集成STLINK)3 STM32 ST-LINK Utility介绍3.1 windows操作系统3.1.1 软件烧录3.1.2 stlink对芯片的部分Sector进行擦除
3.2 Linux操作系统中烧录(STLINK)3.2.1 软件安装3.2.2 命令行软件烧录(ST-FLASH)3.2.3 使用GUI界面进行烧录(STLINK)3.2.4 更多详细信息
4 STM32CubeProgrammer4.1 使用STLINK进行下载4.2 使用串口进行下载(ISP)4.3 使用DFU模式(USB)
5 官方正版STLINK仿真器5.1 STLINK V3 mini下载器5.2 集成在官方开发板上的STLINK
6 连接异常处理6.1 能连接但下载报错解决方案6.2 特殊IO口使用导致烧录一次程序后SWD口不能用6.3 能识别到芯片,但是下载时弹出报错对话框
1 概述
1.1资源概述
开发板:正点原子STM32F103 Nano开发板 STM32 ST-LINK Utility版本:V4.5.0.0 STM32CubeProgrammer版本:V2.4.0 MDK版本:V5.23 主控芯片型号:STM32F103RBT6 启动模式说明说明,我们选择系统存储器启动。 可以使用KEIL内部集成的STLINK组件进行烧录,使用此种方式进行烧录时,将STLINK连接到电脑,在KEIL中可以检测到STLINK。 上位机可采用ST官方的STLINK软件,然后通过STLINK模块给目标设备进行烧录。 在使用Bootloader+App的使用方式时,我们烧录App时,如果每次都对全片进行擦除,那么每次的Bootloard将会被我们擦除掉,导致程序需要下载两遍。我们可以选择对部分的Sector进行擦除,而不是全部。 案例:某个Bootloader对应开始地址为0x8000000,结束地址为0x80042B0 软件直接使用命令行安装即可,UBUNTU的源自带此软件,无需在github上下载源码编译安装。 //安装STLINK sudo apt install stlink-tools //查看STLINK的版本,确认是否安装成功,如果成功会返回版本号 st-info --version //安装STLINK-GUI界面 sudo apt install stlink-gui //使用命令行进行下载 sudo st-flash write test.bin 0x8000000使用命令行进行软件的烧写工作,下载命令的格式,比如说可以使用st-flash erase对芯片进行擦除 whs@whs-hp:~/Downloads$ st-flash invalid command line stlinkv1 command line: ./st-flash [--debug] [--reset] [--format ] [--flash=] {read|write} /dev/sgX stlinkv1 command line: ./st-flash [--debug] /dev/sgX erase stlinkv2 command line: ./st-flash [--debug] [--reset] [--serial ] [--format ] [--flash=] {read|write} stlinkv2 command line: ./st-flash [--debug] [--serial ] erase stlinkv2 command line: ./st-flash [--debug] [--serial ] reset Use hex format for addr, and . fsize: Use decimal, octal or hex by prefix 0xXXX for hex, optionally followed by k=KB, or m=MB (eg. --flash=128k) Format may be 'binary' (default) or 'ihex', although must be specified for binary format only. ./st-flash [--version] example write option byte: ./st-flash --debug --reset --area=option write 0xXXXXXXXX example read option byte: ./st-flash --debug --reset --area=option read > option_byte 3.2.2 命令行软件烧录(ST-FLASH)软件下载示例,烧录文件为bin格式,需要带地址信息,sudo为非必须的,这里使用的版本是1.6.0 whs@whs-hp:~/STM32CubeIDE/workspace_1.6.1/Cube_fl03_led/Debug$ sudo st-flash write Cube_fl03_led.bin 0x8000000 [sudo] whs 的密码: st-flash 1.6.0 2021-08-27T00:28:36 INFO common.c: Loading device parameters.... 2021-08-27T00:28:36 INFO common.c: Device connected is: F1 Medium-density device, id 0x20036410 2021-08-27T00:28:36 INFO common.c: SRAM size: 0x5000 bytes (20 KiB), Flash: 0x20000 bytes (128 KiB) in pages of 1024 bytes 2021-08-27T00:28:36 INFO common.c: Attempting to write 15400 (0x3c28) bytes to stm32 address: 134217728 (0x8000000) Flash page at addr: 0x08003c00 erased 2021-08-27T00:28:36 INFO common.c: Finished erasing 16 pages of 1024 (0x400) bytes 2021-08-27T00:28:36 INFO common.c: Starting Flash write for VL/F0/F3/F1_XL core id 2021-08-27T00:28:36 INFO flash_loader.c: Successfully loaded flash loader in sram 16/16 pages written 2021-08-27T00:28:37 INFO common.c: Starting verification of write complete 2021-08-27T00:28:37 INFO common.c: Flash written and verified! jolly good! whs@whs-hp:~/STM32CubeIDE/workspace_1.6.1/Cube_fl03_led/Debug$当烧录文件为hex格式时,由于hex文件里边包含地址信息,因此不需要再指定地址了,但是需要指明烧录的格式。 whs@whs-hp:/media/whs/HP_D/STM32/F103/trunk/FSMLED/Project$ st-flash --format ihex write output\(mdk\).hex 3.2.3 使用GUI界面进行烧录(STLINK)安装STLINK-GUI后,可以使用GUI程序进行下载,GUI的显示界面如下 命令行模式仅支持V1和V2版本的仿真器,并不支持V3版本的仿真器。 更多详细信息,可以参见GitHub的官方资料 https://github.com/stlink-org/stlink 4 STM32CubeProgrammer 4.1 使用STLINK进行下载STM32CubeProgrammer软件是ST新推出的烧录软件,支持更多的方式设置,官方定位是替代ST-LINK Utility。打开如下图所示,支持STLINK、USB、UART以及OTA(均需要对应的烧录工具)下载,支持SWD和JTAG。但是需要说明的是,这个软件烧录时,需要STLINK固件为最新。使用正点原子Nano开发板时,会提示软件非最新,不能进行连接。 我们在此软件中,可以使用串口进行连接烧录,这样做的好处是不需要使用第三方串口烧录工具,另外cubeprogrammer也不会对STLINK的版本信息进行核验。 1.BOOT设置,将BOOT1跳到0(开发板已经默认拉到地),BOOT0跳到1(3.3V)。按一下RESET按键 STM32F407的PA11和PA12为OTG USB功能,支持USB烧录,将此两个脚通过USB连接到电脑 将BOOT0跳到1,按复位键,再在然后选择USB后刷新,将显示USB1设备,若连接失败将显示NO DFU DETECTED 这里我推荐一款官方的正版仿真器,即STLINK V3 MINI,ST官方近两年推出,采用了STM32F723的芯片,比常见的STLINK V2拥有更多的功能,更快的速度。 这个仿真器非常小,比通常的U盘还小一号,且排线为14P 1.27mm间距的排线。因此不支持常见的2.54杜邦线连接,需要额外的转接板进行转接。这里需要特别注意。此款仿真器支持一个虚拟的串口(13脚和14脚),支持SWD和JTAG烧录,端口定义如下: 官方的开发板集成了STLINK,这个STLINK可以对外进行烧录。这块部分可以裁下来单独使用。当烧录外部设备时,需要将外部烧录跳线拔下来,然后将烧录口和目标板通过杜邦线进行连接。不同的开发板对应的STLINK版本不同,F103对应的是V2.1,F7开发板对应的是V3.0。 使用杜邦线进行SWD连接时,如果是散线或者线缆过长,会出现KEIL能连接上,但是下载报错(flash错误或者M3错误)的故障。将线缆更换为排线或者降低线缆的长度可以解决这个问题。 JTAG或者SWD端口被占用,但是却没有进行正确的配置。 在开发STM32F407芯片时,调试18B20温度程序时发现一个问题,当下载完一次程序后,SW就失去连接 更改头文件定义 //IO方向设置 #define DS18B20_IO_IN() {GPIOB->MODER&=0XCFFFFFFF;GPIOB->MODER|=0;} //PA15输入模式,改为PB15 #define DS18B20_IO_OUT() {GPIOB->MODER&=0XCFFFFFFF;GPIOB->MODER|=0x40000000;} //PA15输出模式,改为PB15 IO操作函数 #define DS18B20_DQ_OUT PBout(15) //数据端口 PA15,改为PB15 #define DS18B20_DQ_IN PBin(15) //数据端口 PA15,改为PB15更改后,可以通过编译,下载后,KEIL也能扫描到设备。 使用5.34版本的Keil,能识别到芯片,但是下载时报错 Command not supported |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |