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
    +关注

    关注

    2240

    文章

    10674

    浏览量

    348806
收藏 人收藏

    评论

    相关推荐

    现在多数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

    stm32 g系列和f系列的区别

    stm32 g系列和f系列的区别 STM32 G系列和F系列都属于STMicroelectron
    的头像 发表于 12-07 14:46 4784次阅读

    STM8S配置字节OPTION BYTE

    STM8S的配置字类似于AVR的Fuse熔丝位。用于配置端口的复用功能和读保护等操作。不同于AVR的熔丝位,STM8S的时钟配置并不在Option Byte中,不会出现写完STM8S后芯片直接锁死
    发表于 10-10 06:07

    STM8S的配置字节Option Byte

    电子发烧友网站提供《STM8S的配置字节Option Byte.pdf》资料免费下载
    发表于 10-07 16:12 0次下载
    STM8S的配置字节<b class='flag-5'>Option</b> <b class='flag-5'>Byte</b>

    STM32G4 应用程序与 Option Bytes 同时烧录问题

    STM32G4 应用程序与 Option Bytes 同时烧录问题
    的头像 发表于 09-28 18:02 645次阅读
    <b class='flag-5'>STM32</b>G4 应用程序与 <b class='flag-5'>Option</b> Bytes 同时烧录问题

    STM32F0系列MCU硬件电路boot设计

    Boot配置的作用是用于选择芯片上电后从何处读取可执行代码运行,STM32F0系列MCU可以从Main flash memory、System memory、Embedded SRAM三个地方
    的头像 发表于 09-27 14:21 1558次阅读
    <b class='flag-5'>STM32</b>F0<b class='flag-5'>系列</b>MCU硬件电路<b class='flag-5'>boot</b>设计

    STM32G可以替代STM32F吗?需要考虑哪些因素?

    STM32G可以替代STM32F吗,需要考虑哪些因素
    发表于 09-21 07:50

    如何使用STM32G4系列微控制器存储器和外围设备

    和电气设备特性,请参阅相应的数据表。 有关Arm®Cortex®-M4核心的信息,请参阅Cortex®M4技术参考手册 STM32G4系列微控制器采用ST最先进的专利技术
    发表于 09-08 06:59

    stm32cubemx如何与visual studio2022一起开发stm32f单片机?

    stm32cubemx怎么和visual studio2022一起开发stm32f单片机?
    发表于 08-07 08:25

    STM32F永磁同步电机单双FOC SDK v4.2

    STM32F PMSM singledual FOC SDK v4.2
    发表于 07-19 17:03 4次下载