AN2606自举程序一般说明3自举程序一般说明3.1自举程序激活通过配置特定“系统存储器”配置中的BOOTO和BOOT1引脚(请参见表2),然后执行复位即可自动激活自举程序。根据所用引脚配置的不同,可选择Flash、系统存储器或SRAM作为自举空间,如以下表2所示。在一些产品中,BOOT1不表示I/O引脚,而是选项字节区域的一个位。STM32F05x和STM32F3xx器件就属于这种情况,此时BOOT1通过选项字节中的nBoot1位进行配置。当nBoot1位置1时,相当于表2中的BOOT1复位为0。?当nBoot1位复位为0时,相当于表2中的BOOT1置1。表2.自举引脚配置自举模式选择引脚自举模式别名使用BOOT1BOOTOx0用户Flash选择用户Flash作为自举空间01系统存储器选择系统存储器作为自举空间11嵌入式SRAM选择嵌入式SRAM作为自举空间表2表明BOOT引脚配置如下时,STM32微控制器进入系统存储器自举模式:BOOTO=1··BOOT1= 0复位后,在SYSCLK的第四个上升沿锁存BOOT引脚的值。注:在一些产品中,当STM32产品提供双存储区自举特性功能时,(BOOTO=0且BOOT1=X)可进入自举程序。有关详细信息,请参见产品部分的双存储区自举特性部分。当工作温度超出环境温度范围时,由于内部时钟(HSI)随着温度变化,致使串行通信协议时钟损坏,因而可能导致自举程序无法正常运行。3.2退出系统存储器自举模式为了执行应用程序,必须先退出系统存储器自举模式。执行硬件复位即可实现此操作。复位期间,BOOT引脚/位(BOOTO和BOOT1)必须设置为合适的电平,以选择所需的自举模式(请参见表2)。复位后,CPU将从自举存储器的存储器地址空间最底部(起始地址0x00000000)开始执行代码。S11/119文档ID13801第16版
文档 ID 13801 第 16 版 11/119 AN2606 自举程序一般说明 118 3 自举程序一般说明 3.1 自举程序激活 通过配置特定“系统存储器”配置中的 BOOT0 和 BOOT1 引脚(请参见表 2),然后执行 复位即可自动激活自举程序。 根据所用引脚配置的不同,可选择 Flash、系统存储器或 SRAM 作为自举空间,如以下表 2 所示。 在一些产品中,BOOT1 不表示 I/O 引脚,而是选项字节区域的一个位。STM32F05x 和 STM32F3xx 器件就属于这种情况,此时 BOOT1 通过选项字节中的 nBoot1 位进行配置。 ● 当 nBoot1 位置 1 时,相当于表 2 中的 BOOT1 复位为 0。 ● 当 nBoot1 位复位为 0 时,相当于表 2 中的 BOOT1 置 1。 表 2 表明 BOOT 引脚配置如下时,STM32 微控制器进入系统存储器自举模式: ● BOOT0 = 1 ● BOOT1 = 0 复位后,在 SYSCLK 的第四个上升沿锁存 BOOT 引脚的值。 注: 在一些产品中,当 STM32 产品提供双存储区自举特性功能时,(BOOT0 = 0 且 BOOT1 = x) 可进入自举程序。有关详细信息,请参见产品部分的双存储区自举特性部分。 当工作温度超出环境温度范围时,由于内部时钟 (HSI) 随着温度变化,致使串行通信协议时 钟损坏,因而可能导致自举程序无法正常运行。 3.2 退出系统存储器自举模式 为了执行应用程序,必须先退出系统存储器自举模式。执行硬件复位即可实现此操作。复位 期间,BOOT 引脚/位(BOOT0 和 BOOT1)必须设置为合适的电平,以选择所需的自举模 式(请参见表 2)。复位后,CPU 将从自举存储器的存储器地址空间最底部(起始地址 0x0000 0000)开始执行代码。 表 2. 自举引脚配置 自举模式选择引脚 自举模式 别名使用 BOOT1 BOOT0 X 0 用户 Flash 选择用户 Flash 作为自举空间 0 1 系统存储器 选择系统存储器作为自举空间 1 1 嵌入式 SRAM 选择嵌入式 SRAM 作为自举空间
自举程序一般说明AN26063.3自举程序标识根据所用STM32器件的不同,自举程序可支持一个或多个嵌入式串行外设,用来将代码下载到内部Flash中。自举程序标识符(ID)可提供有关支持的串行外设的信息。对于给定的STM32器件,自举程序通过以下各项标识:自举程序(协议)版本:自举程序中使用的串行外设(USART、CAN、USB等)通信协1.议的版本。可使用自举程序GetVersion命令检索此版本。2.自举程序标识符(ID):STM32器件自举程序的版本,以0xXY形式的单字节代码表示,其中:X指定器件自举程序所用的嵌入式串行外设:X=1:仅使用一个USARTX=2:使用两个USARTX=3:使用两个USART,一个CAN和DFUX=4:使用两个USART和DFUX=5:使用两个USART和I2CY指定器件的自举程序版本下面以自举程序IDOx10为例。这表示仅使用一个USART的器件自举程序的第一个版本。自举程序ID编程在器件系统存储器最后一个字节地址减1所对应的空间中,可通过自举程序“Readmemory”命令来读取,或者通过使用JTAG/SWD直接访问系统存储器来读取。下表提供了有关STM32器件嵌入式自举程序的标识信息。表3.嵌入式自举程序自举程序ID自举程序器件STM32系列支持的串行外设(协议)版本ID存储单元NANAUSART1USART (V2.2)小容量NANA中容量USART1USART (V2.2)NANAUSART1USART (V2.2)大容量USART (V2.2(1)USART1/USART2(重映射)/F1NA互连型CAN2(重映射)/DFU(USBNACAN (V2.0)DFU(V2.2)设备)USART1V1.0USART (V2.2)中容量超值型Ox1FFFF7D6USART1V1.0大容量超值型Ox1FFFF7D6USART (V2.2)V2.10x1FFFF7D6USART (V3.0)超大容量USART1/USART2(重映射)USART1/USART2V2.0Ox1FF00FFE中容量超低功耗USART (V3.0)USART1/USART2/DFUUSART (V3.1)/V4.5Ox1FF01FFE大容量超低功耗L1DFU (V2.2)(USB设备FS)USART1/USART2/DFUUSART(V3.1)/中容量增强型超V4.0Ox1FF01FFEDFU (V2.2)低功耗(USB设备FS)A12/119文档ID13801第16版
自举程序一般说明 AN2606 12/119 文档 ID 13801 第 16 版 3.3 自举程序标识 根据所用 STM32 器件的不同,自举程序可支持一个或多个嵌入式串行外设,用来将代码下 载到内部 Flash 中。自举程序标识符 (ID) 可提供有关支持的串行外设的信息。 对于给定的 STM32 器件,自举程序通过以下各项标识: 1. 自举程序(协议)版本:自举程序中使用的串行外设(USART、CAN、USB 等)通信协 议的版本。可使用自举程序 Get Version 命令检索此版本。 2. 自举程序标识符 (ID):STM32 器件自举程序的版本,以 0xXY 形式的单字节代码表示, 其中: — X 指定器件自举程序所用的嵌入式串行外设: X = 1:仅使用一个 USART X = 2:使用两个 USART X = 3:使用两个 USART,一个 CAN 和 DFU X = 4:使用两个 USART 和 DFU X = 5:使用两个 USART 和 I2C — Y 指定器件的自举程序版本 下面以自举程序 ID 0x10 为例。这表示仅使用一个 USART 的器件自举程序的第一 个版本。 自举程序 ID 编程在器件系统存储器最后一个字节地址减 1 所对应的空间中,可通 过自举程序“Read memory”命令来读取,或者通过使用 JTAG/SWD 直接访问系 统存储器来读取。 下表提供了有关 STM32 器件嵌入式自举程序的标识信息。 表 3. 嵌入式自举程序 STM32 系列 器件 支持的串行外设 自举程序 ID 自举程序 ID (协议)版本 存储单元 F1 小容量 USART1 NA NA USART (V2.2) 中容量 USART1 NA NA USART (V2.2) 大容量 USART1 NA NA USART (V2.2) 互连型 USART1/USART2(重映射)/ CAN2(重映射)/DFU(USB 设备) NA NA USART (V2.2(1)) CAN (V2.0) DFU(V2.2) 中容量超值型 USART1 V1.0 0x1FFFF7D6 USART (V2.2) 大容量超值型 USART1 V1.0 0x1FFFF7D6 USART (V2.2) 超大容量 USART1/USART2(重映射) V2.1 0x1FFFF7D6 USART (V3.0) L1 中容量超低功耗 USART1/USART2 V2.0 0x1FF00FFE USART (V3.0) 大容量超低功耗 USART1/USART2/DFU (USB 设备 FS) V4.5 0x1FF01FFE USART (V3.1)/ DFU (V2.2) 中容量增强型超 低功耗 USART1/USART2/DFU (USB 设备 FS) V4.0 0x1FF01FFE USART (V3.1)/ DFU (V2.2)
AN2606自举程序一般说明表3.嵌入式自举程序(续)自举程序ID自举程序器件STM32系列支持的申行外设(协议)版本ID存储单元V2.0USART1/USART30x1FFF77DEUSART (V3.0)F2STM32F2xxxXUSART1/USART3/CAN2/USART(V3.1)/CANV3.3Ox1FFF77DE(V2.0)/DFU (V2.2)DFU(USB设备FS)V2.1USART (V3.1)STM32F051xxUSART1/USART20x1FFFF7A6FOUSART1/v1.0STM32F050xx0x1FFFF7A6USART (V3.1)USART (V3.1)STM32F40xxx/USART1/USART3/CAN2/V3.1Ox1FFF77DECAN (V2.0)41xxxDFU(USB设备FS)DFU (V2.2)F4USART (V3.1)/STM32F427xxlUSART1/USART3/CAN2/V3.0Ox1FFF76DECAN (V2.0)437xxDFU(USB设备FS)DFU (V2.2)USART1/USART2/DFUUSART (V3.1)V4.1STM32F37xxx0x1FFFF7A6DFU (V2.2)(USB设备FS)USART1/USART2/DFUUSART (V3.1)/V4.1STM32F30xxx0x1FFFF796DFU (V2.2)(USB设备FS)F3USART (V3.1)/STM32F38xxXV5.00x1FFFF7A6USART1/USART2//2C12C (V1.0)USART (V3.1)/STM32F31xxxV5.0USART1/USART2/12C10x1FFFF79612C (V1.0)对于互连型器件,USART自举程序将返回V2.0协议版本而不是V2.2协议版本。有关详细信息,请参见http://www.st.com提供的“STM32F105xx和STM32F107xx版本Z”勘误表。A文档ID13801第16版13/119
文档 ID 13801 第 16 版 13/119 AN2606 自举程序一般说明 118 F2 STM32F2xxxx USART1/USART3 V2.0 0x1FFF77DE USART (V3.0) USART1/USART3/CAN2/ DFU(USB 设备 FS) V3.3 0x1FFF77DE USART (V3.1)/CAN (V2.0)/DFU (V2.2) F0 STM32F051xx USART1/USART2 V2.1 0x1FFFF7A6 USART (V3.1) STM32F050xx USART1 V1.0 0x1FFFF7A6 USART (V3.1) F4 STM32F40xxx/ 41xxx USART1/USART3/CAN2/ DFU(USB 设备 FS) V3.1 0x1FFF77DE USART (V3.1)/ CAN (V2.0)/ DFU (V2.2) STM32F427xx/ 437xx USART1/USART3/CAN2/ DFU(USB 设备 FS) V3.0 0x1FFF76DE USART (V3.1)/ CAN (V2.0)/ DFU (V2.2) F3 STM32F37xxx USART1/USART2/DFU (USB 设备 FS) V4.1 0x1FFFF7A6 USART (V3.1)/ DFU (V2.2) STM32F30xxx USART1/USART2/DFU (USB 设备 FS) V4.1 0x1FFFF796 USART (V3.1)/ DFU (V2.2) STM32F38xxx USART1/USART2/I2C1 V5.0 0x1FFFF7A6 USART (V3.1)/ I2C (V1.0) STM32F31xxx USART1/USART2/I2C1 V5.0 0x1FFFF796 USART (V3.1)/ I2C (V1.0) 1. 对于互连型器件,USART 自举程序将返回 V2.0 协议版本而不是 V2.2 协议版本。有关详细信息,请参见 http://www.st.com 提供的“STM32F105xx 和 STM32F107xx 版本 Z”勘误表。 表 3. 嵌入式自举程序(续) STM32 系列 器件 支持的串行外设 自举程序 ID 自举程序 ID (协议)版本 存储单元
STM32F100xX、STM32F101xX、STM32F102xX、STM32F103xX中容量和大容量超值型自举程序4STM32F100xX、STM32F101xX、STM32F102xX、STM32F103xx中容量和大容量超值型自举程序本部分使用STM32F10xXX指代小容量、中容量及大容量STM32F101xX和STM32F103xX器件,低容量和中容量STM32F102xX器件,低容量、中容量及大容量STM32F100xx器件以及中容量和大容量超值型器件。4.1自举程序配置STM32F10xXX器件嵌入式自举程序仅支持USART1这一种接口。下表介绍了系统存储器自举模式下自举程序需要使用的STM32F10xxX硬件资源。表4.系统存储器自举模式下STM32F10xXX器件的配置备注自举程序功能/外设状态时钟源HSI使能使用PLL作为系统时钟,频率为24MHz。RAM.自地址0x20000000起的512个字节空间供自举程序固件使用。系统存储器自地址0x1FFFF000起的2KB空间包含自举程序固件。-独立看门狗(IWDG)预分频器配置为最大值,并定期进行刷新IWDGUSART1以防止看门狗复位(如果用户事先使能硬件IWDG选项)。自举程序USART1使能初始化后,USART1的配置为:8位,偶校验位和1个停止位。输入USART1_RX引脚PA10引脚:USART1用于接收。推挽输出USART1_TX引脚PA9引脚:USART1用于发送,SysTick定时器使能用于自动检测主机串口波特率。系统时钟由嵌入式内部高速RC提供,自举程序代码不需要外部石英时钟。下载应用程序二进制代码后,如果选择执行Go命令,则在跳转到用户应用程序之前,自举程序使用的外设寄存器(如上表所示)不会初始化为默认复位值。如果要使用这些寄存器,应在用户应用程序中对其重新配置。因此,如果应用程序正在使用IWDG,则必须调整IWDG预分频器值来满足应用程序的要求(因为自举程序已将预分频器设置为最大值)。4.2自举程序硬件要求将STM32置于系统存储器自举模式所需的硬件包含任何相关电路、开关或跳线,它们能够在复位期间使BOOTO引脚保持高电平,使BOOT1引脚保持低电平。要在系统存储器自举模式下连接STM32,必须将RS232串行接口(例如ST3232RS232收发器)直接连接到USART1_RX(PA10)和USART1_TX(PA9)引脚。注:USART1CK、USART1CTS和USART1RTS引脚未使用,因此用户可将这些引脚用于其它外设或GPIO有关硬件建议的详细信息,请参见应用笔记AN2586:可从意法半导体网站htp://www.st.com获取“STM32硬件开发:入门”。14/119文档ID13801第16版
STM32F100xx、STM32F101xx、STM32F102xx、 STM32F103xx 中容量和大容量超值型自举程序 14/119 文档 ID 13801 第 16 版 4 STM32F100xx、STM32F101xx、STM32F102xx、 STM32F103xx 中容量和大容量超值型自举程序 本部分使用 STM32F10xxx 指代小容量、中容量及大容量 STM32F101xx 和 STM32F103xx 器 件,低容量和中容量 STM32F102xx 器件,低容量、中容量及大容量 STM32F100xx 器件以 及中容量和大容量超值型器件。 4.1 自举程序配置 STM32F10xxx 器件嵌入式自举程序仅支持 USART1 这一种接口。 下表介绍了系统存储器自举模式下自举程序需要使用的 STM32F10xxx 硬件资源。 系统时钟由嵌入式内部高速 RC 提供,自举程序代码不需要外部石英时钟。 下载应用程序二进制代码后,如果选择执行 Go 命令,则在跳转到用户应用程序之前,自举 程序使用的外设寄存器(如上表所示)不会初始化为默认复位值。如果要使用这些寄存器, 应在用户应用程序中对其重新配置。因此,如果应用程序正在使用 IWDG,则必须调整 IWDG 预分频器值来满足应用程序的要求(因为自举程序已将预分频器设置为最大值)。 4.2 自举程序硬件要求 将 STM32 置于系统存储器自举模式所需的硬件包含任何相关电路、开关或跳线,它们能够 在复位期间使 BOOT0 引脚保持高电平,使 BOOT1 引脚保持低电平。 要在系统存储器自举模式下连接 STM32,必须将 RS232 串行接口(例如 ST3232 RS232 收 发器)直接连接到 USART1_RX (PA10) 和 USART1_TX (PA9) 引脚。 注: USART1_CK、USART1_CTS 和 USART1_RTS 引脚未使用,因此用户可将这些引脚用于 其它外设或 GPIO。 有关硬件建议的详细信息,请参见应用笔记 AN2586:可从意法半导体网站 http://www.st.com 获取“STM32 硬件开发:入门”。 表 4. 系统存储器自举模式下 STM32F10xxx 器件的配置 自举程序 功能/外设 状态 备注 USART1 自举程序 时钟源 HSI 使能 使用 PLL 作为系统时钟,频率为 24 MHz。 RAM - 自地址 0x20000000 起的 512 个字节空间供自举程序固件使用。 系统存储器 - 自地址 0x1FFFF000 起的 2 KB 空间包含自举程序固件。 IWDG - 独立看门狗 (IWDG) 预分频器配置为最大值,并定期进行刷新 以防止看门狗复位(如果用户事先使能硬件 IWDG 选项)。 USART1 使能 初始化后,USART1 的配置为:8 位,偶校验位和 1 个停止位。 USART1_RX 引脚 输入 PA10 引脚:USART1 用于接收。 USART1_TX 引脚 推挽输出 PA9 引脚:USART1 用于发送。 SysTick 定时器 使能 用于自动检测主机串口波特率
AN2606STM32F100xX、STM32F101xX、STM32F102xX、:STM32F103xX中容量和大容量超值型自举4.3自举程序选择图 1.STM32F10XXXUSART1自举程序系统复位系统初始化(时钟、GPIOIWDG、SysTick)USART接收到0x7F禁止所有中断源立配置USART1对USART1执行BL_USART_LoopMSv31602V2进入系统存储器自举模式且微控制器已按上述要求配置后,自举程序代码立即开始扫描USART1RX引脚,等待接收Ox7F数据顿:一个起始位、Ox7F数据位、偶校验位和一个停止位。此数据帧的持续时间由SysTick定时器测量。之后,该定时器的计数值用于计算关于当前系统时钟的相应波特率因子。随后,代码将相应初始化串行接口。通过计算出的波特率,向主机返回确认字节(Ox79),指示STM32F10xxX已准备好接收用户命令。S文档ID13801第16版15/119
文档 ID 13801 第 16 版 15/119 AN2606STM32F100xx、STM32F101xx、STM32F102xx、 STM32F103xx 中容量和大容量超值型自举 118 4.3 自举程序选择 图 1. STM32F10xxx USART1 自举程序 进入系统存储器自举模式且微控制器已按上述要求配置后,自举程序代码立即开始扫描 USART1_RX 引脚,等待接收 0x7F 数据帧:一个起始位、0x7F 数据位、偶校验位和一个停 止位。 此数据帧的持续时间由 SysTick 定时器测量。之后,该定时器的计数值用于计算关于当前系 统时钟的相应波特率因子。 随后,代码将相应初始化串行接口。通过计算出的波特率,向主机返回确认字节 (0x79),指 示 STM32F10xxx 已准备好接收用户命令。 06Y9 ㋏㒳ԡ ㋏㒳߱ྟ࣪ᯊ˄䩳ǃ*3,2ǃ ,:'*ǃ6\V7LFN˅ 86$57B (]ࠄᬊ 䜡㕂86$57 ᇍ86$57ᠻ㸠 %/B86$57B/RRS ৺ ⽕ℶ᠔᳝Ёᮁ⑤ ᰃ