
8 ~8 c& \2 _5 O9 Y% R7 e 01问题背景 客户在使用 STM32H565 开发新项目的时候遇到一个问题,PB14 在开漏时无法上拉到 3V3,且其输出的 PWM 频率比其它 GPIO 低。且多片芯片的表现类似。 检查客户的原理图并未发现明显的问题。 5 k7 J0 w8 M5 n% ]* n; O" { 02问题复现5 c# L7 C; ^$ ]7 _6 _; h7 n 测试配置:硬件测试平台 NUCLEO-STM32H563ZI。6 a# H- O N9 p+ R; O; A O" ] 软件工具版本: 5 g X+ h6 g5 G! w# l& B STM32CubeMX Version: 6.9.2 STM32Cubeide Version: 1.13.2 4 I3 k: c- d0 N+ |7 g5 L# u8 d 2.1. 测试 1:PB14 开漏输出异常 2.1.1. 测试配置 7 V/ x" y' L5 I! l% G & m1 Y, T1 O }: u+ B& a; N8 i: _ ![]() ▲ 图1. PB14 配置 & C/ V3 v, d' Y 2.1.2. 测试结果 测试结果见图 2: * @8 |7 R' T9 {3 }9 R& K1 N ![]() % O# m0 @& B# M% T3 x ▲ 图2. PB14 输出波形* t m6 p- G- K8 M9 d+ K! q 8 Z+ Y! r; ^; |- C6 U; y4 u5 l 从测试结果看 PB14 无法上拉到 3V3,高电平只有 1.704V,似乎有个下拉电阻分了压。 查看芯片的规格书 DS14258 Rev 1 Table 14. STM32H562xx and STM32H563xx pin/ball definition,关于 PB14 其 IO 定义如下图:7 P) U/ o3 Z# I2 e# Q) \5 [+ F0 z2 c" Q$ B$ W ![]() ▲ 图3. PB14 定义 1 I7 |# m, Q9 A" j$ ~ 其中_c 表示该 pin 脚具有 USB type-c PD 功能。 " D% k: Y/ a& b* B4 u 3 l! Z0 Q# w; f$ }) T$ g 查找 RM0481 Rev1,查看 10.11.8 PWR USB Type-C power delivery register (PWR_UCPDR)寄存器描述如下:3 a7 H" W2 e2 x7 r 7 Q! z. @5 F% I6 n+ T ![]() ▲ 图4. UCPD_DBDIS 描述 ! W: U' y( v* V3 A6 |* W 根据 UCPD_DBDIS 的描述,当芯片退出复位时,对于 CC1,CC2 pin 默认下拉。这 也就解释了客户遇到的,开漏模式时无法上拉到 3.3V 的现象。 7 s0 G7 V8 c3 E9 Y A3 b6 s 修改测试代码,增加如下代码:- D; t* F U0 O5 ]7 T
再次测试 PB14 输出,波形如下 " Q+ k! `: ^6 j# {- i- V$ c' f ![]() 9 @" k/ Q* z: H4 G: K ▲ 图5. PB14 输出的波形 1 J+ Y: n/ Y) V- X& C 此时的波形输出符合预期,测试正常。 / F3 T$ Y) b: u6 `0 G. E6 N. F " G* V0 z- X, ~, c- F/ W# }2 l 2.2. 测试 2:PB14 的 PWM 输出频率低于其他的 GPIO 使用 TIM12 在 PB14/PB15 作为 PWM 输出。对比管脚为 PB15。- N% A3 Q0 V7 K) P: Q3 S$ Z ?* u0 J) ~/ ^$ j 9 M9 u3 d7 g" B: ~3 `% M/ a1 G9 @+ ^ 2.2.1. GPIO 配置 1 , M+ e2 ^* Y+ u+ c2 z & J: z% I6 _% A$ m ![]() ▲ 图6. PB14/PB15 配置 1 9 G8 h: f5 J$ H( \3 v& P" Q; c 9 C8 ]6 S) k+ n. X# g, A ![]() ▲ 图7. TIM12 配置 1 $ S/ ^5 d0 i' v+ g. { 2.2.2. 测试结果 1 1 G5 \- \1 y: B3 h; T5 e ![]() 1 Z1 d5 y) g; Q2 m' `( X ▲ 图8. PB14/PB15 输出波形图 1 0 a% n6 ?, i' V. E" O 此时 PB14 的 GPIO 输出为 0。修改 TIM12 的配置降低 PWM 频率再次测试。' o' R& a- o% [# u7 ^4 R ; E0 Z7 f- j$ O$ Z4 n" @; B ![]() 2 S. s/ y; O3 G# n ▲ 图9. TM12 配置 2 0 ?; B/ s/ z6 N* D# A, a( J ' k( u8 i- o8 s# G- S# |- l & q& I1 h' z5 B9 z, L 2.2.3. 测试结果 2 + H! m/ K& b) n4 b ![]() ▲ 图10. PB14/PB15 输出波形图 2 ) Q9 S6 F4 |& Z- v f$ s5 i: G4 C3 L: t # W, ^7 { K$ v3 t8 j 此时的 PB14 是有输出的但波形幅值变小,似乎是 GPIO 设置的速度的问题造成的,修改 GPIO 速度 Maximum output speed 为 medium,再次测试。波形图如下。$ _; o- z2 ?+ b# L0 ? ; I4 T4 G, ]2 Y* {" s & A6 A/ F7 Q I' h O ![]() 8 j8 N# l+ L* f$ t1 d' u0 k1 I5 v ▲ 图11. PB14_medium PB15_low 输出波形图 k$ s/ I9 ~" z9 R* I8 b* O ) U2 D, C5 v \" w- x' j : ~6 r& |3 K6 v5 Z 综合上述实验 1,2 可以看出 PB14 的输出 PWM 的最大频率确实是低于其它 GPIO 的。 # g. R' p# D; L( c8 K5 G 03小结 由于 PB13,PB14 都连接到 USB PD,对于 PB14,PB13 的最大 GPIO 输出速度也是有 限制的,GPIO 输出速度只支持 low 和 medium, 最大 medium 速度为 10Mhz。关于这 些描述会添加在下一版本的 DS14258 中。" i4 C. T+ x& y( g. Y 如有侵权请联系删除 " w$ j; i% A& f! @0 }3 @ 转载自: STM32 |
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