(图片来源网络,侵删)
STM32xx 系列MCU因为它的易用性和广泛的用户基础而在各种设计中广泛应用本文重点讨论了几种SMT32xx MCU 软件的烧写方法和其中要注意的问题一. 通过STlink来进行软件的烧写对于广大的开发 这来说,用STlink来进行烧写是最简单和常用的方法一般来说STLink 可以支持JATG模式和SWD模式SWD模式对于硬件来说比较简单对于一般的操作来说,至少需要4根线,SWCLK,SWDIO,GND和TVDD在实际的应用中,你要确认你用的STlink是哪一个版本因为不同版本的STlink硬件的使用方法是有些不同的下面总结了一下他们之间的区别– ST-LINK/V1 (obsolete)– ST-LINK/V2 –STLINK-V3SET –STLINK-V3MINI –STLINK-V3MODSST-link/V2-1其实是ST-LINK/V2的进化版,它增加了存储空间和一个虚拟串口ST-LINK/V2-A 支持存储空间,ST-LINK/V2-B也支持存储空间和虚拟串口STLINK-V3是最新并且功能最丰富的一代ST-LINK 它第一次引入了模块化probe的概念同时它还集成了多路USB桥接的功能下表是一个较详细的比较例表不同STLINK比较表从上表可以看出,用不同的STlink在设计时要注意它的接口电平电压的范围例如如果你要烧写1.8V的STM32,你就不能选择STLINK/V2-A或者B而应该选择V2或者V2-1当然你也可以选择STLINK/V3,同时选择配套的电平转换板如果你深入地去看STLINK的原理图,你可以看出接口电平的不同,主要在于里面有没有电平转换电路造成的对于这个电路,下面的IC会经常被采用电平转换电路1以上电路中的T_VDD连接到烧写目标板的供电电压,这样就可以通过电平转换芯片来实现电平的自动匹配很多人经常讨论和争论SWD接口到底要不要Reset信号的问题其实在绝大多数的情况下,没有RESET的情况下,也是可以实现烧写问题的但是(凡事就怕但是),在某些情况下如果没有RESET信号的号,STlink是没有办法烧写的比如说如果芯片内部有firmware,同时firmware对于SWDIO或者SWCLK对应的pin进行了重定义,作为了其他的功能引脚所以为了保险起见,建议还是把RESET加上在ST官方的STLINK中,RESET信号总是存在的当然,对于RESET信号来说,也有一个电平转换的问题,那么为什么不能把RESET信号一起接在TXS0108上面实现电平转换呢?这里面涉及到了TXS0108的工作原理了此芯片是一个自动双向电平转换芯片,为了实现自动判别信号的方向,里面用到了一个叫one-shot的电路但是对于reset这种固定电平的信号来说,这个芯片就不是很合适了一般采取以下的电路电平转换电路2在用STlink硬件连接的情况下,可以直接用STlink-utility这个软件来烧写最新版本的下载地址为link.你可以直接用UI界面去进行读写,当然也可以在command line的情况下通过命令的方式进行读写ST-LINK_CLI.exe在STlinkutility 的安装目录下面,运行这个exe可以看到很多参数的意义和用法,大家可以自己去研究如果有问题可以在下面提出来,大家一起探讨当然在用STLink硬件连接的情况下,还可以用OpenOCD来进行烧写OpenOCD的用法可以参考http://openocd.org/获得更多信息需要注意的是用OpenOCD来进行烧写时用注意hla_vid_pid 的配置,对于STLINK/V2,hla_vid_pid= 0x04830x3748但是对于STLINK/V2-1,这个值应该为hla_vid_pid= 0x0483 0x374B二,可以通过STM32的内置的bootlooder来读写firmware对于STM32xx系列MCU来说,在启动的时候会通过BOOT0脚,BOOT1脚(有的IC无此pin,有BOOT1 option1 bit)来设置BOOT的模式一般分为以下三种从flash 启动从系统内存里启动从内置的RAM里启动Bootloader就位于系统内存里, 有了它就可以通过USB,UART,SPI, IIC and CAN等接口烧写软件它是在ST的产线上被写入ROM里的它主要的功能就是通过上面所示的接口中的一个来下载应用程序到内部FLASH里下面以用USB interface为例,用Dfuse软件来烧写flashDfuse软件可以从链接处下载https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/stsw-stm32080.html在做烧写操作时,首先要设置BOOT0 和BOOT1的初始状态,然后给IC供电,让IC进入bootloader打开Dfuse软件,可以看到芯片已经进入DFU mode,可以进行烧写DfuseDFU模式下,firmware需要符合DFU的格式,一般文件是以.dfu为后缀所以有时候要用一个小工具进行firmware的转换这就是DFU file Manager这个软件会在你安装Dfuse的时候同时安装的DFU file manager可以看到你可以在各种格式和DFU格式的firmware之间进行互相转换用DFU模式最大的好处在于你不需要任何额外的硬件就可以进行软件的烧写工作
0 评论