国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

STM32F745 USART1 Bootloader失敗原因分析與解決

發(fā)布者:pi26最新更新時間:2024-09-13 來源: elecfans關鍵字:USART1  Bootloader 手機看文章 掃描二維碼
隨時隨地手機看文章

1. 概述

STM32 的 Bootloader 可以支持多種協(xié)議的,比如 USART,I2C,DFU 等等,USARTBootloader 是客戶使用 STM32 的時候常常會用到的協(xié)議。客戶在使用 STM32F745 進行產品開發(fā)的時候,出現(xiàn)了使用 STM32CubeProgramer 無法通過 USART1 Bootloader 進行程序升級的問題。為了解決客戶的問題,我在 NUCLEO-F746ZG 開發(fā)板上,復現(xiàn)了同樣的現(xiàn)象,本文針對這個現(xiàn)象,分析了該問題的原因和解決方法,作為一個記錄。


2. 問題分析

STM32F745/6 USART1 Bootloader 使用的 TX 和 RX 分別是 PA9 和 PA10。而NUCLEO-F746ZG 開發(fā)板,默認情況下,板子上的 PA9 和 PA10 被用作 USB Vbus 和USB ID, 需要斷開板子上的 SB127 和 SB125 才能讓 PA9 和 PA10 被 USART1 使用。使用 STM32CubeProgrammer 下載工具,通過 USB-Serial 轉接板連上 NUCLEOF746ZG,如圖 1 所示,選擇 USART 協(xié)議,選擇對應的 USART1 端口,其它參數(shù)選用默認配置,然后連接 NUCLEO 開發(fā)板,結果出現(xiàn)連接失敗。對照著 UM1974,檢查連線沒有問題,確認了 BOOT 腳為高電平,MCU 也進入Bootloader 模式,同時參考 AN2606,確認 STM32F475/6 支持 USART1 Bootloader。測試 USART3 Bootloader,STM32CubeProgrammer 可以正常連接。

93cb91b2-9267-11ed-bfe3-dac502259ad0.png

參考 AN3155 了解 UART Bootloader 的工作流程如圖 2,果斷使用串口終端,比較USART1 Bootloader 和 USART3 Bootloader 響應上位機的命令有何區(qū)別。

93f3495a-9267-11ed-bfe3-dac502259ad0.png

使用串口終端工具,分別連接 USART1,USART3,發(fā)送對應的 UART Bootloader 命令,得到下圖 3 的命令交互。

圖3.USART1 Bootloader Command Interaction

940207ba-9267-11ed-bfe3-dac502259ad0.png

通過圖 3 的命令交互可以看出,當 USART1 Bootloader 收到 7F 命令的時候,返回的值是 FF 79,正常的情況下,應該返回 79。命令 7F 的作用是選擇對應的 USART Bootloader,返回 79 表示 MCU 正確的進入了 USART Bootloader 工作模式,在 USART1 Bootloader 中,STM32CubeProgrammer 發(fā)送 7F 命令收到的返回值是 FF 79,所以STM32CubeProgrammer 認為此時 MCU 沒有正確的進入 USART Bootloader 模式,因此連不上目標板。

顯然,這個多余的 FF 不應該是 Bootloader 發(fā)出來的,通過示波器,觀察 USART1TX 的 PA9 發(fā)現(xiàn),復位芯片之后,PA9 為低電平,而根據(jù)參考手冊,當 USART1 使能之后,此時 USART TX 應該為高電平才正常,所以懷疑這個異常現(xiàn)象是 USART1 產生了錯誤的數(shù)據(jù)導致的。

針對這種現(xiàn)象,在 PA9 外部上拉,再進行測試,USART1 Bootloader 工作正常。

3. 問題解決

根據(jù)上面的分析,USART1 TX 沒有上拉導致了 USART1 Bootloader 無法正常工作,但通常情況下,我們使用 USART 的時候,TX,RX 是無需外加上拉的,為什么STM32F745/6 的 USART1 需要上拉,而 USART3 無需上拉呢?帶著這個問題,仔細閱讀了相關文檔,最終再 AN2606 V5.1(之前版本沒有注明)版本中,發(fā)現(xiàn)了這個區(qū)別,正是這個區(qū)別導致了這個問題。

941617f0-9267-11ed-bfe3-dac502259ad0.png

4.總結

通過分析和解決這個問題,可見及時更新并仔細閱讀相關文檔是很重要的事情。針對這個問題,如果仔細閱讀了最新的 AN2606,就能很快定位產生問題的原因。當然,通過逐步分析這個問題,也進一步加深了對 Bootloader 的理解。


關鍵字:USART1  Bootloader 引用地址:STM32F745 USART1 Bootloader失敗原因分析與解決

上一篇:都是32位MCU,ESP32、GD32、STM32有什么區(qū)別
下一篇:STM32使用片內外設DFSDM的應用問題

推薦閱讀最新更新時間:2025-06-12 10:06

