01问题背景 客户在使用 STM32H565 开发新项目的时候遇到一个问题,PB14 在开漏时无法上拉到 3V3,且其输出的 PWM 频率比其它 GPIO 低。且多片芯片的表现类似。/ |5 ^2 R- f& r3 c+ l 检查客户的原理图并未发现明显的问题。 : r, R( E7 I5 w- Q1 ~2 N 02问题复现 测试配置:硬件测试平台 NUCLEO-STM32H563ZI。 软件工具版本: . N# J" y: e# C6 b STM32CubeMX Version: 6.9.2 2 T& C$ F: [+ W' w1 @8 Q- j STM32Cubeide Version: 1.13.24 V+ l7 [ ?' e# s# l 1 R2 y7 B) [4 L* Z 2.1. 测试 1:PB14 开漏输出异常 2.1.1. 测试配置 9 L; E0 ^' [, j! F9 x ) q6 U; r- J1 \5 d e7 s6 O* X* u4 s ▲ 图1. PB14 配置 ) r) i0 \9 c+ U ` ( E0 ?) G3 C4 R- x 2.1.2. 测试结果0 j2 E" w3 F" D: t" M) ? 测试结果见图 2: ( H, e0 M9 J! r& w& e' q, q ▲ 图2. PB14 输出波形) Y. L* J/ s$ l2 w 3 z- I4 |- |' m4 H' z* \; M! a 9 G4 x9 N) w0 _7 m. _" @1 O 从测试结果看 PB14 无法上拉到 3V3,高电平只有 1.704V,似乎有个下拉电阻分了压。 7 c `# H' j: F" A# I# b! m 查看芯片的规格书 DS14258 Rev 1 Table 14. STM32H562xx and STM32H563xx pin/ball definition,关于 PB14 其 IO 定义如下图:! E$ y3 Y" J7 f; A9 [" U ! z; ~, ~# V* A( z& T 5 _, Y' F1 v& ~) c! f) ^+ X: E ▲ 图3. PB14 定义 6 |; o) Q% g; c9 }% R9 F, | 其中_c 表示该 pin 脚具有 USB type-c PD 功能。6 S0 t n! ~+ \& P3 m " `3 P) M4 N5 Y& \, j- W 查找 RM0481 Rev1,查看 10.11.8 PWR USB Type-C power delivery register (PWR_UCPDR)寄存器描述如下: S) F2 s* _8 {1 @4 y; ? 6 ^6 F# J9 Y9 Q& O ▲ 图4. UCPD_DBDIS 描述 6 J& ?8 g/ v5 n7 [+ u6 B$ j# g% i 6 L( v/ \# t4 L0 `, ^. Q 根据 UCPD_DBDIS 的描述,当芯片退出复位时,对于 CC1,CC2 pin 默认下拉。这 也就解释了客户遇到的,开漏模式时无法上拉到 3.3V 的现象。 * N1 {' o8 h. [$ I* E$ i5 q 修改测试代码,增加如下代码:9 _, ?0 [ k2 f6 o2 N
y. I+ a) a) x- V 再次测试 PB14 输出,波形如下 7 e3 Z2 }* x- t9 y7 W+ w K ▲ 图5. PB14 输出的波形 : }8 z( b9 s( N0 w1 ?' _ 此时的波形输出符合预期,测试正常。 2.2. 测试 2:PB14 的 PWM 输出频率低于其他的 GPIO 使用 TIM12 在 PB14/PB15 作为 PWM 输出。对比管脚为 PB15。 , g8 F$ Z, v# D; _1 ]3 f 2.2.1. GPIO 配置 1 ▲ 图6. PB14/PB15 配置 1 % n5 n( O* ?( Y" ?0 \, o1 N" n ( p& C! n- @/ u! t @' k8 z ▲ 图7. TIM12 配置 1 b5 A/ U: [4 o" c/ I: M % [0 {9 O+ W t/ Z 2.2.2. 测试结果 1 ' j! E( z. F3 \: ^$ y5 u 6 {! _3 V: D N6 H& Q5 b ▲ 图8. PB14/PB15 输出波形图 1 " \8 A6 h& w+ @5 y, ^ 此时 PB14 的 GPIO 输出为 0。修改 TIM12 的配置降低 PWM 频率再次测试。 6 L+ h7 d: A# o- b; J ! Y; R# q3 Q6 ^: n # \* e4 E! B4 r# `/ W8 O ▲ 图9. TM12 配置 2 # r1 \3 N9 t$ n# Q( E 2.2.3. 测试结果 2 % R! S+ ]+ M1 Q ▲ 图10. PB14/PB15 输出波形图 2 6 V2 _% {% r# |* ?! U 此时的 PB14 是有输出的但波形幅值变小,似乎是 GPIO 设置的速度的问题造成的,修改 GPIO 速度 Maximum output speed 为 medium,再次测试。波形图如下。 7 [+ d% z: x0 V- M) ^5 N # ^6 L" N6 c; w, e/ Y9 M ▲ 图11. PB14_medium PB15_low 输出波形图 $ Z3 A6 s$ ^. h. g 5 g* i& z* ?( O9 @ 0 B" b1 M" ]6 w7 f" _ 综合上述实验 1,2 可以看出 PB14 的输出 PWM 的最大频率确实是低于其它 GPIO 的。 ( {# A- L+ P, J0 B1 C 03小结 由于 PB13,PB14 都连接到 USB PD,对于 PB14,PB13 的最大 GPIO 输出速度也是有 限制的,GPIO 输出速度只支持 low 和 medium, 最大 medium 速度为 10Mhz。关于这 些描述会添加在下一版本的 DS14258 中。 0 X) e5 o, N1 J0 ?( c, o s5 {+ [' r4 |% @' i z e 如有侵权请联系删除( @, J3 a8 A$ \3 y! m; c% M" e & n% x, w4 M- D4 k" x" X* h' `/ j$ ~ 转载自: STM32' [- R: M8 f# b- Z3 H $ a7 q$ h3 O/ @- h% |. W |
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
【NUCLEO-H533RE评测】IAR CRC 镜像校验
【NUCLEO-H533RE评测】+环境搭建 cube点亮LED灯
【NUCLEO-H533RE评测】4、移植TouchGFX