日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32C542開發(fā)(2)----BOOT_SEL設(shè)置

嵌入式單片機MCU開發(fā) ? 來源:嵌入式單片機MCU開發(fā) ? 作者:嵌入式單片機MCU開 ? 2026-06-08 11:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

在實際項目開發(fā)或量產(chǎn)維護中,除了 ST-LINK 下載方式外,很多場景還會使用 USART 串口、USB DFU、SPI 或 FDCAN 等方式進行程序升級。此時 MCU 需要先進入 ST 出廠內(nèi)置的 System Memory Bootloader,才能通過這些接口完成 Flash 燒錄。對于 STM32C5 系列來說,是否使用外部 BOOT0 引腳進入 Bootloader,與 Option Bytes 中的 BOOT_SEL 配置密切相關(guān)。
簡單來說,BOOT_SEL 用于選擇 BOOT0 信號的來源:當 BOOT_SEL 使能外部 BOOT0 引腳時,可以通過拉高 BOOT0 后復(fù)位芯片進入系統(tǒng) Bootloader;當 BOOT_SEL 選擇內(nèi)部 Option Bit 時,則由 Option Bytes 中的 BOOT0 配置決定啟動方式。因此,理解 BOOT_SEL、BOOT0 引腳和 System Memory Bootloader 之間的關(guān)系,對于后續(xù)使用串口或 USB 下載程序非常重要。

需要樣片的可以加群申請:925643491 / 615061293 。

視頻教學(xué)

https://www.bilibili.com/video/BV1zRVD6yEQg/

樣品申請

https://www.wjx.top/vm/OhcKxJk.aspx#

源碼下載

https://download.csdn.net/download/qq_24312945/92952811

硬件準備

首先需要準備一個開發(fā)板,這里我準備的是自己繪制的開發(fā)板,需要的可以進行申請。
主控為STM32C542CCT6
在這里插入圖片描述

參考程序

https://github.com/CoreMaker-lab/STM32C542_SENSOR

https://gitee.com/CoreMaker/STM32C542_SENSOR

概念說明

BOOT_SEL 是 STM32C5 Option Bytes 中的一個啟動配置位,用于選擇 BOOT0 信號的來源。
當 BOOT_SEL = 1 時,BOOT0 信號由外部 BOOT0 引腳決定,也就是傳統(tǒng) STM32 常見的 BOOT0 引腳啟動方式。
當 BOOT_SEL = 0 時,BOOT0 信號由 Option Bytes 中的 BOOT0 option bit 決定,此時外部 BOOT0 引腳不再作為主要啟動選擇依據(jù)。
RM0522 中說明,STM32C5 啟動時會根據(jù) BOOT0 引腳或 BOOT0 option bit,再結(jié)合 BOOT_SEL option bit 和 BOOTADD[31:8] 來選擇啟動地址,啟動區(qū)域可以是用戶 Flash,也可以是 System Memory Bootloader。

在這里插入圖片描述

BOOT_SEL 決定 BOOT0 信號來自哪里;BOOT0 決定是否進入 Bootloader;EMPTY flag 用于空片保護,F(xiàn)lash 為空時自動進入 Bootloader。

在這里插入圖片描述

自舉模式

AN2606在自舉模式部分,該文檔介紹了 STM32C542 的自舉功能和選項.
如果使用 USART1 進入 STM32C542 的 Bootloader,需要連接 PA9 / PA10:
PA9 -> USART1_TX
PA10 -> USART1_RX
串口格式為 8 位數(shù)據(jù)位、偶校驗、1 位停止位。
在這里插入圖片描述

BOOT0設(shè)置

BOOT0可以通過CN2跳線帽進行設(shè)置。
在這里插入圖片描述

配置 BOOT_SEL

通過程序修改 STM32C5 的 BOOT_SEL Option Byte,決定 BOOT0 信號到底來自外部 BOOT0 引腳,還是來自內(nèi)部 BOOT0 Option Bit。
這個函數(shù)的整體流程 如下:

讀取當前 BOOT_SEL 配置
        ↓
判斷是否需要修改
        ↓
等待 Flash 空閑
        ↓
清除錯誤標志
        ↓
解鎖 Flash 和 Option Bytes
        ↓
