|
01问题背景0 e, N* N# e$ D 客户在使用 STM32H565 开发新项目的时候遇到一个问题,PB14 在开漏时无法上拉到 3V3,且其输出的 PWM 频率比其它 GPIO 低。且多片芯片的表现类似。 检查客户的原理图并未发现明显的问题。 02问题复现- R }1 n* M: K+ L 测试配置:硬件测试平台 NUCLEO-STM32H563ZI。 软件工具版本: STM32CubeMX Version: 6.9.2 STM32Cubeide Version: 1.13.2 ( {- d N2 O8 ~* V# H" I 2.1. 测试 1:PB14 开漏输出异常 5 p1 i2 s7 ~1 \ 2.1.1. 测试配置 2 Q" ?: ]# {" B8 b
▲ 图1. PB14 配置, Y) s. D1 m% \/ _ 2.1.2. 测试结果- u _! w" w3 O' l 测试结果见图 2:
0 f) S1 X1 v; Q* Z/ z ▲ 图2. PB14 输出波形$ M& N- V# U5 p9 ]5 U3 z 4 V5 A2 b4 S! f }; t # |2 v4 B* P' {6 w# ` 从测试结果看 PB14 无法上拉到 3V3,高电平只有 1.704V,似乎有个下拉电阻分了压。 ; S+ H* V! p/ }7 n 查看芯片的规格书 DS14258 Rev 1 Table 14. STM32H562xx and STM32H563xx pin/ball definition,关于 PB14 其 IO 定义如下图: ' E, _9 {+ Q% H! e. Z ( ? @% J4 F4 b
▲ 图3. PB14 定义 , |+ Y0 x& G- }) E! z$ q . ~9 i& [7 F: m- t1 X+ _ 其中_c 表示该 pin 脚具有 USB type-c PD 功能。 6 O( A' m, b9 R! m$ f0 | 查找 RM0481 Rev1,查看 10.11.8 PWR USB Type-C power delivery register (PWR_UCPDR)寄存器描述如下:+ d% j8 M5 p. a( M% l + _8 ?8 R; T, U" V! ? z" M: J" N# ^ / K, W2 i/ N- L- F3 G$ m, m9 Q
▲ 图4. UCPD_DBDIS 描述 % ?3 d0 ]5 _! K N) W8 _ 0 Y8 j' j9 W4 L) g- Q- u; ?, o 根据 UCPD_DBDIS 的描述,当芯片退出复位时,对于 CC1,CC2 pin 默认下拉。这 也就解释了客户遇到的,开漏模式时无法上拉到 3.3V 的现象。# L# T6 H1 L' H" q0 B9 _ * V' @* `4 V7 o! K ! U9 h* C: A+ c: k T9 ?# G' S 修改测试代码,增加如下代码:
再次测试 PB14 输出,波形如下 ) c, ^; H4 K( r
& Q- ~3 H+ m) i2 w3 ? ▲ 图5. PB14 输出的波形" B# N4 [4 S* t3 W' Y0 H' c* y) N 0 ?* l! F+ V0 K5 w1 j5 ] 此时的波形输出符合预期,测试正常。 # k% o1 r5 r/ O5 v 0 e% ^) x u, w1 P1 }# k ( W; ?% E* Y: K# M 2.2. 测试 2:PB14 的 PWM 输出频率低于其他的 GPIO$ f3 j; J; T L" ^" B: x* D' a' ^ 使用 TIM12 在 PB14/PB15 作为 PWM 输出。对比管脚为 PB15。 " d$ O6 ~1 [1 l( ^9 j G7 t( ?! x) F' P; j ; J+ o3 Z/ U' P7 m6 m5 I 2.2.1. GPIO 配置 1 / ^, \* C! j* L- ~* o5 j: ?
! i4 v r4 A0 ~0 Q+ N ▲ 图6. PB14/PB15 配置 1 % ]( f& X/ k( q2 W' y
) X0 e" k D% I ▲ 图7. TIM12 配置 1 8 R6 U) b8 R9 Y% c 1 G$ b' E. ]2 C$ J 2.2.2. 测试结果 1 ) R, a$ ?6 ^+ G3 o; u! F
, G5 i# h6 c: ]& {* y7 m2 B3 A! d ▲ 图8. PB14/PB15 输出波形图 1 - @$ D2 Q7 N4 L6 ?, I# { 此时 PB14 的 GPIO 输出为 0。修改 TIM12 的配置降低 PWM 频率再次测试。! `3 r, `) ?# ]" B0 h* @ ) ], a! a3 ]- F% d5 \5 S
) j* `6 r# C! p2 S# q! A ▲ 图9. TM12 配置 2 0 i$ b$ g- Q% x4 {( I 2.2.3. 测试结果 2 3 o1 O# \+ | F6 l' f. u* l0 v ! G7 J: e, r* Q. U
7 w) Y8 I! |3 ?6 l ▲ 图10. PB14/PB15 输出波形图 2 : U, W) y8 y3 u+ E, h' M; |* { 此时的 PB14 是有输出的但波形幅值变小,似乎是 GPIO 设置的速度的问题造成的,修改 GPIO 速度 Maximum output speed 为 medium,再次测试。波形图如下。 4 O- Q5 n* @2 X+ i5 t: W. f 5 W& o+ v9 j) [ j( k
▲ 图11. PB14_medium PB15_low 输出波形图 - J A4 F( V x3 s- h) T Y 0 l+ L& B5 @+ Q 综合上述实验 1,2 可以看出 PB14 的输出 PWM 的最大频率确实是低于其它 GPIO 的。 03小结' s' F, s" x. f7 W! Z 由于 PB13,PB14 都连接到 USB PD,对于 PB14,PB13 的最大 GPIO 输出速度也是有 限制的,GPIO 输出速度只支持 low 和 medium, 最大 medium 速度为 10Mhz。关于这 些描述会添加在下一版本的 DS14258 中。, t# i ~& h- l5 D1 S s1 C3 \' W9 w 如有侵权请联系删除/ ~7 n. X, _* o# v5 _3 O* j 2 W, n/ f! P- K 转载自: STM32 " n4 V* t6 M0 ~2 H |
【NUCLEO-H533RE评测】-01-开箱及资料准备
【STM32H503评测】+基于STM32CubeMX生成工程点灯
实战经验 | LAT1585 STM32H5在使能TrustZone下实现High-Cycle的数据存储
详解STM32单片机的堆栈
STM32大神笔记,超详细单片机学习汇总资料
小白也能明白的STM32的低功耗与唤醒机制
STM32芯片命名规则
STM32 引脚到底有多少?为什么一个引脚能当好几个用?
STM32时钟详解
经验分享 | STM32H563 SPI DMA应用演示
微信公众号
手机版