
01问题背景2 p8 Q% G7 T6 X# g* Y 客户在使用 STM32H565 开发新项目的时候遇到一个问题,PB14 在开漏时无法上拉到 3V3,且其输出的 PWM 频率比其它 GPIO 低。且多片芯片的表现类似。) J& z/ J; Q; |3 w 检查客户的原理图并未发现明显的问题。/ W$ ^4 J! _7 b/ h5 I1 m' F 02问题复现* X- Z4 Y3 S- [8 q6 M/ D6 M4 H 测试配置:硬件测试平台 NUCLEO-STM32H563ZI。5 b1 ^/ @( M& F8 [ 软件工具版本: STM32CubeMX Version: 6.9.2 STM32Cubeide Version: 1.13.2/ y% _5 T6 L4 {7 {8 n % t) J4 d' s0 l- F 2.1. 测试 1:PB14 开漏输出异常 6 w4 o; t/ z$ D# y9 d 2.1.1. 测试配置 / N5 r! o* O4 I' N9 k7 i9 i 6 i/ q. A0 q8 e1 b6 U ![]() ▲ 图1. PB14 配置# {1 v) U7 K& n# ]3 d2 \" { , ~/ X2 ?$ _8 L 2.1.2. 测试结果/ d9 i T9 H" O 测试结果见图 2: 4 _7 R6 M: L- `/ { ![]() ) t, e! x( G% P6 |/ g ▲ 图2. PB14 输出波形6 T( M& [3 _" [5 S7 ~. t & b Y! C- W/ _0 u# J; b 从测试结果看 PB14 无法上拉到 3V3,高电平只有 1.704V,似乎有个下拉电阻分了压。 5 ]/ e2 i2 s) [+ X8 X5 B ! t7 w: r+ V- \& [% p3 `# Y+ ~ 查看芯片的规格书 DS14258 Rev 1 Table 14. STM32H562xx and STM32H563xx pin/ball definition,关于 PB14 其 IO 定义如下图: 6 M& `6 k4 K2 u: f% o G; k4 C, T7 }7 r: j- z ![]() # w) \% U6 z/ ]* Y ▲ 图3. PB14 定义 4 O8 ?0 |& n/ y2 ~& c) }0 p; \ 8 z7 N5 t1 h* F! {% V9 M( M ( `2 h7 c$ K" M! K0 x1 I: C 其中_c 表示该 pin 脚具有 USB type-c PD 功能。- z x7 v1 S6 c8 w / Q& t/ d. ^3 Z H- E' b5 t$ P 1 @8 H' Z; S, ]" Y 查找 RM0481 Rev1,查看 10.11.8 PWR USB Type-C power delivery register (PWR_UCPDR)寄存器描述如下: L, l% I( n; Q/ |5 e ![]() ▲ 图4. UCPD_DBDIS 描述 % `- V; [' ^9 M" S+ i" C' C" B' o& c) E' f 根据 UCPD_DBDIS 的描述,当芯片退出复位时,对于 CC1,CC2 pin 默认下拉。这 也就解释了客户遇到的,开漏模式时无法上拉到 3.3V 的现象。 修改测试代码,增加如下代码:4 N- Q0 A( s/ T8 F* i8 G% h5 ^7 R" m
再次测试 PB14 输出,波形如下 ! G% h! C3 q: d ![]() ▲ 图5. PB14 输出的波形 此时的波形输出符合预期,测试正常。 ( r8 `9 _& O8 S 2.2. 测试 2:PB14 的 PWM 输出频率低于其他的 GPIO1 e$ s' F4 e6 r2 @ 使用 TIM12 在 PB14/PB15 作为 PWM 输出。对比管脚为 PB15。. D4 I+ a4 c% i0 N4 U; |4 N" N3 _3 o * s4 q0 H# R/ I( w, W3 _ " z+ h+ h+ Y0 g: V0 E" [- c7 U8 Q 2.2.1. GPIO 配置 1 2 ?8 h. S* C; {1 d: n# R: n; ^ ![]() ▲ 图6. PB14/PB15 配置 1 2 x) ^: v x! Y$ s. K" M ( U, s! p4 q3 O! Y _* l* c& O 0 L. P. E5 r$ X& l+ u- O2 r# E ![]() 5 {% \* I5 Z9 z! J# |! U ▲ 图7. TIM12 配置 1 ! i6 O C% t1 ^% U$ z+ p( S ( f+ W7 g- b8 D2 ^7 ?3 k' V2 i8 b 2.2.2. 测试结果 1 $ |! Z* b2 d2 a' E) `6 r/ ]+ q . |# a" {* D. i0 i) g( p& z. Q' Y7 x ![]() 9 q# R+ b0 |& l! W5 W6 r2 x9 T ▲ 图8. PB14/PB15 输出波形图 1 3 A5 [3 n8 {( b# n# ] 此时 PB14 的 GPIO 输出为 0。修改 TIM12 的配置降低 PWM 频率再次测试。! J6 h0 X. x2 U% K6 M/ F ![]() ▲ 图9. TM12 配置 2 ' q# E% ], b2 n' ~6 R 2.2.3. 测试结果 2 & Z! z* p/ j, R9 y# T& w 8 t. v; Y: Y7 I( W& x1 w4 d6 m+ @! j ![]() ' l" l+ _& d, }3 @, j! f ▲ 图10. PB14/PB15 输出波形图 2 0 B1 X3 F! Y7 O5 L& _/ ~- x, h( } % e5 A4 {/ @ T+ P 6 g1 K6 R5 ?) w4 v2 H- w$ P* j9 _' U 此时的 PB14 是有输出的但波形幅值变小,似乎是 GPIO 设置的速度的问题造成的,修改 GPIO 速度 Maximum output speed 为 medium,再次测试。波形图如下。 ![]() ▲ 图11. PB14_medium PB15_low 输出波形图 5 U& q2 ^) D4 X+ N5 `/ d - s6 `0 _- [7 C# o" X 综合上述实验 1,2 可以看出 PB14 的输出 PWM 的最大频率确实是低于其它 GPIO 的。 / o) \$ G1 R, J$ G. L& L 03小结4 R8 I8 S- D! G1 K4 ` 由于 PB13,PB14 都连接到 USB PD,对于 PB14,PB13 的最大 GPIO 输出速度也是有 限制的,GPIO 输出速度只支持 low 和 medium, 最大 medium 速度为 10Mhz。关于这 些描述会添加在下一版本的 DS14258 中。* @; ~ N% G8 x/ @, J2 k 如有侵权请联系删除 8 Z$ `/ p5 B' A' `& A6 a% R3 ^ 转载自: STM32 : d3 r8 ]# I% D |
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