STMCU小助手
发布时间:2022-7-25 16:29
|
前言 自举程序存储在 STM32 器件的内部自举 ROM 存储器 (系统存储器)中。在芯片生产期间由 ST 编程。其主要任务是通过一种可用的串行外设(USART、CAN、USB、I2C 等)将应用程序下载到内部 Flash 中。每种串行接口都定义了相应的通信协议,其中包含兼容的命令集和序列。本文档适用于表 1 中所列产品。这些产品在整个文档中称为 STM32。
/ n2 W7 K$ `" |6 {; X U 自举程序的主要功能如下:+ C3 ] [, R! x • 使用嵌入式串行接口按照预定义的通信协议下载代码 . • 可传送并更新 Flash 代码、数据和向量表部分。* P3 t6 _: @7 Q, y 本应用笔记介绍了自举程序的一般概念。说明了使用 STM32 器件的自举程序时支持的外设以及需要考虑的硬件要求。不过,支持的每种串行外设的低层级通信协议规范在单独的文档中进行了介绍 (参见第 1 节:相关文档)' [0 {, Z' y! i7 L: l 3 Q. K0 w5 [! _! b! g) K9 { 3 通用自举程序描述 3.1 自举程序激活* X i* r" f. e6 |$ o- _8 E 自举程序通过应用表 2 所述模式之一激活。3 l0 v6 I8 J4 [ 如果 Boot From Bank2 选项激活 (针对支持此功能的产品),自举程序执行 Dual Boot 机制,如图 “STM32xxxx 的双存储区自举实现 ” 中所示,其中 STM32xxxx 是相关的 STM32 产品。' w, m+ b6 ]8 X' s 否则,执行自举程序选择协议,如图 “STM32xxxx 的自举程序 VY.x 选择 ” 所示,其中STM32xxxx 是相关的 STM32 产品。! `9 L; |# V, i/ A) \; ] 当读出保护 Level2 激活时,任何情况下 STM32 都不在系统存储器上自举,自举程序不能执行 (除非从 Flash 用户代码跳转到它)。# K+ v. r1 ?* n, }: n ! g! p V! L [3 B6 {+ ^( O 表 2. 自举程序激活模式
除了上述模式之外,用户可通过从用户代码跳转到系统存储器来执行自举程序。跳转到自举程序之前,用户必须: • 禁用所有外设时钟) H1 r! m$ n4 @; ?6 s4 V4 X0 m0 s • 禁用所用的 PLL. X1 W3 U! ^3 q6 w l • 禁用中断3 F m4 m2 K" x/ T • 清空挂起的中断 通过离开自举程序激活条件并生成硬件复位,或使用 Go 命令来执行用户代码,可退出系统存储器自举模式。 注: 如果选择执行 Go 命令,则在跳转到用户应用程序之前,自举程序使用的外设寄存器不会初始化为默认复位值。如果要使用这些寄存器,应在用户应用程序中对其重新配置。因此,如果应用程序正在使用 IWDG,则必须调整 IWDG 预分频器值来满足应用程序的要求 (因为已将预分频器设置为最大值)。/ z+ N8 B/ t# L8 F; z 3.2 自举程序标识* }6 {0 i5 k$ W8 Y4 C 根据所用 STM32 器件的不同,自举程序可支持一个或多个嵌入式串行外设,用来将代码下载到内部 Flash 中。自举程序标识符 (ID) 可提供有关支持的串行外设的信息。; n* b& @$ c# }: m4 J7 E. Z+ q# L 对于给定的 STM32 器件,自举程序通过以下各项标识: 1. 自举程序 (协议)版本:自举程序中使用的串行外设 (USART、 CAN、 USB 等)通信协议的版本。可使用自举程序 Get Version 命令检索此版本。* i5 u+ Z# c& {* x 2. 自举程序标识符 (ID):STM32 器件自举程序的版本,以 0xXY 形式的单字节代码表示,其中: – X 指定器件自举程序所用的嵌入式串行外设: X = 1:使用一个 USART X = 2:使用两个 USART! O1 G9 s' S g$ l X = 3:使用 USART、 CAN 和 DFU3 b2 Y1 f3 J% F9 f- ~4 ~$ [ X = 4:使用 USART 和 DFU' A% D* _- c( G) { y; I4 U X = 5:使用 USART 和 I2C) \( \( C6 I; i" p9 n X = 6:使用 I2C 8 P& W b, d1 O4 N6 h* t X = 7:使用 USART、 CAN、 DFU 和 I2C - ]! i! I" ~4 k X = 8:使用 I2C 和 SPI X = 9: 使用 USART、 CAN、 DFU、 I2C 和 SPI 9 t: i" e* b' |% c& B1 d& G X = 10:使用 USART、 DFU 和 I2C , J( K' G7 j2 u, _ A X = 11:使用 USART、 I2C 和 SPI j. ?# z3 s3 h0 D. I X = 12:使用 USART 和 SPI X = 13:使用 USART、 DFU、 I2C 和 SPI ) v& z0 H }& i6 s2 J4 Z – Y 指定器件的自举程序版本 下面以自举程序 ID 0x10 为例。这表示仅使用一个 USART 的器件自举程序的第一个版本。 自举程序 ID 编程在器件系统存储器最后一个字节地址减 1 所对应的空间中,可通过自举程序 “Read memory” 命令来读取,或者通过使用 JTAG/SWD 直接访问系统存储器来读取。! T) k0 C2 m4 {. W* Q- L0 N 下表提供了有关 STM32 器件嵌入式自举程序的标识信息。8 m% b$ Q9 z9 Z. Z 2 `2 ~, f. C; c* _, j5 v, I
完整版请查看:附件" W1 D5 E8 b/ [! ?* ^& p |
CD00167594_ZHV23.pdf
下载3.84 MB, 下载次数: 2
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
使用 STM32 的 DWT 单元监控内存
DAC,COMP,HRTIM Fault 功能的使用
微信公众号
手机版