$ u- J o l( o( ^ 01问题背景 客户在使用 STM32H565 开发新项目的时候遇到一个问题,PB14 在开漏时无法上拉到 3V3,且其输出的 PWM 频率比其它 GPIO 低。且多片芯片的表现类似。$ H* a& N. z+ a$ _ 检查客户的原理图并未发现明显的问题。2 j& j( J* J5 r! b0 U7 u. R5 G 02问题复现 测试配置:硬件测试平台 NUCLEO-STM32H563ZI。, g/ \, t Y* p- N+ \" p2 E8 }8 q 软件工具版本: 5 Y# \! T' @/ u" \2 z: k STM32CubeMX Version: 6.9.2 + e, ?: t1 \0 l+ W4 \: u STM32Cubeide Version: 1.13.2) s" L/ c6 W4 `1 u4 | 5 V/ `; M( Z. E2 p' e) a7 } 2.1. 测试 1:PB14 开漏输出异常 2 m5 ]: W% ^4 y2 A 2.1.1. 测试配置 ) F5 i f6 G$ e* U ▲ 图1. PB14 配置9 _1 `6 A* A* b, @/ g8 w5 ?% ] # Z, j- T# j2 q+ e8 B0 e 2.1.2. 测试结果 测试结果见图 2: % |% A+ {# S" g( `$ r( N% b 9 g! \! U8 s- @5 R* t 1 ~4 x$ n6 M6 ~1 ~8 ? ▲ 图2. PB14 输出波形+ w5 z( G3 ^/ e! g! i 3 [! g3 ]& Y3 u6 ]/ g0 J% J 9 s2 k' e" l& R" V 从测试结果看 PB14 无法上拉到 3V3,高电平只有 1.704V,似乎有个下拉电阻分了压。+ W8 S p- W! l$ u 5 z; A3 W- z6 Q: U8 z' N0 y8 P0 n 2 ~7 A& o" C' F$ c9 l% }* f" b4 B 查看芯片的规格书 DS14258 Rev 1 Table 14. STM32H562xx and STM32H563xx pin/ball definition,关于 PB14 其 IO 定义如下图:8 U G' x3 c7 j6 c ▲ 图3. PB14 定义 & J' b& t {; Y, a- g. g2 U5 w . E, v. M* g8 R4 V 其中_c 表示该 pin 脚具有 USB type-c PD 功能。# ]2 F. B( Y* X+ ` K $ q3 M1 F/ `' n5 k8 a& m # b7 ~) U# W% G3 |2 {$ ~ 查找 RM0481 Rev1,查看 10.11.8 PWR USB Type-C power delivery register (PWR_UCPDR)寄存器描述如下: 5 H# j* w, A. J& O1 w5 o ▲ 图4. UCPD_DBDIS 描述 7 d" K1 m5 f* d% |8 O 根据 UCPD_DBDIS 的描述,当芯片退出复位时,对于 CC1,CC2 pin 默认下拉。这 也就解释了客户遇到的,开漏模式时无法上拉到 3.3V 的现象。! s4 ^, R' G! ^7 h; U0 X: N( | 8 P5 ?# H0 G* d; r; \) m1 j 修改测试代码,增加如下代码:
再次测试 PB14 输出,波形如下 3 _& @& z- w" F g+ @) c- T3 _3 ]6 c8 S1 D9 g( N1 s 4 f! G: M) ^0 X h+ e* F, r ▲ 图5. PB14 输出的波形 * n' J0 Y2 P4 k# h$ b6 I- \9 n 此时的波形输出符合预期,测试正常。 2.2. 测试 2:PB14 的 PWM 输出频率低于其他的 GPIO; Q. |9 _$ Y$ e# r3 Z 使用 TIM12 在 PB14/PB15 作为 PWM 输出。对比管脚为 PB15。 2.2.1. GPIO 配置 1 9 l# \+ s$ X/ b$ x5 w9 O9 A : W" n; d( r: D T2 }4 q; M0 m- k! a5 j3 R* c ▲ 图6. PB14/PB15 配置 1 ! Z U$ @; V d k' \* \" e4 A " z$ a$ H; L- H# K. j$ C ! x% r/ n2 k! c* q% d0 b+ a5 k ▲ 图7. TIM12 配置 19 z. C+ s1 E# N: I, @5 c' Y, z/ M 2.2.2. 测试结果 1 4 x) W6 |+ N |3 Q3 L1 f5 \ ' E/ E, J5 N# H9 P" Z0 y/ ~ O ▲ 图8. PB14/PB15 输出波形图 1 ' e( {. u( J- x. c" {0 W6 Z7 w7 m 此时 PB14 的 GPIO 输出为 0。修改 TIM12 的配置降低 PWM 频率再次测试。( {6 I; ]4 P( b) L* j4 \9 b- d M: ], p4 R( A( x' p2 ` ▲ 图9. TM12 配置 2 " l, E4 B! j, D5 s! A/ t 1 }+ m& [5 p7 b& ?" V 1 n( `2 r1 M/ B 2.2.3. 测试结果 2 % |! Y4 M Z3 b ) A6 b8 \% \% c7 s3 Y2 ?% K+ S6 x ▲ 图10. PB14/PB15 输出波形图 2 % O6 ~9 e, e3 L+ g. p / J) r6 Y# J! e+ n6 q7 i# b 此时的 PB14 是有输出的但波形幅值变小,似乎是 GPIO 设置的速度的问题造成的,修改 GPIO 速度 Maximum output speed 为 medium,再次测试。波形图如下。 + I( V) q* R2 f: a : a5 v4 u$ j( s0 d& ? ▲ 图11. PB14_medium PB15_low 输出波形图 " q, W7 v; d1 p* j' y+ j/ P ! Y# o% b% H K: A, I7 a $ S' p/ G% Z+ H 综合上述实验 1,2 可以看出 PB14 的输出 PWM 的最大频率确实是低于其它 GPIO 的。- f) ~" X6 d: I: _( c 03小结 由于 PB13,PB14 都连接到 USB PD,对于 PB14,PB13 的最大 GPIO 输出速度也是有 限制的,GPIO 输出速度只支持 low 和 medium, 最大 medium 速度为 10Mhz。关于这 些描述会添加在下一版本的 DS14258 中。 7 G1 t% j+ F1 f 如有侵权请联系删除/ m2 e/ f/ Z4 e4 V$ R% P+ o6 `7 S5 Y 转载自: STM32 8 g0 R3 j' Z' I/ ]4 A( {0 Q2 Y6 ~ |
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