0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

学技术 | STM32F系列向G系列切换应用总结—Boot mode及Option byte

大大通 2022-12-19 15:31 次阅读

很多客户在使用STM32G系列替代STM32F系列时,我们经常会收到客户反馈如果使用串口下载程序?如何修改boot模式?如何将特殊IO复用成通用IO?等等问题;这是由于STM32G系列相对于STM32F系列Boot mode、Option byte发生了一些变化,本文会针对于此类问题做详细的使用讲解。

一. STM32G系列Boot mode

1.1 STM32F系列与G系列Boot mode对比

86d26a5e-7e66-11ed-b116-dac502259ad0.png

STM32F系列通用型及部分高性能(F0、F1、F2、F3、F4)MCU是通过外部Boot Pin来的IO输入状态来配置系统的启动方式,并在MCU上电后的第四个时钟周期锁存Boot Pin状态,启动方式分为三种1.Main Flash Mmemory启动,从Flash存储启动,将0x08000000地址加载应用程序;2.System Memory启动,System Memory存储是系统的自举程序,无法篡改;3.Embedded SRAM启动,当设备从SRAM引导时,在应用程序初始化代码中,必须使用NVIC异常表和偏移寄存器重新定位SRAM中的矢量表。

86ee3acc-7e66-11ed-b116-dac502259ad0.png

相对于STM32F系列来说,G系列在Boot modes方面最大的改变是增加Option byte与 Boot0 Pin混合配置,启动方式与F系列大致相同。

1.2 STM32G系列BOOT mode变换操作

本次操作流程硬件使用NUCLEO-G431RB开发板为例,软件使用STM32CubePrg。

STM32G431RBT6默认启动是以上图中的第三种方式,即使用Option byte配置,将nBOOT0位配置为1,使用ST-Link连接,打开Option byte->User Configuration,如下图:

870f7a8e-7e66-11ed-b116-dac502259ad0.png

此时我们可以通过修改Option byte,来改变系统的启动方式,比如从串口更新程序,需要将系统设置成System Memory启动,运行自举程序,使用图1.2的第七种配置方式,将nBOOT0位置0,nBOOT1位置1,nSWBOOT0位置0,并点击Apply,系统复位之后即从System Memory启动。

872f639e-7e66-11ed-b116-dac502259ad0.png

1.3 ST-Link无法连接恢复操作

一些客户在使用STM32G系列MCU过程中,会出现程序上电后立马处于低功耗或者SWD接口被复用成IO的情况下,ST-Link会无法连接至MCU,导致无法擦除更新程序,在这种情况下可以通过SRAM启动,然后擦除FALSH应用程序;

如果在应用中会有低功耗模式及SWD接口复用IO的情况下,建议客户的启动方式采用图1.2中第二种方式,将外部BOOT0 Pin拉低,nSWBOOT0位置1;当在软件调试过程中出现以上情况时,可以外部直接将BOOT0拉高,使用SRAM启动后擦除异常程序。

二. STM32G系列Option byte

2.1 STM32G431RB Option byte描述

Option byte是由最终用户根据应用程序要求进行配置,一共是用4 bytes与8 bytes补充构成,通过配置FLASH_OPTR、FLASH_PCROP1SR、FLASH_PCROP1ER、FLASH_WRP1AR寄存器,可以完成软件修改option byte;同时可以使用STM32CubePro修改option byte。

FLASH_OPTR寄存器可以进行系统RDP level配置、系统复位相关配置如系统复位电压级别、nRST引脚模式、低功耗复位、开门狗复位等;

FLASH_PCROP1SR寄存器用于配置PCROP起始地址;

FLASH_PCROP1ER寄存器用于配置PCROP结束地址;(PCROP区域只能用于CPU取值,Debug、CPU取数据、DMA功能全部禁止)

FLASH_WRP1AR寄存器用于配置写保护A区域的起始地址和结束地址;

FLASH_WRP1BR寄存器用于配置写保护B区域的起始地址和结束地址;(写保护允许有两个非连续区域,写保护区域无法进行mass erase和下载程序)

FLASH_SEC1R寄存器用于配置用户代码安全区域,起始地址是0x0800 0000及LOCK_B00T位配置;

所有的寄存器操作完成后,可以将FLASH_CR寄存器OBL_LAUNCH( Force the option byte loading)位置1,即可对所有的配置立即生效,否则需要系统复位才能生效;

所有的寄存器配置详细可查阅参考手册RM0440.

2.2 软件修改Option byte流程

当需要使用软件修改Option bytes时,建议使用以下步骤:

检查FLASH_SR寄存器的BSY位,当BSY为0时,表示没有其他正在进行的闪存操作,否则需要等待;

解锁FLASH_CR寄存器,向FLASH_KEYR寄存器写入KEY值;

