|
, Z! S. \2 a" l4 ?5 n1 x 01问题背景 客户在使用 STM32H565 开发新项目的时候遇到一个问题,PB14 在开漏时无法上拉到 3V3,且其输出的 PWM 频率比其它 GPIO 低。且多片芯片的表现类似。* P- w+ d6 Y1 }' H" c 检查客户的原理图并未发现明显的问题。( b7 O6 U( i: J: n" E 02问题复现 测试配置:硬件测试平台 NUCLEO-STM32H563ZI。8 `% l0 ?, W8 `+ U& N 软件工具版本: 0 k- X# u0 ?- ?+ d! b3 V* O STM32CubeMX Version: 6.9.2 ; u6 `0 Q) T! a+ r STM32Cubeide Version: 1.13.28 x4 Z5 u. k7 p) o, B , Y& V- p3 d$ f; d & c7 O8 p% q r$ B& G9 u 2.1. 测试 1:PB14 开漏输出异常 2.1.1. 测试配置 6 S0 _6 A# y+ x$ @3 E0 B5 }1 D
▲ 图1. PB14 配置/ V+ S) M% u0 ~ 2.1.2. 测试结果 ?- Q% f& P+ s 测试结果见图 2: , }4 g- x( x4 A # D! i/ h2 v( R( S* z( t
( A. }5 e6 K' d! _ ▲ 图2. PB14 输出波形 . Z. g+ u( p- E( d, J _ 从测试结果看 PB14 无法上拉到 3V3,高电平只有 1.704V,似乎有个下拉电阻分了压。0 k9 E# d9 ~) S ?& D! K% D : ^6 d p0 L0 N8 W7 b - s( b k! p$ ^: R 查看芯片的规格书 DS14258 Rev 1 Table 14. STM32H562xx and STM32H563xx pin/ball definition,关于 PB14 其 IO 定义如下图: c) M% R3 A2 d. \9 m( n/ b4 ~7 ]; p* [
▲ 图3. PB14 定义 % U% e* Q4 x; M |$ P0 l$ Q ! Q: A! X# \ E* K 其中_c 表示该 pin 脚具有 USB type-c PD 功能。5 e) J# H* Y7 U) ` * _* {" G! z8 m* u 查找 RM0481 Rev1,查看 10.11.8 PWR USB Type-C power delivery register (PWR_UCPDR)寄存器描述如下: ' d9 l, N" m' v$ [, _% X. ]
# I) K$ F; D, G; W ▲ 图4. UCPD_DBDIS 描述 根据 UCPD_DBDIS 的描述,当芯片退出复位时,对于 CC1,CC2 pin 默认下拉。这 也就解释了客户遇到的,开漏模式时无法上拉到 3.3V 的现象。' r8 M6 B+ `2 W. i2 o ^5 F2 [ s: q& U0 i4 ^1 { 修改测试代码,增加如下代码:! f) `$ ^0 M! {8 M% e/ v/ l s% x
" \1 ?- y4 N- J) `, f% e 再次测试 PB14 输出,波形如下 & e* Z( P9 ?* F1 m* X
" Z" f" J. S5 R" I! {2 d ▲ 图5. PB14 输出的波形! M& Y; z" y: l) N' ^! k% N ) A, Z: g/ K# f% p9 h* u 此时的波形输出符合预期,测试正常。 ' @ q+ U5 s; L2 N2 Z 2.2. 测试 2:PB14 的 PWM 输出频率低于其他的 GPIO( }: d! S; }4 h, E 使用 TIM12 在 PB14/PB15 作为 PWM 输出。对比管脚为 PB15。' b, L ?9 K- h7 m) Z( a' @ 2.2.1. GPIO 配置 1 : @9 Z5 X; e5 }7 i/ _6 C7 k + V9 K1 ~! c7 S& b: ?. h4 K 6 D, [! w. d7 D" t' m1 [! x
# C& F( ~# d' n) B3 ^$ W" v ▲ 图6. PB14/PB15 配置 1 - w8 s5 y3 X; q* m# O& g
2 ?9 u9 y' p& l4 n8 p2 k ▲ 图7. TIM12 配置 1% w/ `: O6 Z3 Z5 h2 R 2.2.2. 测试结果 1 6 c. H# T2 g' M4 z& V6 d* O " o- u3 `# F8 |( @
▲ 图8. PB14/PB15 输出波形图 1 此时 PB14 的 GPIO 输出为 0。修改 TIM12 的配置降低 PWM 频率再次测试。 : F1 S- L3 W8 I7 I9 h( N
▲ 图9. TM12 配置 2 , d, [0 U- [9 o5 {" c / H5 a: Z! D C2 _/ \" Z+ { 2.2.3. 测试结果 2 + L* ^* S2 p, s" x, |8 [
V. { u: z- D8 c4 A ▲ 图10. PB14/PB15 输出波形图 2 ( I) j$ E& |, G6 _! k# ?1 U 此时的 PB14 是有输出的但波形幅值变小,似乎是 GPIO 设置的速度的问题造成的,修改 GPIO 速度 Maximum output speed 为 medium,再次测试。波形图如下。* O" ]1 o/ B4 h+ |" @# l. f7 v ! G" n( x" c9 S) R/ S( f
▲ 图11. PB14_medium PB15_low 输出波形图 % k! ~% U* {% S+ } 综合上述实验 1,2 可以看出 PB14 的输出 PWM 的最大频率确实是低于其它 GPIO 的。 - h5 u% t; X/ M 03小结 由于 PB13,PB14 都连接到 USB PD,对于 PB14,PB13 的最大 GPIO 输出速度也是有 限制的,GPIO 输出速度只支持 low 和 medium, 最大 medium 速度为 10Mhz。关于这 些描述会添加在下一版本的 DS14258 中。 0 x9 _$ B' @! E5 {. O 如有侵权请联系删除: @0 v& y. B' A 转载自: STM32) X( ~# H: g5 ` ]( E" ^7 l |
微信公众号
手机版