STM32H5 的 PB14 引腳被意外拉低的問題解析 LAT1542

關鍵字:STM32H5, GPIO

1. 問題現象

客戶反饋,使用 STM32H523RET6 應用中配置了兩個 IO 口,PC9 為輸出模式,內部下拉;PB14 為輸入模式,內部上拉。在程序中將 PC9 引腳輸出高電平,結果觀察到 PB14 的電平被拉低。

圖 1 PC9 輸出低時, PB14 為高

圖 2 PC9 輸出高時,PB14 被拉低

2. 問題重現

使用 NUCLEO-H533RE 板,新建一個 cubemx 工程(cubemx 版本 : v6.13.0),按客戶問題所述配置 PC9 和 PB14, 然后在代碼中驅動 PC9 輸出高,結果很容易就重現了問題。

3. 問題分析

一般來說,在 ST 官方 DEMO 板上很容易重現,就意味著問題能很快解決或者很可能是芯片就是如此設計的。于是查找相關文檔,注意到 PC9 可復用為 UCPD1_DBCC2 引腳,而 PB14則可復用為 UCPD1_CC2 引腳。STM32H5 默認時 UCPD 外設的 DB(Dead Battery)功能是激活的,而這個 DB 特性剛好會影響正常的 GPIO 功能,這個在 AN2552 Rev7 文檔中的第11.3.1 節有相關描述 :

在 DBCCx 引腳(PC9)上檢測到電壓超過 1V 時,則芯片內的 Rd 電阻激活,進而將 CCx 引腳(PB14)拉低。

也許有人會問,我啥也沒做啊,我也沒用到 UCPD 外設,我的電路圖也根本不是圖上這么設計的,芯片怎么會這樣?

這就得回到 USB Type-C 接口的 PD 功能來說了。USB Type-C 口大體上來說數據可分為三個通路:USB3.x 數據通路,USB2.0 數據通路,以及走 CC 線的 PD 協議,當然還有 VBUS 上的電力供應。

CC 線上的 PD 協議正是用于 SOURCE 端和 SINK 端之間進行電力協商的,經典的應用場合就是 SOURCE 端比如手機充電適配器向帶電池的 SINK 端(比如手機)充電,用多大功率,多少電壓,最大電流多少,這個就得協商,協商的過程是通過 300K 的 CC 線來進行的。

圖 3 USB Type-C 口的 CC 線連接

STM32H5 是帶 UCPD 外設,全稱 USB Type-C?/USB Power Delivery interface. 是專門
用于 CC 線上的 PD 協議通信的外設。

如上圖所示,SOURCE 端通過檢測 SINK 端的 Rd 電阻來判斷是否有 SINK 設備連接,只有檢測到這個連接,在 USB Type-C 口上的 VBUS 才會供電過去,否則不會有電供應。這就涉及到一個問題,若 SINK 端是電池設備,且電池耗盡(Dead Battery)時,SOURCE 端還能正常供電嗎?

這里存在一個關鍵邏輯點:當 SINK 端電池耗盡時,SOURCE 端是否仍能檢測到 Rd 電阻?進一步說,假設 SINK 端的 PD 芯片為 STM32,在其未上電前,CC 引腳(PB14)必須對外呈現 Rd 下拉電阻特性——這是 UCPD 協議中 DB(Dead Battery)功能的核心要求。

若 CC 引腳未表現出 Rd 電阻,SOURCE 端會認為 SINK 端不具備受電條件,從而不會通過VBUS 供電。而沒有 VBUS 供電,STM32 就無法上電運行,形成 “無電-無法上電-無法反饋” 的死循環。因此,STM32H5 芯片默認激活 DB 功能,正是為了確保在未上電狀態下,CC 引腳通過內部下拉電阻滿足 SOURCE 端的檢測要求,從而觸發 VBUS 供電流程。

知道了原因,那么解決方法就很簡單,即在代碼中將 DB 功能關閉,才能釋放 DBCCx 引腳作為普通 GPIO 引腳的功能,如 :

