1.MCU程序烧录方式
最近刚好接触到MCU烧录这一块的东西,综合以前学的一些零散的和目前掌握的相关资料,主要有以下几种相关的方式:ISP,IAP以及ICP。它们都是对MCU进行编程,但具体的方式有所不同,下面详细了解下每个编程方式的特点。
1.ISP
ISP的全称为?In System Programing?,翻译过来为在系统编程。
所谓的在系统编程是指在整块电路板上进行编程,不用将芯片单独拆下来,最终是将整个工程的文件进行烧录。支持ISP的芯片一般在出厂时在芯片内部固化了一段boot程序,我们在硬件电路中留出串口接口,通过上位机软件即可将程序灌入MCU中。
以下是STM32G4芯片的启动方式,主要有从Flash启动,系统存储器启动,SRAM启动三种启动方式,可以看出通过控制BOOT0或者BOOT1可以控制芯片的启动方式。
下图是STM32G4芯片编程手册上的介绍,可以看出我们将BOOT0拉高后,再将BOOT1的OPTR寄存器的bit23以及nSWBOOT0的OPTR寄存器的bit26置1程序即可从我们的系统存储器启动,也就是我们ISP下载的程序。
?为什么从系统存储器启动的程序就是我们通过串口或者其他方式下载的程序了,主要是ST官方在芯片出厂时将一段自举程序(BOOTLoader)放到系统存储区了,而我们的上位机是满足这段程序的协议的,下图是ST手册上提供的地址映射图,可以看出系统存储区是从0x1FF 7000开始的,而我们通过串口下载的程序是放在以0x0800 0000开头的Flash里面的。
提到了BOOTLoader程序,那么ST所生产的片子所有的BOOTLoader程序会是一样的么,答案肯定不是的。比如我们常用的STM32F1的片子,一般只有USART1支持ISP下载,但以STM32G4的片子来看,可以有多种的通讯接口,下图为G4片子可以进行下载程序的通讯接口:?
可以看出,几乎所有的通讯接口均可以满足。但要注意的是我们在使用通讯接口时必须要和对应的引脚对应上,否则会出现和上位机连接失败的问题。
2.ICP
ICP的全称为In Circuit Programing,翻译过来为在电路编程。
我们常用的ST-Link,J-Link一般来讲都属于ICP的范围内,我们常说的ISP编程其实也可以划分在ICP的范围内。
2.总结:
本文主要介绍了ISP编程和ICP编程,着重以STM32G4芯片为例详细说明了ISP编程的细节部分,由于篇幅有限,下篇文章继续聊一聊IAP,我们下期再见。
如果本文帮助到了你,请转发,点赞,分享给你的朋友。由于作者能力和水平有限,文中难免存在错误和纰漏,请不吝赐教。
|