STM32F4 USART1 TX RX FIFO
USART1 TX RX FIFO /* ********************************************************************************************************* * * 模塊名稱 : 串口驅動模塊 * 文件名稱 : bsp_uart.c * 版 本 : V1.0 * 說 明 : 實現(xiàn)printf和scanf函數(shù)重定向到串口1,即支持printf信息到USART1 * 實現(xiàn)重定向,只需要添加2個函數(shù): * int fputc(int ch, FILE *f); * int fgetc(FILE
[單片機]
二、編寫 s3c24x0 的 bootloader——SDRAM 設置
2.1 介紹 2.1.1 硬件 在對時鐘頻率進行初始化之后,就可以使用存儲器控制器對 SDRAM 進行初始化了。 可以看看存儲器控制器的映射表:    由圖上可以看出,S3C2440 可以接兩個 SDRAM,一個起始地址是 0x30000000,一個是 0x38000000,分別由片選信號 nGCS6 和 nGCS7 控制。 查看原理圖上的 SDRAM 控制電路:    使用的是 nGCS6,那么 SDRAM 的地址就是 0x30000000 2.1.2 寄存器 存儲器控制器涉及到的寄存器很多,具體看芯片手冊。 2.2 代碼編寫 start.S 代碼中: 1 /** 5. 初始化 SDRAM */ 2 mov i
[單片機]
二、編寫 s3c24x0 的 <font color='red'>bootloader</font>——SDRAM 設置
mc9s08dz60添加BootLoader實現(xiàn)CANboot下載更新功能
為了以后項目升級方便的需要,在原始程序添加CanBoot下載功能; 1、 把Bootloader安排在高地址區(qū)間 (比如0xEE00~0xFFAF),然后固化NVC寄存器的值,將這塊Flash區(qū)域保護起來; 2、中斷向量的搬移,將原來0xFFC0所對應的中斷向量搬移到0xEDC0; Bootloader的代碼無非就是啟動、查找用戶程序入口,跳轉至用戶程序,從用戶程序跳轉至bootloader,與上位機通信(UART或者CAN),擦除Flash,寫入Flash等功能; 具體操作就是修改兩部分; 1、修改Project.prm文件,重新劃分分區(qū)。我劃分的分區(qū)如下所示: SEGMENTS /* Here all RAM/RO
[單片機]
avr bootloader學習
Spm操作步驟: 1.檢查SPM 操作是否已經完成 2.保存狀態(tài)寄存器,關中斷 3.檢查當前是否有EEPROM寫操作 4.執(zhí)行SPM 5.恢復狀態(tài)寄存器,開中斷. FLASH自編程過程: 1.頁擦除 2.全能RWW區(qū) 3.把數(shù)據(jù)從RAM移到時FLASH緩沖區(qū) 4.頁寫 5.重新使能RWW區(qū) 6.從FLASH讀回數(shù)據(jù),比較檢查寫入是否正確(此步驟為可選操作) 7.檢查RWW區(qū)可以安全讀取,函數(shù)返回.
[單片機]
基于TCP的STM32 IAP bootloader初步設計
最近研究了下IAP bootloader的實現(xiàn)方法,這在產品設計中是非常有用的。所謂IAP就是在線應用編程,可以用于遠程程序升級。比如我們設計了一個產品,使用較為復雜的工藝被封裝在精美的外殼中,或者被用于偏遠的場景,如果在使用過程中需要修改程序,使用燒寫器燒寫是非常麻煩的,費時費力。真正的工業(yè)產品幾乎都會有自己的bootloader。 其實,實現(xiàn)自己的bootloader在原理上并不復雜,就是通過MCU的接口把外部新的程序文件燒寫到其內部的flash中,然后去運行新程序。以前怎么也沒想過如何在同一個flash里面運行毫無關系的兩個程序,bootloader就可以實現(xiàn)。其核心跳轉代碼就只有三行: app_pro
[單片機]
ARM裸機開發(fā)bootloader內部看ARM
一、嵌入式大匯總 1、芯片:s3c2440、s3c6410、s5pv210 2、ARM核:A8、ARM9、ARM11 3、指令架構:armv7、armv6 2440使用的是arm9的核,內核使用的是armv4的指令架構; 6410使用的是arm11的核,內核使用的是armv6的指令架構; 210使用的是A8的核,內核使用的是armv7的指令架構。 arm11 cortexA5 A8 A9 arm9 cortexR4 arm7 cortexM0 M1M3 M4 ARM經典 cortexM cortexR cortexA CortexM主要用于工業(yè)控制領域,不能安裝操作系統(tǒng); CortexR用于實用控制; Cor
[單片機]
基于PIC18單片機的新穎Bootloader設計
Bootloader是操作系統(tǒng)在內核運行之前運行的一段小程序,其功能主要是完成軟硬件設備初始化,建立內存空間映射,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),或者加載操作系統(tǒng)映像文件實現(xiàn)系統(tǒng)軟件升級,以便為最終調用操作系統(tǒng)內核準備好正確的環(huán)境。通常,BootLoader是嚴重地依賴于硬件而實現(xiàn)的,特別是在嵌入式世界。因此,在嵌入式世界里建立一個通用的BootLoader幾乎是不可能的。   針對PIC18系列單片機,目前市面上僅存在HI-TECH公司提供的Bootloader程序,并且需要借助串口調試助手。本文基于Microchip公司的MPLAB軟件開發(fā)環(huán)境設計了一種新穎的Bootloader,并配套編寫了PC機端上位機界面
[單片機]
基于PIC18單片機的新穎<font color='red'>Bootloader</font>設計
小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved