很多客戶在使用STM32G系列替代STM32F系列時,我們經常會收到客戶反饋如果使用串口下載程序?如何修改boot模式?如何將特殊IO復用成通用IO?等等問題;這是由于STM32G系列相對于STM32F系列Boot mode、Option byte發生了一些變化,本文會針對于此類問題做詳細的使用講解。
一. STM32G系列Boot mode
1.1 STM32F系列與G系列Boot mode對比
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中的矢量表。
相對于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,如下圖:
此時我們可以通過修改Option byte,來改變系統的啟動方式,比如從串口更新程序,需要將系統設置成System Memory啟動,運行自舉程序,使用圖1.2的第七種配置方式,將nBOOT0位置0,nBOOT1位置1,nSWBOOT0位置0,并點擊Apply,系統復位之后即從System Memory啟動。
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會立即生效。
-
STM32
+關注
關注
2270文章
10906瀏覽量
356530
發布評論請先 登錄
相關推薦
評論