
01问题背景* v: o! x4 O) l0 u4 O5 b 客户在使用 STM32H565 开发新项目的时候遇到一个问题,PB14 在开漏时无法上拉到 3V3,且其输出的 PWM 频率比其它 GPIO 低。且多片芯片的表现类似。 检查客户的原理图并未发现明显的问题。: G. T% h3 I: g H# M) D0 g , a7 V$ o& n/ y4 m0 {* k 02问题复现 测试配置:硬件测试平台 NUCLEO-STM32H563ZI。 软件工具版本: STM32CubeMX Version: 6.9.2 3 N7 l$ E& ?. _0 Q1 I STM32Cubeide Version: 1.13.2 2.1. 测试 1:PB14 开漏输出异常 2.1.1. 测试配置 6 i# J7 ~# h1 s$ c: ^3 ? % h6 L; ~# E, N f) b ![]() ▲ 图1. PB14 配置 2.1.2. 测试结果 测试结果见图 2: 3 q+ Y) ` s: e3 p. s; K5 _ 2 V! s! i1 s- q5 A+ Z ![]() ▲ 图2. PB14 输出波形 3 P2 y. T5 o4 N 从测试结果看 PB14 无法上拉到 3V3,高电平只有 1.704V,似乎有个下拉电阻分了压。 8 h' }9 t0 I3 T1 k 4 m1 |2 ~# d4 J N0 m- y9 B 查看芯片的规格书 DS14258 Rev 1 Table 14. STM32H562xx and STM32H563xx pin/ball definition,关于 PB14 其 IO 定义如下图:% K4 L3 u0 G0 l1 ^/ o3 y ![]() - r" J$ u6 U) ?- |0 ^: w+ _; Y ▲ 图3. PB14 定义 4 c6 M6 A9 d$ d! N+ J( Y @/ |# N: p# k1 w9 q 其中_c 表示该 pin 脚具有 USB type-c PD 功能。% Z3 U- z: r" H r 查找 RM0481 Rev1,查看 10.11.8 PWR USB Type-C power delivery register (PWR_UCPDR)寄存器描述如下:3 r6 J. E* y0 Y6 o- j( Q) \ ![]() 5 H$ N. P* @5 A/ q# r# Y ▲ 图4. UCPD_DBDIS 描述 . q: w% d; p% E# j& p 8 f; l8 X- i& q" F8 i& K" i( B $ T5 B0 X1 `- Q1 s8 p, O9 | 根据 UCPD_DBDIS 的描述,当芯片退出复位时,对于 CC1,CC2 pin 默认下拉。这 也就解释了客户遇到的,开漏模式时无法上拉到 3.3V 的现象。+ N5 e9 C- t& Q; C6 H : q: k/ Y0 w3 V9 z 修改测试代码,增加如下代码:& b) u) V# g8 ?- b
7 c9 r1 x- z1 n) l 再次测试 PB14 输出,波形如下 / v0 P1 c; p; `2 s: @; j7 H& X" h) { ![]() ) r* q8 e$ @2 k+ ~+ I+ o8 A8 l ▲ 图5. PB14 输出的波形 / _: Y8 `" k' n 此时的波形输出符合预期,测试正常。 + B9 i+ H+ ?$ t e/ N' w$ W4 S' d 2.2. 测试 2:PB14 的 PWM 输出频率低于其他的 GPIO$ P% b4 m1 Z! @( @; R& n( N0 w 使用 TIM12 在 PB14/PB15 作为 PWM 输出。对比管脚为 PB15。 2.2.1. GPIO 配置 1 : U3 q ?0 V$ c ![]() ▲ 图6. PB14/PB15 配置 1 # L3 {; |% I1 u7 C, g& ]3 W" a! { ![]() / H, ]" U. W4 `3 o! d ▲ 图7. TIM12 配置 1: G( u. k% U& Z( b4 L 2.2.2. 测试结果 1 * c% W3 h( A# A# k6 z # y( S3 k$ a1 ?1 S3 c* ~ ![]() |6 s0 L! P5 T* b1 G6 \2 s; A ▲ 图8. PB14/PB15 输出波形图 1 此时 PB14 的 GPIO 输出为 0。修改 TIM12 的配置降低 PWM 频率再次测试。4 x7 ~- V# e# N2 W9 E7 l) O $ y: y. U4 _/ m; S) q o. y3 d ![]() + `2 \5 {6 a- L8 R- M' F ▲ 图9. TM12 配置 2 . [( [+ T5 T$ n6 a1 ` . @+ y0 y5 P7 s& n 2.2.3. 测试结果 2 + H9 G7 l7 S1 K) t* g 7 J6 ~4 t; `7 D A$ l ![]() ▲ 图10. PB14/PB15 输出波形图 2 0 x, ` \/ {5 c* A, @ ' ]1 W* ?" a* t2 \ 此时的 PB14 是有输出的但波形幅值变小,似乎是 GPIO 设置的速度的问题造成的,修改 GPIO 速度 Maximum output speed 为 medium,再次测试。波形图如下。 ; E5 ^9 B. B" C6 F5 u/ Q ![]() ▲ 图11. PB14_medium PB15_low 输出波形图 ' ^; `* @, H K* g 综合上述实验 1,2 可以看出 PB14 的输出 PWM 的最大频率确实是低于其它 GPIO 的。, l4 Q. V' ~4 Z: C- J + o7 ~; ?9 C' H" S 03小结 由于 PB13,PB14 都连接到 USB PD,对于 PB14,PB13 的最大 GPIO 输出速度也是有 限制的,GPIO 输出速度只支持 low 和 medium, 最大 medium 速度为 10Mhz。关于这 些描述会添加在下一版本的 DS14258 中。 Y* G( |& ?) W$ B) Y* k F ( r3 M0 ~# T2 Y$ X 如有侵权请联系删除 ' @5 I' m3 t7 V# p0 n 转载自: STM32! L3 J% H$ `8 d, U. M |
STM32H7的TCM,SRAM等五块内存基础知识
STM32H7的TCM,SRAM等五块内存基础知识
简单了解一下STM32H7的BDMA
NUCLEO-H563ZI刷入Micropython固件并点亮LED灯
【NUCLEO-H533RE评测】+点亮小灯
【NUCLEO-H533RE评测】+09 低功耗测试
【NUCLEO-H533RE评测】+08 初识FreeRtos
【NUCLEO-H533RE评测】+07 IIC调试
【NUCLEO-H533RE评测】+06 ADC调试
【NUCLEO-H533RE评测】+05 调试PWM