解锁FLASH_OPTR寄存器,向FLASH_ OPTKEYR寄存器写入KEY值;

将FLASH_CR寄存器OPTSTRT置1,表示开始修改Option byte;

修改需要使用的选项字节;

检查FLASH_SR寄存器的BSY位,当BSY为0时,表示修改完成;

如果需要对选项字节立即生效,将FLASH_CR寄存器OBL_LAUNCH位置1,否则需要复位后才能生效;

锁住FLASH_OPTR寄存器;

锁住FLASH_CR寄存器;

断电、上电系统复位,Option bytes修改生效。

2.3 STM32CubePro修改Option byte流程

STM32CubePro可以通过使用ST-Link或者在系统存储运行下连接至MCU,打开菜单栏中的Option bytes,修改需要的内容,并点击Apply,点击Apply后修改的Option bytes会立即生效。

875a0f68-7e66-11ed-b116-dac502259ad0.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2266

    文章

    10872

    浏览量

    354826
收藏 人收藏

    评论

    相关推荐

    【GD32 MCU 移植教程】9、从 STM32F10x 系列移植到 GD32F30x 系列

    GD32F30x 系列 MCU 是基于 Arm® Cortex®-M4 处理器的 32 位通用微控制器,与 STM32F10x 系列 MCU 保持高度兼容。本文主要从以下三个方面进行介
    的头像 发表于 09-07 09:57 521次阅读
    【GD32 MCU 移植教程】9、从 <b class='flag-5'>STM32F</b>10x <b class='flag-5'>系列</b>移植到 GD32<b class='flag-5'>F</b>30x <b class='flag-5'>系列</b>

    stm32h系列f系列区别是什么

    STM32是意法半导体(STMicroelectronics)推出的一系列32位微控制器,广泛应用于嵌入式系统和物联网设备中。STM32H系列ST
    的头像 发表于 09-04 09:13 1351次阅读

    stm32读取boot引脚状态

    STM32微控制器中,Boot引脚(通常指的是BOOT0和BOOT1引脚)的状态决定了设备启动时的引导模式。这些引脚的状态在复位时被读取,并据此选择启动哪块存储器。比如,
    的头像 发表于 08-22 09:48 1108次阅读

    STM32引脚中的BOOT1在哪里

    STM32是STMicroelectronics(意法半导体)推出的一系列32位微控制器,广泛应用于嵌入式系统设计。关于STM32BOOT1引脚,它主要与系统的启动模式有关。
    的头像 发表于 08-22 09:43 1493次阅读

    stm32boot0和boot1对应哪个p引脚

    STM32系列微控制器是一种广泛应用于嵌入式系统领域的32位微控制器。在STM32系列微控制器中,BOOT0和
    的头像 发表于 08-22 09:40 2398次阅读

    STM32F40xxx、STM32F41xxx、STM32F42xxx、STM32F43xxx中文手册

    STM32F4系列单片机中文手册
    发表于 08-08 14:32 2次下载

    请问STM32F中空闲线及地址标记唤醒功能怎么实现的?

    STM32F中空闲线及地址标记唤醒功能怎么实现的? 越细越好
    发表于 05-11 08:10

    现在多数STM32F系列芯片都被解密了,唯一ID只能读取不能被修改是吗?

    现在多数STM32F系列芯片都被解密了。唯一ID 只能读取不能被修改是吗?
    发表于 04-11 06:18

    请问STM32G070的boot mode怎么选的?

    手册上写了三个boot mode,但boot引脚只有一个,这个怎么选的?
    发表于 04-09 06:33

    求助,关于STM32F3系列启动时SWD的配置问题求解

    |= SWJ_Mode; ////} 这样可以通过SWDJ的模式切换来释放SWD模式外的3个IO脚 但在STM32F373中,没有AFIO_MAPR这个寄存器,GPIO的复位是通过模式寄存器设置。 如果我在时钟
    发表于 04-09 06:12

    stm32f4读保护等级降级的时候,flash中的option byte会被擦除吗?

    stm32f4里面,当保护等级从1变为0的时候,会有mass erase,这个mass erase 会擦除option byte 或者OTP吗?
    发表于 04-02 07:09

    STM32G可以替代STM32F吗?

    STM32G可以替代STM32F吗,如果不可以,为什么
    发表于 03-28 09:06

    STM32F芯片标识上圆圈里有e3/e4是什么意思?

    STM32F芯片上标识(marking)上圆圈里有e3e4,是什么意思?
    发表于 03-22 07:56

    ARM系列STM32F103芯片的解密方法

    本文介绍ARM系列STM32F103芯片的解密方法,其内核是Cortex-M3,内存从16K-512K都有。
    发表于 02-28 11:20 1584次阅读

    stm32 g系列f系列的区别

    stm32 g系列f系列的区别 STM32 G
    的头像 发表于 12-07 14:46 1w次阅读