1.烧录程序方式
STM32现在烧录程序的主流方式包括JTAG、SWD和ISP,JTAG和SWD除了可以烧录程序之外还可以实现硬件仿真的,说白了就是可以在Keil MDK上实现在线仿真,调试断点之类的,但是ISP只用于实现程序的烧录,分别说明如下。
1.1 JTAG
JTAG(Joint Test Action Group,联合测试工作组)是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。JTAG 接口的连接有两种标准,即 14 针接口和 20 针接口。
1.2 SWD
SWD串行调试(Serial Wire Debug),是ARM内核调试器的一种通信协议。相比于JTAG协议,占用更少的端口资源。一般只用四个接口即可:SWDIO、SWCLK、VCC、GND。一般SWD电路如下图所示。
1.3 ISP
ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码, 而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。ISP通过芯片内部的自举程序(即Bootloader,由芯片厂家烧写好,不得更改)来选定一种串行的外设,对芯片内部的FLASH进行编程。最常用的ISP方式就是通过串口下载,最主要的优点就是成本低,缺点是只能用于下载程序,不能用Keil MDK硬件仿真。一般ISP电路如下图所示。
2 烧录程序工具
以上说的JTAG、SWD和ISP都是一种调试协议,各有优缺点,但是协议毕竟是软件层面的意思,实际烧录程序需要硬件去连接的,这就是烧录程序的工具,一般STM32常用的有ST-LINK、JLINK和USB转TTL模块。
2.1 ST-LINK
ST-LINK是ST公司推出的调试工具,ST-LINK现在最新的是V3版本,它的价格大约在300美元左右,当然某宝上几十块钱就能买到一个仿的ST-LINK,大多数国内开发者用的都是这种。从外观上来看,ST-LINK的体积小,方便携带。ST-LINK 支持所有带JTAG/SWD接口的STM32系列单片机。
2.2 JLINK
JLINK是德国SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器,很多ARM芯片的接口协议是JTAG,JLINK一端接电脑USB接口,一端接CPU的JTAG接口,JLINK充当的作用就是USB转JTAG,支持JTAG和SWD两种模式。价格也不便宜,正版的也要几千马内,我之前咨询过一个国内的代理商,V11版本的要7500,某宝上仿的V11几百块,不过相比于STLINK的体积,JLINK要大很多。
2.3 USB转TTL模块
有的STM32开发板自带了ISP下载电路,就不需要USB转TTL模块去烧录程序,但是有的没有带,比如在某宝买的比较便宜的STM32C8T6最小系统,这个时候想烧录程序如果没有STLINK和JLINK那么就需要用USB转TTL模块去烧录了,这个某宝十几块钱就能买到。