同時,因為 UCPD_DBCCx 引腳(PC9)只要一檢測電平>1V,則會將內置的 Rd 電阻激活。如果 DBCC 引腳僅只用于 GPIO 功能,為了避免意外激活 Rd,建議在 DBCC 引腳外加上 100K的下拉電阻。

圖 4 當 DBCC 引腳(PC9)用于 GPIO 功能時的建議電路

這就是整個解決方案了。

4. 后記

在 STM32G0 中,同樣的問題,在 STM32CubeMx 中是可以配置是否在代碼中關閉 DB 特性的。見下圖示意:

圖 5 在 cubemx 中針對 G0 的 DB 功能關閉選項

Cubemx 中針對 H5 這一選項當前版本還未添加,后續版本應該會更新此功能。
?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/92966.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92966.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92966.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【辦公自動化】如何使用Python讓Word文檔處理自動化?

在日常辦公中,Word文檔是最常用的文本處理工具之一。通過Python自動化Word文檔操作,可以大幅提高工作效率,減少重復勞動,特別適合批量生成報告、合同、簡歷等標準化文檔。本文將介紹幾種常用的Python操作Word文檔的方法&#xff0…

順序表的總結及模擬實現

目錄 一.線性表 二.順序表 1.概念 2.結構 3.要實現的接口函數 三.模擬實現順序表 1.定義出順序表的基本結構 2.實現檢查擴容功能 3.實現尾插 4.實現尾刪 5.實現頭插和頭刪 6.查找 7.修改 8.遍歷 9.在指定位置插入和刪除 四.順序表的優缺點及思考 a.順序表的弊端 …

Vue3 vs Vue2:全面對比與面試寶典

文章目錄Vue3 vs Vue2:全面對比與面試寶典引言:Vue框架的進化之路一、核心架構對比二、響應式系統的革命Vue2的響應式:像老式監控攝像頭Vue3的響應式:像智能AI監控系統三、API風格的進化Vue2的Options API:像填表格Vue…

Java Web開發:Session與Cookie詳細入門指南