設(shè)置新的 BOOT_SEL
        ↓
啟動 Option Bytes 編程
        ↓
等待完成并檢查錯誤
        ↓
重新鎖定 Flash 和 Option Bytes
        ↓
系統(tǒng)復(fù)位讓配置生效

Configure_BOOT_SEL代碼。

#include "stm32c5xx_ll_flash.h"
#include < stdio.h >


/*
 * enable = 1:BOOT_SEL = 1,BOOT0 信號來自外部 BOOT0 引腳
 * enable = 0:BOOT_SEL = 0,BOOT0 信號來自內(nèi)部 BOOT0 Option Bit
 */
static void Configure_BOOT_SEL(uint8_t enable)
{
    uint32_t target_boot_sel;
    uint32_t current_boot_sel;

    /*
     * STM32C5:
     * BOOT_SEL = 1: BOOT0 from BOOT0 pin
     * BOOT_SEL = 0: BOOT0 from BOOT0 option bit
     *
     * 當前頭文件里有 LL_FLASH_OB_BOOT0_BOOTPIN,
     * 但沒有 LL_FLASH_OB_BOOT0_BOOT0,所以 BOOT_SEL = 0 直接用 0U。
     */
    target_boot_sel = enable ? LL_FLASH_OB_BOOT0_BOOTPIN : 0U;

    current_boot_sel = LL_FLASH_OB_GetBoot0SourceSelection(FLASH);

    if (current_boot_sel == target_boot_sel)
    {
        printf("BOOT_SEL is already set to the desired value.rn");
        return;
    }

    /* 等待 Flash 空閑 */
    while ((FLASH- >SR & FLASH_SR_BSY) != 0U)
    {
    }

    /*
     * 清除可能存在的 Option Byte 錯誤標志。
     * 如果不清除 OPTCHANGEERR,后面 OPTSTRT 可能無法啟動。
     */
#ifdef FLASH_CCR_CLR_OPTCHANGEERR
    FLASH- >CCR = FLASH_CCR_CLR_OPTCHANGEERR;
#endif

#ifdef FLASH_CCR_CLR_PGSERR
    FLASH- >CCR = FLASH_CCR_CLR_PGSERR;
#endif

#ifdef FLASH_CCR_CLR_WRPERR
    FLASH- >CCR = FLASH_CCR_CLR_WRPERR;
#endif

#ifdef FLASH_CCR_CLR_STRBERR
    FLASH- >CCR = FLASH_CCR_CLR_STRBERR;
#endif

#ifdef FLASH_CCR_CLR_INCERR
    FLASH- >CCR = FLASH_CCR_CLR_INCERR;
#endif

#ifdef FLASH_CCR_CLR_EOP
    FLASH- >CCR = FLASH_CCR_CLR_EOP;
#endif

    /* 解鎖 Flash */
    if (LL_FLASH_IsLocked(FLASH) != 0U)
    {
        LL_FLASH_SetUnlockKey(FLASH, LL_FLASH_KEY1);
        LL_FLASH_SetUnlockKey(FLASH, LL_FLASH_KEY2);
    }

    /* 解鎖 Option Bytes */
    if (LL_FLASH_OB_IsLocked(FLASH) != 0U)
    {
        LL_FLASH_OB_SetUnlockKey(FLASH, LL_FLASH_OB_OPTKEY1);
        LL_FLASH_OB_SetUnlockKey(FLASH, LL_FLASH_OB_OPTKEY2);
    }

    if ((LL_FLASH_IsLocked(FLASH) != 0U) || (LL_FLASH_OB_IsLocked(FLASH) != 0U))
    {
        printf("Error: Failed to unlock FLASH or Option Bytes!rn");
        return;
    }

    /* 設(shè)置 BOOT_SEL */
    LL_FLASH_OB_SetBoot0SourceSelection(FLASH, target_boot_sel);

    /*
     * 啟動 Option Bytes 修改。
     * RM0522 中說明:修改 FLASH_xxx_PRG 后,需要置位 OPTSTRT。
     */
    FLASH- >OPTCR |= FLASH_OPTCR_OPTSTRT;

    /* 等待 Option Bytes 修改完成 */
    while ((FLASH- >SR & FLASH_SR_BSY) != 0U)
    {
    }

    /* 檢查是否發(fā)生 Option Byte 修改錯誤 */
    if ((FLASH- >SR & FLASH_SR_OPTCHANGEERR) != 0U)
    {
        printf("Error: Option Bytes change failed!rn");

#ifdef FLASH_CCR_CLR_OPTCHANGEERR
        FLASH- >CCR = FLASH_CCR_CLR_OPTCHANGEERR;
#endif
    }
    else
    {
        printf("BOOT_SEL configured successfully.rn");
    }

    /* 鎖定 Option Bytes 和 Flash */
    LL_FLASH_OB_Lock(FLASH);
    LL_FLASH_Lock(FLASH);

    /*
     * 修改 Option Bytes 后建議復(fù)位,讓配置重新加載。
     */
    NVIC_SystemReset();
}

然后在 main() 里調(diào)用一次,比如你想設(shè)置成 使用外部 BOOT0 引腳:

Configure_BOOT_SEL(1);

如果你想設(shè)置成 使用內(nèi)部 BOOT0 Option Bit:

Configure_BOOT_SEL(0);

在這里插入圖片描述

查看BOOT_SEL

代碼配置 BOOT_SEL 后,在 STM32CubeProgrammer 中讀取驗證 。
程序中調(diào)用 Configure_BOOT_SEL(1) 后,芯片復(fù)位并重新加載 Option Bytes。隨后使用 STM32CubeProgrammer 連接目標板,進入 Option Bytes → User Configuration 頁面,點擊 Read 讀取當前選項字節(jié)配置,可以看到 BOOT_SEL 已被勾選,說明 BOOT_SEL 已成功配置為 1,即 BOOT0 信號來源為外部 BOOT0 引腳。

在這里插入圖片描述

UART燒錄

將BOOT0接入3V3中。
BOOT0可以通過CN2跳線帽進行設(shè)置。

在這里插入圖片描述

TYPE-C已經(jīng)通過CH340接入到PA9和PA10。

在這里插入圖片描述

在這里插入圖片描述

打開STM32CubeProgrammer,設(shè)置為UART燒錄模式。

  1. 連接方式選擇 UART,表示通過串口方式連接 STM32C5 Bootloader
  2. UART 參數(shù)配置:選擇對應(yīng) COM 口,波特率 115200,偶校驗 Even,8 數(shù)據(jù)位,1 停止位
  3. 目標信息區(qū)域顯示芯片系列為 STM32C53x/542,說明已經(jīng)通過 Bootloader 識別到目標芯片
  4. 左側(cè)內(nèi)存窗口成功讀取 0x08000000 地址內(nèi)容,日志顯示 Data read successfully,說明 UART Bootloader 通信正常

在這里插入圖片描述

USB燒錄

將BOOT0接入3V3中。
BOOT0可以通過CN2跳線帽進行設(shè)置。

在這里插入圖片描述

AN2606 中 USB DFU Bootloader 接口說明。STM32C531xx / C532xx / C542xx 進入 System Memory Bootloader 后支持 USB DFU,USB_DM 使用 PA11,USB_DP 使用 PA12。硬件預(yù)留 USB 接口后,可通過 STM32CubeProgrammer 的 USB 模式進行 DFU 下載。

在這里插入圖片描述

TYPE-C已經(jīng)接入到PA11和PA12。

在這里插入圖片描述
通過 USB DFU 連接 STM32C5 Bootloader。BOOT0 拉高復(fù)位后,STM32CubeProgrammer 選擇 USB 接口,可成功識別 STM32C53x/542 并讀取 Flash 數(shù)據(jù),說明芯片已進入系統(tǒng) Bootloader,USB DFU 通信正常。

在這里插入圖片描述

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關(guān)注

    關(guān)注

    2315

    文章

    11223

    瀏覽量

    375711
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    STM32C542開發(fā)(3)----配置串口打印

    在傳統(tǒng) STM32 開發(fā)中,我們通常會通過 STM32CubeMX 配置 USART,并重定向 printf() 到串口,用于輸出調(diào)試信息。STM32C5 使用新的
    的頭像 發(fā)表于 06-08 11:12 ?416次閱讀
    <b class='flag-5'>STM32C542</b><b class='flag-5'>開發(fā)</b>(3)----配置串口打印

    STM32C552開發(fā)(2)----BOOT_SEL設(shè)置

    內(nèi)置的 System Memory Bootloader,才能通過這些接口完成 Flash 燒錄。對于 STM32C5 系列來說,是否使用外部 BOOT0 引腳進入 Bootloader,與 Option
    的頭像 發(fā)表于 06-08 11:11 ?378次閱讀
    <b class='flag-5'>STM32C</b>552<b class='flag-5'>開發(fā)</b>(<b class='flag-5'>2</b>)----<b class='flag-5'>BOOT_SEL</b><b class='flag-5'>設(shè)置</b>

    STM32C552開發(fā)(1)----點亮LED

    STM32C552 & SENSOR是一款基于STM32C5系列微控制器的評估套件。該微控制器采用了40nm工藝制造,具有更快的FLASH訪問,更高的性能以及更低的功耗。此外,該套件具有豐富
    的頭像 發(fā)表于 06-08 11:08 ?336次閱讀
    <b class='flag-5'>STM32C</b>552<b class='flag-5'>開發(fā)</b>(1)----點亮LED

    STM32C542開發(fā)(1)----點亮LED

    STM32C542 & SENSOR是一款基于STM32C5系列微控制器的評估套件。該微控制器采用了40nm工藝制造,具有更快的FLASH訪問,更高的性能以及更低的功耗。此外,該套件具有豐富
    的頭像 發(fā)表于 06-08 11:06 ?323次閱讀
    <b class='flag-5'>STM32C542</b><b class='flag-5'>開發(fā)</b>(1)----點亮LED

    探索CL2 - 542G緊湊型指示燈:技術(shù)解析與應(yīng)用前景

    探索CL2 - 542G緊湊型指示燈:技術(shù)解析與應(yīng)用前景 在電子工程領(lǐng)域,指示燈作為一種基礎(chǔ)卻至關(guān)重要的設(shè)備,廣泛應(yīng)用于各類控制系統(tǒng)中。今天,我們將深入剖析CL2 - 542G緊湊型指
    的頭像 發(fā)表于 06-04 09:20 ?197次閱讀

    STM32H573 使能 HSLV 引起 I2C4 失效的案例分析

    某客戶使用 STM32H573II 開發(fā)一款 PLC 產(chǎn)品時反饋 I2C4 無法通信,在上一款產(chǎn)品中也是使用的 I2C4 接口,通信卻是正常的,客戶對此感到非常困惑,百思不得其解。進一
    發(fā)表于 04-15 15:57 ?0次下載

    LAT1618_STM32H573 使能 HSLV 引起 I2C4 失效的案例分析

    某客戶使用 STM32H573II 開發(fā)一款 PLC 產(chǎn)品時反饋 I2C4 無法通信,在上一款產(chǎn)品中也是使用的 I2C4 接口,通信卻是正常的,客戶對此感到非常困惑,百思不得其解。進一
    發(fā)表于 03-11 10:41 ?0次下載

    深入解析U-Boot image.c:RK平臺鏡像處理核心邏輯

    在瑞芯微(RK)平臺的嵌入式開發(fā)中,U-Boot作為核心的啟動加載程序,負責完成鏡像解析、校驗、加載等關(guān)鍵流程。而image.c正是U-Boot中處理鏡像(uImage)的核心文件,尤
    的頭像 發(fā)表于 02-24 16:46 ?1985次閱讀
    深入解析U-<b class='flag-5'>Boot</b> image.<b class='flag-5'>c</b>:RK平臺鏡像處理核心邏輯

    【ESP32-C6系列】WT9932C6開發(fā)板規(guī)格書

    本小節(jié)將簡要介紹WT9932C6開發(fā)板。1WT9932C6的實物圖2詳細管腳描述下表列出了開發(fā)板管腳描述,如圖WT9932
    的頭像 發(fā)表于 02-11 18:04 ?540次閱讀
    【ESP32-<b class='flag-5'>C</b>6系列】WT9932<b class='flag-5'>C</b>6<b class='flag-5'>開發(fā)</b>板規(guī)格書

    MTK平臺LK階段mt_boot.c配置:SELINUX_STATUS 2的作用與影響

    在 MTK(聯(lián)發(fā)科)平臺的 Bootloader(以 LK/Little Kernel 為例)中,mt_boot.c是負責 Linux 內(nèi)核啟動邏輯的核心文件,此次代碼變更(新增#define
    的頭像 發(fā)表于 02-03 15:46 ?1071次閱讀
    MTK平臺LK階段mt_<b class='flag-5'>boot.c</b>配置:SELINUX_STATUS <b class='flag-5'>2</b>的作用與影響

    深入解析U-Boot命令處理核心文件:功能、調(diào)試與開發(fā)價值

    在嵌入式系統(tǒng)開發(fā)中,U-Boot 作為主流的引導(dǎo)加載程序,其命令處理、交互邏輯和自動啟動流程是核心功能模塊。本文將圍繞command.c、cli.c和autoboot.
    的頭像 發(fā)表于 02-03 15:44 ?1110次閱讀
    深入解析U-<b class='flag-5'>Boot</b>命令處理核心文件:功能、調(diào)試與<b class='flag-5'>開發(fā)</b>價值

    解析Rockchip平臺U-Boot核心文件:boot_rkimg.c到底做了什么?

    在嵌入式開發(fā)中,U-Boot 作為引導(dǎo)程序的 “中流砥柱”,負責初始化硬件、加載內(nèi)核并啟動系統(tǒng)。對于 Rockchip 平臺的設(shè)備(如常見的開發(fā)板、智能終端),boot_rkimg.c
    的頭像 發(fā)表于 02-03 15:29 ?1096次閱讀
    解析Rockchip平臺U-<b class='flag-5'>Boot</b>核心文件:<b class='flag-5'>boot_rkimg.c</b>到底做了什么?

    TUSB542:USB 3.1 Gen1 5Gbps轉(zhuǎn)接驅(qū)動器的卓越之選

    作為一款專為USB Type - C端口設(shè)計的5Gbps轉(zhuǎn)接驅(qū)動器2:1多路復(fù)用器,在信號處理和傳輸方面展現(xiàn)出了卓越的性能。下面我們就來深入了解一下這款器件。 文件下載: tusb542.pdf 一
    的頭像 發(fā)表于 12-19 15:45 ?1177次閱讀

    STM32C0116-DK探索套件開發(fā)指南與技術(shù)解析

    基于STM32C011F6微控制器的UFQFPN20至DIL20模塊,使用戶能夠開發(fā)和共享應(yīng)用。該器件還包含一個板載ST-LINK/V2-1,以調(diào)試和編程設(shè)定嵌入式STM32微控制器。
    的頭像 發(fā)表于 10-27 14:57 ?996次閱讀
    <b class='flag-5'>STM32C</b>0116-DK探索套件<b class='flag-5'>開發(fā)</b>指南與技術(shù)解析

    ?TUSB542 USB Type-C? 5Gbps Redriver 2:1 MUX 技術(shù)文檔總結(jié)

    Type-C 可翻轉(zhuǎn)連接器的 USB SS 信號。TUSB542可以通過外部配置通道邏輯控制器通過SEL引腳進行控制,以正確多路復(fù)用信號。
    的頭像 發(fā)表于 08-10 10:04 ?2121次閱讀
    ?TUSB<b class='flag-5'>542</b> USB Type-<b class='flag-5'>C</b>? 5Gbps Redriver <b class='flag-5'>2</b>:1 MUX 技術(shù)文檔總結(jié)
    塔河县| 西贡区| 商城县| 郓城县| 清水县| 呼图壁县| 巴彦淖尔市| 黄浦区| 依兰县| 察雅县| 米泉市| 灵宝市| 筠连县| 正安县| 丹凤县| 晋宁县| 凤翔县| 普兰县| 永靖县| 迁西县| 渝中区| 澄江县| 万载县| 富平县| 汕头市| 定西市| 阜阳市| 康定县| 南陵县| 衡南县| 赤水市| 西乌| 搜索| 高雄县| 晋江市| 确山县| 敦化市| 普兰县| 章丘市| 新营市| 阜宁县|