STM32F100xX、STM32F101xX、STM32F102xX、STM32F103xx中容量和大容量超值型自举程序4.4自举程序版本表5列出了STM32F10xxx器件的自举程序版本。表5.STM32F10xx自举程序版本说明自举程序版本号V2.0初始自举程序版本。一更新Go命令以初始化主栈指针一更新Go命令,以在跳转地址处于选项字节区域或系统存储区时返V2.1回NACK-更新GetID命令以返回两个字节的器件ID将自举程序版本更新为V2.1-更新ReadMemory、WriteMemory和Go命令,以通过NACK-响应拒绝对自举程序所用的RAM存储器前0x200字节的访问V2.2更新ReadoutUnprotect命令,以在禁止ROP之前将整个RAM-内容初始化为0x0A16/119文档ID13801第16版
STM32F100xx、STM32F101xx、STM32F102xx、 STM32F103xx 中容量和大容量超值型自举程序 16/119 文档 ID 13801 第 16 版 4.4 自举程序版本 表 5 列出了 STM32F10xxx 器件的自举程序版本。 表 5. STM32F10xxx 自举程序版本 自举程序版本号 说明 V2.0 初始自举程序版本。 V2.1 — 更新 Go 命令以初始化主栈指针 — 更新 Go 命令,以在跳转地址处于选项字节区域或系统存储区时返 回 NACK — 更新 Get ID 命令以返回两个字节的器件 ID — 将自举程序版本更新为 V2.1 V2.2 — 更新 Read Memory、Write Memory 和 Go 命令,以通过 NACK 响应拒绝对自举程序所用的 RAM 存储器前 0x200 字节的访问 — 更新 Readout Unprotect 命令,以在禁止 ROP 之前将整个 RAM 内容初始化为 0x0
AN2606STM32F105xx和STM32F107xx器件自举程序5STM32F105xX和STM32F107xX器件自举程序5.1自举程序配置STM32F105xX和STM32F107xx器件嵌入式自举程序支持四种串行外设:USART1、USART2、CAN2和DFU(USB)。这意味着支持四种串行外设:USART1、USART2、CAN2和DFU(USB)。下表显示了在系统存储器自举模式下STM32F105xX和STM32F107xX器件的自举程序需要使用的硬件资源。表6.系统存储器自举模式下的STM32F105xx/107xx配置自举程序功能/外设状态备注使用PLL作为系统时钟,频率为24MHz。仅用于USART1和USART2自举程序,以及在CAN2、USBHSI使能检测期间用于CAN和DFU自举程序(选择CAN或DFU自举程序后,时钟源将由外部石英时钟提供)。只有DFU和CAN自举程序必须使用外部时钟,外部时钟必须提供以下其中一种频率:8MHZ、14.7456MHz或25MHz。RCCHSE使能对于CAN自举程序,使用14.7456MHz作为HSE时,PLL仅用于生成48MHz的频率。对于DFU自举程序,PLL则用于从所有支持的外部适用于所有时钟频率生成48MHz的系统时钟。自举程序使能时钟安全系统(CSS)中断以用于CAN和DFU自举程序。外部时钟发生任何故障(或被移除)都将产生系统复位。独立看门狗(IWDG)预分频器配置为最大值,并定期IWDG进行刷新以防止看门狗复位(如果用户事先使能硬件IWDG选项)。自地址0x1FFFB000起的18KB空间包含自举程序.系统存储器固件。自地址0x20000000起的4KB空间供自举程序固件RAM使用。初始化后,USART1的配置为:8位,偶校验位和1个USART1使能停止位。USART1_RX引脚输入PA10引脚:USART1用于接收。USART1自举程序USART1_TX引脚推挽输出PA9引脚:USART1用于发送。检测阶段期间,USART2_RX(PD6)、CAN2_RX(PB5)、OTG_FS_DM(PA11)和OTG_FS_DP(PA12)引脚必须保持高电平或低电平。USART1和用于自动检测用于USARTX自举程序的主机串口波USART2SysTick定时器使能特率。自举程序17/119文档ID13801第16版
文档 ID 13801 第 16 版 17/119 AN2606 STM32F105xx 和 STM32F107xx 器件自举程序 118 5 STM32F105xx 和 STM32F107xx 器件自举程序 5.1 自举程序配置 STM32F105xx 和 STM32F107xx 器件嵌入式自举程序支持四种串行外设:USART1、 USART2、CAN2 和 DFU (USB)。这意味着支持四种串行外设:USART1、USART2、CAN2 和 DFU (USB)。 下表显示了在系统存储器自举模式下 STM32F105xx 和 STM32F107xx 器件的自举程序需要 使用的硬件资源。 表 6. 系统存储器自举模式下的 STM32F105xx/107xx 配置 自举程序 功能/外设 状态 备注 适用于所有 自举程序 RCC HSI 使能 使用 PLL 作为系统时钟,频率为 24 MHz。仅用于 USART1 和 USART2 自举程序,以及在 CAN2、USB 检测期间用于 CAN 和 DFU 自举程序(选择 CAN 或 DFU 自举程序后,时钟源将由外部石英时钟提供)。 HSE 使能 只有 DFU 和 CAN 自举程序必须使用外部时钟,外部时 钟必须提供以下其中一种频率:8 MHz、14.7456 MHz 或 25 MHz。 对于 CAN 自举程序,使用 14.7456 MHz 作为 HSE 时,PLL 仅用于生成 48 MHz 的频率。 对于 DFU 自举程序,PLL 则用于从所有支持的外部 时钟频率生成 48 MHz 的系统时钟。 - 使能时钟安全系统 (CSS) 中断以用于 CAN 和 DFU 自 举程序。外部时钟发生任何故障(或被移除)都将产 生系统复位。 IWDG - 独立看门狗 (IWDG) 预分频器配置为最大值,并定期 进行刷新以防止看门狗复位(如果用户事先使能硬件 IWDG 选项)。 系统存储器 - 自地址 0x1FFF B000 起的 18 KB 空间包含自举程序 固件。 RAM - 自地址 0x2000 0000 起的 4 KB 空间供自举程序固件 使用。 USART1 自举程序 USART1 使能 初始化后,USART1 的配置为:8 位,偶校验位和 1 个 停止位。 USART1_RX 引脚 输入 PA10 引脚:USART1 用于接收。 USART1_TX 引脚 推挽输出 PA9 引脚:USART1 用于发送。 检测阶段期间,USART2_RX (PD6)、CAN2_RX (PB5)、OTG_FS_DM (PA11) 和 OTG_FS_DP (PA12) 引脚必须保持高电平或低电平。 USART1 和 USART2 自举程序 SysTick 定时器 使能 用于自动检测用于 USARTx 自举程序的主机串口波 特率
STM32F105xx和STM32F107xX器件自举程序AN2606表6.系统存储器自举模式下的STM32F105xx/107xx配置(续)自举程序状态功能/外设备注初始化后,USART2的配置为:8位,偶校验位和1个USART2使能停止位。USART2使用其重映射引脚。输入USART2_RX引脚PD6引脚:USART2用于接收(重映射引脚)USART2自举程序USART2_TX引脚推挽输出PD5引脚:USART2用于发送(重映射引脚)检测阶段期间,USART1_RX(PA10)、CAN2_RX(PB5)、OTG_FS_DM(PA11)和OTG_FS_DP(PA12)引脚必须保持高电平或低电平。初始化后,CAN2的配置为:波特率125kbpS,11位标识符。CAN2使能注:在STM32F105xx和STM32F107xx器件中,由于CAN1管理CAN2和SRAM之间的通信,因此执行CAN自举程序期间要为CAN1提供时钟。CAN2自举程序CAN2_RX引脚输入PB5引脚:CAN2用于接收(重映射引脚)CAN2_TX引脚推挽输出PB6引脚:CAN2用于发送(重映射引脚)检测阶段期间,USART1_RX(PA10)、USART2_RX(PD6)、OTG_FS_DM(PA11)和OTG_FS_DP(PA12)引脚必须保持高电平或低电平。USBOTGFS使能USBOTGFS配置为强制器件模式OTG_FS_VBUS引脚PA9:电源电压线输入或复用功能,通过OTG_FS_DM引脚PA11:USB发送接收数据线USBOTGFS控制器自DFU动控制OTG_FS_DP引脚PA12:USB发送接收数据线自举程序中断使能使能USB_OTG_FS中断向量以用于USBDFU通信。检测阶段期间,USART1_RX(PA10)、USART2_RX(PD6)和CAN2_RX(PB5)引脚必须保持高电平或低电平。对于USARTx自举程序,系统时钟由嵌入式内部高速RC提供。该内部时钟同样用于DFU和CAN自举程序,但仅限选择阶段。选择阶段结束后,执行DFU和CAN自举程序需要使用外部时钟(8MHz、14.7456MHz或25MHz)。下载应用程序二进制代码后,如果选择执行Go命令,则在跳转到用户应用程序之前,自举程序使用的所有外设寄存器(如上表所示)将初始化为默认复位值。如果用户应用程序使用IWDG,则必须调整IWDG预分频器值来满足应用程序的要求(因为自举程序已将预分频器设置为最大值)。A18/119文档ID13801第16版
STM32F105xx 和 STM32F107xx 器件自举程序 AN2606 18/119 文档 ID 13801 第 16 版 对于 USARTx 自举程序,系统时钟由嵌入式内部高速 RC 提供。该内部时钟同样用于 DFU 和 CAN 自举程序,但仅限选择阶段。选择阶段结束后,执行 DFU 和 CAN 自举程序需要使 用外部时钟(8 MHz、14.7456 MHz 或 25 MHz)。 下载应用程序二进制代码后,如果选择执行 Go 命令,则在跳转到用户应用程序之前,自举 程序使用的所有外设寄存器(如上表所示)将初始化为默认复位值。 如果用户应用程序使用 IWDG,则必须调整 IWDG 预分频器值来满足应用程序的要求(因为 自举程序已将预分频器设置为最大值)。 USART2 自举程序 USART2 使能 初始化后,USART2 的配置为:8 位,偶校验位和 1 个 停止位。USART2 使用其重映射引脚。 USART2_RX 引脚 输入 PD6 引脚:USART2 用于接收(重映射引脚) USART2_TX 引脚 推挽输出 PD5 引脚:USART2 用于发送(重映射引脚) 检测阶段期间,USART1_RX (PA10)、CAN2_RX (PB5)、OTG_FS_DM (PA11) 和 OTG_FS_DP (PA12) 引脚必须保持高电平或低电平。 CAN2 自举程序 CAN2 使能 初始化后,CAN2 的配置为:波特率 125 kbps,11 位 标识符。 注:在 STM32F105xx 和 STM32F107xx 器件中,由 于 CAN1 管理 CAN2 和 SRAM 之间的通信,因此执 行 CAN 自举程序期间要为 CAN1 提供时钟。 CAN2_RX 引脚 输入 PB5 引脚:CAN2 用于接收(重映射引脚)。 CAN2_TX 引脚 推挽输出 PB6 引脚:CAN2 用于发送(重映射引脚)。 检测阶段期间,USART1_RX (PA10)、USART2_RX (PD6)、OTG_FS_DM (PA11) 和 OTG_FS_DP (PA12) 引脚必须保持高电平或低电平。 DFU 自举程序 USB OTG FS 使能 USB OTG FS 配置为强制器件模式 OTG_FS_VBUS 引脚 输入或复用功能,通过 USB OTG FS 控制器自 动控制 PA9:电源电压线 OTG_FS_DM 引脚 PA11:USB 发送接收数据线 OTG_FS_DP 引脚 PA12:USB 发送接收数据线 中断 使能 使能 USB_OTG_FS 中断向量以用于 USB DFU 通信。 检测阶段期间,USART1_RX (PA10)、USART2_RX (PD6) 和 CAN2_RX (PB5) 引脚必须保持高电 平或低电平。 表 6. 系统存储器自举模式下的 STM32F105xx/107xx 配置(续) 自举程序 功能/外设 状态 备注
AN2606STM32F105xx和STM32F107xX器件自举程序5.2自举程序硬件要求将STM32F105xx和STM32F107xx置于系统存储器自举模式所需的硬件包含任何相关电路、开关或跳线,它们能够在复位期间使BOOTO引脚保持高电平,使BOOT1引脚保持低电平。要在系统存储器自举模式下连接STM32F105xX和STM32F107xX,必须确认以下条件检测阶段期间,此自举程序未使用的外设RX引脚必须保持已知电平(低电平或高电平)?且不得悬空,如下所述:如果使用USART1连接自举程序,则检测阶段期间,USART2_RX(PD6)CAN2_RX(PB5)、OTG_FS_DMPA11)和OTG_FS_DP(PA12)引脚必须保持高电平或低电平,并且不得悬空。如果使用USART2连接自举程序,则检测阶段期间,USART1_RX(PA10)CAN2_RX(PB5)、OTG_FS_DM(PA11)和OTG_FS_DP(PA12)引脚必须保持高电平或低电平,并且不得悬空。如果使用CAN2连接自举程序,则检测阶段期间,USART1_RX(PA10)、USART2_RX(PD6)、OTG_FS_DM(PA11)和OTG_FS_DP(PA12)引脚必须保持高电平或低电平,并且不得悬空。如果使用DFU连接自举程序,则检测阶段期间,USART1_RX(PA10)、USART2_RX(PD6)和CAN2_RX(PB5)引脚必须保持高电平或低电平,并且不得悬空。通过以下硬件连接外设:RS232串行接口(例如ST3232RS232收发器),使用USART1时必须将该接口直接连接到USART1_RX(PA10)和USART1_TX(PA9)引脚;使用USART2时则必须直接连接到USART2_RX(PD6)和USART2_TX(PD5)引脚CAN接口(CAN收发器),必须将该接口直接连接到CAN2_RXPB5)和CAN2_TX(PB6)引脚经认证的USB电缆,必须使用此类电缆到连接微控制器(也可使用ESD保护电路)USART1CK、USART1CTS和USART1RTS引脚未使用,因此应用程序可将这些引脚用于其它外设或GPIO。该注释同样适用于USART2。使能USB设备后,其所有相关引脚专用于USB通信,无法用于其它应用目的。用户可借助PC串行小应用程序,使用RS232串行接口分别通过CTS线和DCD线来控制BOOTO和复位引脚。用户必须使用全零调制解调器电缆。STM3210C-EVAL板提供了实现此控制功能所需的硬件。相关详细信息,请参见文档:“STM321OC-EVAL板用户手册”可从意法半导体网站获取该手册:http://www.st.com。5.3自举程序选择STM32F105xX和STM32F107xx嵌入式自举程序支持四种外设接口:USART1、USART2、CAN2和DFU(USB)。其中任何一种外设接口都可用于与自举程序进行通信,以及将应用程序代码下载到内部Flash。嵌入式自举程序固件可自动检测要使用的外设接口。在无限循环中,它将检测支持的自举程序接口上进行的任何通信。注:如下文所述,检测阶段期间,此自举程序未使用的外设RX引脚必须保持已知电平(低电平或高电平)且不得悬空。有关详细信息,请参见第5.2节:自举程序硬件要求。A19/119文档ID13801第16版
文档 ID 13801 第 16 版 19/119 AN2606 STM32F105xx 和 STM32F107xx 器件自举程序 118 5.2 自举程序硬件要求 将 STM32F105xx 和 STM32F107xx 置于系统存储器自举模式所需的硬件包含任何相关电 路、开关或跳线,它们能够在复位期间使 BOOT0 引脚保持高电平,使 BOOT1 引脚保持低 电平。 要在系统存储器自举模式下连接 STM32F105xx 和 STM32F107xx,必须确认以下条件: ● 检测阶段期间,此自举程序未使用的外设 RX 引脚必须保持已知电平(低电平或高电平) 且不得悬空,如下所述: — 如果使用 USART1 连接自举程序,则检测阶段期间,USART2_RX (PD6)、 CAN2_RX (PB5)、OTG_FS_DM (PA11) 和 OTG_FS_DP (PA12) 引脚必须保持高 电平或低电平,并且不得悬空。 — 如果使用 USART2 连接自举程序,则检测阶段期间,USART1_RX (PA10)、 CAN2_RX (PB5)、OTG_FS_DM (PA11) 和 OTG_FS_DP (PA12) 引脚必须保持高 电平或低电平,并且不得悬空。 — 如果使用 CAN2 连接自举程序,则检测阶段期间,USART1_RX (PA10)、 USART2_RX (PD6)、OTG_FS_DM (PA11) 和 OTG_FS_DP (PA12) 引脚必须保持 高电平或低电平,并且不得悬空。 — 如果使用 DFU 连接自举程序,则检测阶段期间,USART1_RX (PA10)、 USART2_RX (PD6) 和 CAN2_RX (PB5) 引脚必须保持高电平或低电平,并且不得 悬空。 ● 通过以下硬件连接外设: — RS232 串行接口(例如 ST3232 RS232 收发器),使用 USART1 时必须将该接口 直接连接到 USART1_RX (PA10) 和 USART1_TX (PA9) 引脚;使用 USART2 时则 必须直接连接到 USART2_RX (PD6) 和 USART2_TX (PD5) 引脚 — CAN 接口(CAN 收发器),必须将该接口直接连接到 CAN2_RX (PB5) 和 CAN2_TX (PB6) 引脚 — 经认证的 USB 电缆,必须使用此类电缆到连接微控制器(也可使用 ESD 保护电路) USART1_CK、USART1_CTS 和 USART1_RTS 引脚未使用,因此应用程序可将这些引脚 用于其它外设或 GPIO。该注释同样适用于 USART2。 使能 USB 设备后,其所有相关引脚专用于 USB 通信,无法用于其它应用目的。 用户可借助 PC 串行小应用程序,使用 RS232 串行接口分别通过 CTS 线和 DCD 线来控制 BOOT0 和复位引脚。用户必须使用全零调制解调器电缆。STM3210C-EVAL 板提供了实现 此控制功能所需的硬件。相关详细信息,请参见文档:“STM3210C-EVAL 板用户手册”, 可从意法半导体网站获取该手册:http://www.st.com。 5.3 自举程序选择 STM32F105xx 和 STM32F107xx 嵌入式自举程序支持四种外设接口:USART1、USART2、 CAN2 和 DFU (USB)。其中任何一种外设接口都可用于与自举程序进行通信,以及将应用程 序代码下载到内部 Flash。 嵌入式自举程序固件可自动检测要使用的外设接口。在无限循环中,它将检测支持的自举程 序接口上进行的任何通信。 注: 如下文所述,检测阶段期间,此自举程序未使用的外设 RX 引脚必须保持已知电平(低电平 或高电平)且不得悬空。有关详细信息,请参见第 5.2 节:自举程序硬件要求
AN2606STM32F105xx和STM32F107xX器件自举程序要将USART自举程序用于USART1或USART2,可将串行电缆连接到所需接口。自举程序在该接口检测到数据字节0x7F后,自举程序固件立即执行自动波特率序列,然后进入循环,等待发出任何USART自举程序命令。要使用CAN2接口,应将CAN电缆连接到CAN2。自举程序在CAN2_RX引脚(PB5)检测到顿后,自举程序固件将进入CAN循环并开始检查外部时钟频率值,如果HSE为8MHz、14.7456MHz或25MHz,CAN自举程序固件将进入无限循环并等待,直到接收到消息,否则将产生系统复位。在自举程序固件选择序列期间,无论何时将USB电缆插入微控制器的USB接口,自举程序都会进入DFU自举程序循环,等待发出任何DFU自举程序命令。要使用USART或CAN自举程序,必须确保选择阶段没有任何USB电缆连接到USB外设。选择USART或CAN自举程序后,用户可插入一条USB电缆,这并不会影响所选自举程序的执行(会产生系统复位的命令除外)。为自举程序选择一个接口后,所有其它接口都禁止。下图显示了自举程序检测机制。详细信息请参见各外设自举程序的对应部分。S20/119文档ID13801第16版
STM32F105xx 和 STM32F107xx 器件自举程序 AN2606 20/119 文档 ID 13801 第 16 版 要将 USART 自举程序用于 USART1 或 USART2,可将串行电缆连接到所需接口。自举程 序在该接口检测到数据字节 0x7F 后,自举程序固件立即执行自动波特率序列,然后进入循 环,等待发出任何 USART 自举程序命令。 要使用 CAN2 接口,应将 CAN 电缆连接到 CAN2。自举程序在 CAN2_RX 引脚 (PB5) 检测 到帧后,自举程序固件将进入 CAN 循环并开始检查外部时钟频率值,如果 HSE 为 8 MHz、 14.7456 MHz 或 25 MHz,CAN 自举程序固件将进入无限循环并等待,直到接收到消息,否 则将产生系统复位。 在自举程序固件选择序列期间,无论何时将 USB 电缆插入微控制器的 USB 接口,自举程序 都会进入 DFU 自举程序循环,等待发出任何 DFU 自举程序命令。 要使用 USART 或 CAN 自举程序,必须确保选择阶段没有任何 USB 电缆连接到 USB 外 设。选择 USART 或 CAN 自举程序后,用户可插入一条 USB 电缆,这并不会影响所选自举 程序的执行(会产生系统复位的命令除外)。 为自举程序选择一个接口后,所有其它接口都禁止。 下图显示了自举程序检测机制。详细信息请参见各外设自举程序的对应部分