在Web開發中,狀態管理是核心需求之一。本文將深入講解Java中Session和Cookie的使用方法,幫助你掌握用戶狀態管理的核心技術。 一、Session與Cookie基礎概念 特性SessionCookie存儲位置服務器內存/持久化存儲客戶端瀏覽器安全性較高(敏感數據…

HTTPS與CA證書:安全通信全解析

CA(Certificate Authority):證書頒發機構,負責簽發和管理數字證書,驗證證書持有者的身份。HTTPS:基于 SSL/TLS 協議的 HTTP,通過證書實現客戶端與服務器的身份驗證和數據加密。HTTPSHTTPSSL/TLS…

AI生成代碼時代的商業模式重構:從“軟件即產品”到“價值即服務”

2025年,全球AI代碼生成市場規模突破63億元(數據來源:《中國AI代碼生成行業發展報告》),開發者效率提升40%以上,軟件開發成本下降30%。這一技術浪潮正在顛覆傳統軟件行業的商業邏輯——當代碼生成變得像文字編輯一樣簡單時,企業如何構建可持續的商業模式? 本文將從硬件…

C#特性與反射知識梳理

C#中的**特性(Attributes)和反射(Reflection)**是兩個非常重要的概念,它們通常用于代碼的元編程,允許你在運行時獲取類型信息并對其進行操作。下面對這兩個概念進行詳細梳理:一、C#中的特性&…

SQL 語法詳解

SQL 語法詳解 引言 SQL(Structured Query Language)是一種用于數據庫管理的標準語言,它允許用戶進行數據的查詢、更新、插入和刪除等操作。SQL語法是數據庫管理和編程的基礎,本篇文章將詳細介紹SQL的基本語法和常用操作&#xff0…

為什么 sim(3) 中的尺度 s 與旋轉 R 相乘,而不是平移 t?

文章目錄為什么 sim(3) 中的尺度 s 與旋轉 R 相乘,而不是平移 t?1?? sim(3) vs SE(3):結構對比與核心差異2?? 為什么尺度 s 不乘在 t 上?🚫 數學破壞:🧭 幾何解釋:3?? t 是“相…

如何為你的 Docker 容器設置代理網絡

一文搞定!如何為你的 Docker 容器設置代理網絡(及一個最常見的“坑”) 你是否遇到過這樣的窘境:在你的服務器上,代理工具(比如 Clash, V2Ray)運行得好好的,瀏覽器也能科學上網,但一旦把應用放進 Docker 容器,它就瞬間“失聯”,無法訪問外部世界? 別擔心,這是每個…

LeetCode Day3 -- 哈希表

目錄 1. 啥是哈希表? 2. 啥時候用哈希表? 2.1 存在性檢查 → 集合Set 2.2 鍵值映射 → 字典Dict 2.3 頻率統計 → Dict or Counter 3. LeetCode 3.1 集合 (1)2215 找出兩數組的不同 (2)1207 獨一無…

三子棋裝置(電賽24E題)K230/STM32全開源

三子棋裝置(電賽24E題)K230/STM32全開源,后續有具體代碼參數講解,幫助大家移植k230代碼import time, os, sysfrom media.sensor import * from media.display import * from media.media import *from machine import UART from m…

終端安全檢測與防御

1. 終端安全風險主要問題:企業網絡中80%的安全事件源于終端,終端成為黑客攻擊的重要目標。攻擊手段:勒索病毒:直接勒索用戶。橫向滲透:通過受控終端攻擊內部服務器。僵尸網絡危害:信息竊取、釣魚網站引導、…

Video_AVI_Packet(2)

博主聲明:內容來自網絡,僅供參考,僅適用于淺了解,如有錯誤,自行甄別,由此引起的后果概不負責 Video_AVI_Packet(2)一、Video Picture Aspect Ratio 與 Active Format Aspect Ratio1.…

八月補丁星期二:微軟修復 111 個漏洞

微軟將在2025 年 8 月補丁星期二修復 111 個漏洞,這一數量與近期平均水平大致相同。 與上個月的情況類似,微軟知道今天發布的漏洞中只有一個已被公開披露,但聲稱沒有證據表明存在野外利用。同樣,截至發布時,唯一的補丁…

《C++進階之繼承多態》【普通類/模板類的繼承 + 父類子類的轉換 + 繼承的作用域 + 子類的默認成員函數】

【普通類/模板類的繼承 父類&子類的轉換 繼承的作用域 子類的默認構造函數】目錄前言:------------------------一、繼承的定義和使用1. 什么使繼承?2. 為什么要引入繼承?3. 怎么使用繼承?① 父類(基類&#xf…

Ubuntu22.04安裝OBS Studio

OBS官網的最新的雖然支持Ubuntu系統,但是只支持最新的24.2版本的,而我的電腦上的Ubuntu的版本是22.04,所以在網上尋求解決辦法,看到了這一片博客,作為參考來實現ubuntu22.04安裝OBS,這里提示一下&#xff0…

Ansible 基本使用

Ansible 清單 靜態主機清單 主機清單支持多種格式,例如ini、yaml、腳本等。 本次課程使用 ini 格式。 #創建主機清單[lykcontroller ~ 13:36:01]# vim inventory#vim添加controllernode1node2node3node4?#測試連接單個服務器[lykcontroller ~ 14:08:18]$ ansibl…

網絡資源模板--基于Android Studio 實現的九寨溝App

目錄 一、測試環境說明 二、項目簡介 三、項目演示 四、部設計詳情(部分) 首頁 購票頁面 五、項目源碼 一、測試環境說明 電腦環境 Windows 11 編寫語言 JAVA 開發軟件 Android Studio (2020) 開發軟件只要大于等于測試版本即可(近幾年官網直接下載也…

系統架構設計師備考之架構設計實踐知識

1.信息系統架構設計理論與實踐1.1.基本概念信息系統架構定義目前關于信息系統架構較為權威的定義有: (1)信息系統架構是系統的結構,由軟件元素、元素外部可見屬性和元素間關系組成。 (2)信息系統架構是軟件…