1.引言
STM32 MCU 在 bootloader 模式下,可以通過(guò)多種可用外設(shè)(USART、CAN、USB、I2C、SPI等)將程序下載到內(nèi)部存儲(chǔ)器中,詳細(xì)內(nèi)容可參考應(yīng)用筆記 AN2606《STM32 microcontroller system memory boot mode》。本文檔主要介紹利用 STLINK-V3SET 調(diào)試/編程工具的 I2C 接口將程序下載到 SDRAM 中并執(zhí)行的方法。
2.問(wèn)題描述
問(wèn)題源自客戶的實(shí)際需求,希望通過(guò) I2C 接口將程序下載到 SRAM 中執(zhí)行,進(jìn)行芯片功能性測(cè)試。
3.問(wèn)題分析與定位
關(guān)于在 Bootloader 模式下的應(yīng)用程序下載,有多篇 LAT 可參考。例如《如何使用STM32NUCLEO 板來(lái)測(cè)試串口 Bootloader》、《一種在 IAR 中實(shí)現(xiàn)通過(guò) SRAM 應(yīng)用程序跳轉(zhuǎn)到bootloader 的方法》等。應(yīng)用程序下載到 SRAM 中,也有 LAT 可參考,如《一種在 IAR 中實(shí)現(xiàn)通過(guò)將程序在 SRAM 中調(diào)試的方法 》。通過(guò)調(diào)研,STLINK-V3SET 支持 I2C Bootloader 程序下載,可以實(shí)現(xiàn)在 bootloader 模式下的將應(yīng)用程序下載到 SRAM 中。
4.問(wèn)題解決
本文檔以 NUCLEO-F401RE 開(kāi)發(fā)板為例進(jìn)行介紹。本文檔介紹方法分為 3 個(gè)步驟,首先進(jìn)行硬件配置與接線,使得 STM32F401RE 與 STLINK-V3SET 通過(guò) I2C 相連,同時(shí)保證 STM32F401RE 復(fù)位后可進(jìn)入 bootloader 模式;其次進(jìn)行軟件配置與編程,通過(guò) IAR 可以將程序下載到 SRAM 中;最后通過(guò) STM32CubeProgrammer 軟件進(jìn)行程序下載并運(yùn)行。下邊按三個(gè)步驟分別介紹。
4.1 硬件配置與接線
查看 AN2606 可知,通過(guò) Boot0,Boot1 的硬件設(shè)置(Boot0 = 1,Boot1 = 0),可使 NUCLEO板上電復(fù)位后進(jìn)入 bootloader 模式。STM32F401RE 的 I2C1, I2C2, I2C3 均支持 bootloader,這里選取 I2C1 接口實(shí)現(xiàn)在 bootloader 模式下的程序下載功能。
關(guān)于 STLINK-V3SET 與 SRM32F401RE 之間的 I2C 連接,STLINK-V3SET 模塊上已提供 680 歐姆上拉電阻,已通過(guò)閉合 JP10 跳線激活。同時(shí)還需要通過(guò) NUCLEO 板為 STLINK-V3SET 提供 3.3V 供電。參考 AN2606 中 I2C 接線方式,兩者的引腳接線如下表所示:
最后,用一根 USB Type A 轉(zhuǎn) Micro B 的線連接 STLINK-V3SET 和 PC,同樣通過(guò)調(diào)試線給STM32 NUCLEO-F401RE 供電。
4.2 通過(guò) IAR 將程序下載到 SRAM 中
參考另一篇實(shí)戰(zhàn)經(jīng)驗(yàn):《一種在 IAR 中實(shí)現(xiàn)通過(guò)將程序在 SRAM 中調(diào)試的方法》,主要操作為以下 2 點(diǎn)。
(1)在工程的鏈接選項(xiàng)中選擇 stm32f411xe_sram.icf 。
(2)設(shè)置一下中斷向量表的位置 :
4.3 通過(guò) STM32CubeProgrammer 將程序下載到 SRAM 中并運(yùn)行
由于 bootloader 使用了一部分 SRAM 程序,需要修改下地址避免沖突。參考另一篇實(shí)戰(zhàn)經(jīng)驗(yàn):《一種在 IAR 中實(shí)現(xiàn)從在 SRAM 運(yùn)行的應(yīng)用程序跳轉(zhuǎn)到 bootloader 的方法》,對(duì)于 SRAM 中 bootloader 區(qū)域,我們從關(guān)于 bootloader 的應(yīng)用筆記可以看到以下信息 :
從紅色部分我們可以看到 bootloader 使用了一部分內(nèi)部 SRAM,因此我們需要在stm32f411xe_sram.icf 中修改代碼運(yùn)行的起始地址來(lái)避免與 Bootloader 運(yùn)行時(shí)的沖突:
同時(shí),需要修改下中斷向量表的偏移量:
在應(yīng)用中我們寫(xiě)入以下程序 ,每隔 1s 閃爍 LED 燈。
最后,通過(guò) STM32CubeProgrammer 進(jìn)行程序下載。打開(kāi) STM32CubeProgrammer(版本 2.6),在 Serial number 選擇 STLINK-V3SET,相關(guān)配置如圖所示。端口選擇 I2C,波特率設(shè)為 400KHz,地址設(shè)為 0x39(地址為 7 位,例如 STM32F401RE I2C1 地址為 0b0111001x,則 I2C 設(shè)置的地址為 0b0111001,即 0x39,不同系列 MCU 地址可能不同,請(qǐng)查看 AN2606)。
點(diǎn)擊 Connect 后,如果連接成功,如圖所示。
點(diǎn)擊 Erasing & Programming,加載 Hex 文件,勾選 Verify programming 和 Run after programming,如下圖所示。點(diǎn)擊 Start Programming,開(kāi)始程序下載。程序下載成功后,可以看到 LED2 以 1Hz 頻率閃爍,同時(shí) STM32CubeProgrammer 斷開(kāi)連接。若要重新連接,需要按 NUCLEO 板上的復(fù)位鍵,使得 MCU 進(jìn)入 bootloader 模式。
小結(jié)
利用 STLINK-V3SET,通過(guò) STM32CubeProgrammer 軟件的 I2C 接口下載程序生成的 HEX 文件后,我們可以看到程序下載到 SRAM 運(yùn)行之后,LED 燈每隔 1s 閃爍 1 次,應(yīng)用程序下載成功。
原文標(biāo)題:工程師筆記|通過(guò) STLINK-V3SET I2C 接口將程序下載到 SRAM 中并執(zhí)行的方法
文章出處:【微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
審核編輯:湯梓紅
-
sram
+關(guān)注
關(guān)注
6文章
768瀏覽量
114695 -
STM32
+關(guān)注
關(guān)注
2270文章
10901瀏覽量
356189 -
I2C
+關(guān)注
關(guān)注
28文章
1488瀏覽量
123829 -
應(yīng)用程序
+關(guān)注
關(guān)注
37文章
3271瀏覽量
57723 -
bootloader
+關(guān)注
關(guān)注
2文章
235瀏覽量
45636
原文標(biāo)題:工程師筆記|通過(guò) STLINK-V3SET I2C 接口將程序下載到 SRAM 中并執(zhí)行的方法
文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論