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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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)信息系统架构是软件…