
01问题背景+ G+ k5 N) @) }# o2 v 客户在使用 STM32H565 开发新项目的时候遇到一个问题,PB14 在开漏时无法上拉到 3V3,且其输出的 PWM 频率比其它 GPIO 低。且多片芯片的表现类似。: s( n+ L1 u1 W; T0 c 检查客户的原理图并未发现明显的问题。: A( s2 J$ b6 I" q : N5 ^2 J1 A: |9 {- f8 N8 L q ' z p. x l3 \$ c+ s9 g( ^ 02问题复现 测试配置:硬件测试平台 NUCLEO-STM32H563ZI。4 I% d7 s; H! |4 v2 b 软件工具版本: STM32CubeMX Version: 6.9.2 7 ^' C( j3 Q4 {! G! W STM32Cubeide Version: 1.13.27 R( z D& ]2 ^ 9 L* Q |+ m% n+ U* ?& B 2.1. 测试 1:PB14 开漏输出异常 # G& V, o- A; L, W 2.1.1. 测试配置 . L* W; [1 g% k' T, e: P% N 4 p2 x- G$ k4 c8 q' E; b, M ![]() ▲ 图1. PB14 配置 * V) ~" v# n# r ( L. d& q8 m# x8 Y3 L$ A 2.1.2. 测试结果 测试结果见图 2: 5 ?# g4 ?7 B2 N Q0 K ![]() ▲ 图2. PB14 输出波形& k; e2 ]" W5 \) `( J+ P* L 7 K& r7 g1 F+ e; M3 x: p& s 从测试结果看 PB14 无法上拉到 3V3,高电平只有 1.704V,似乎有个下拉电阻分了压。 1 d0 u9 F) q; f$ [6 `5 I+ _ * ?# \+ f. _. E 查看芯片的规格书 DS14258 Rev 1 Table 14. STM32H562xx and STM32H563xx pin/ball definition,关于 PB14 其 IO 定义如下图: - B6 p1 X, \; d" O+ } ![]() ▲ 图3. PB14 定义 ( A8 \; Z# Q2 E4 Q7 T5 d # X+ K3 J: p3 q- a0 | 7 o6 K7 d: g; _8 |; [ 其中_c 表示该 pin 脚具有 USB type-c PD 功能。$ ?8 {' c! F, V c J" c; \ $ X. e `# x. V8 L B' \; n) f2 V9 A 查找 RM0481 Rev1,查看 10.11.8 PWR USB Type-C power delivery register (PWR_UCPDR)寄存器描述如下: ![]() : a% U+ @. ~# v3 k8 [ ▲ 图4. UCPD_DBDIS 描述 , p2 A7 F D: P; j! J- u1 i2 E 根据 UCPD_DBDIS 的描述,当芯片退出复位时,对于 CC1,CC2 pin 默认下拉。这 也就解释了客户遇到的,开漏模式时无法上拉到 3.3V 的现象。% o' Y2 m* L/ W5 R6 y+ Q 修改测试代码,增加如下代码:
再次测试 PB14 输出,波形如下 3 V1 _+ d+ ^6 z, d u! R8 g % b' t3 }+ R# K' j1 g$ }7 N9 {: u ![]() 2 o+ g' \- ^& b ▲ 图5. PB14 输出的波形, z- j3 ^6 n& ?5 g I6 m1 F , D* [6 H& E$ O' d) k$ t4 z 此时的波形输出符合预期,测试正常。 ! L# P. A& }$ Y2 ~, Z5 h 2.2. 测试 2:PB14 的 PWM 输出频率低于其他的 GPIO8 v: \) k7 x- h A* \% T [0 J 使用 TIM12 在 PB14/PB15 作为 PWM 输出。对比管脚为 PB15。 ]3 N9 }+ s# K$ Y, i/ H! { ( p) U- Y! M; _" d) M- c# {; X X 2.2.1. GPIO 配置 1 ![]() n& C. q( _% D' _; j1 C ▲ 图6. PB14/PB15 配置 1 . ]( |8 R2 {5 N# F! U1 P - y# {/ C$ i* ?4 u6 _ ![]() / A4 \' R3 O" k5 J+ @8 { ▲ 图7. TIM12 配置 1 ; Q# c. ^. J3 Z$ ^; d 2.2.2. 测试结果 1 3 v/ }1 k1 o, q, V/ A/ I2 d4 ? ) `! i( I3 P1 i/ R ![]() ▲ 图8. PB14/PB15 输出波形图 1 此时 PB14 的 GPIO 输出为 0。修改 TIM12 的配置降低 PWM 频率再次测试。6 n6 w% F4 Z- {% P : G+ X% ^# b* v: q3 C* E5 } ![]() / m8 W% }" x P- h ▲ 图9. TM12 配置 2 T4 \' k/ d: B3 G8 a 2.2.3. 测试结果 2 5 W" V) g6 _4 m$ z9 l2 u ) `" C2 [& e9 a ![]() * K, d+ H. a% _& y& ]8 \" q- h# \ ▲ 图10. PB14/PB15 输出波形图 2 此时的 PB14 是有输出的但波形幅值变小,似乎是 GPIO 设置的速度的问题造成的,修改 GPIO 速度 Maximum output speed 为 medium,再次测试。波形图如下。 ![]() . X+ ^( b, `6 { ▲ 图11. PB14_medium PB15_low 输出波形图 9 E" e: z' @6 N 综合上述实验 1,2 可以看出 PB14 的输出 PWM 的最大频率确实是低于其它 GPIO 的。 03小结 由于 PB13,PB14 都连接到 USB PD,对于 PB14,PB13 的最大 GPIO 输出速度也是有 限制的,GPIO 输出速度只支持 low 和 medium, 最大 medium 速度为 10Mhz。关于这 些描述会添加在下一版本的 DS14258 中。. e C2 s8 J8 p% e: Z1 e- }5 I - k i" a& T8 E# Z- o4 n : o4 C, u# k1 v3 k, v; N 如有侵权请联系删除 3 R$ |' U; ^1 Q 转载自: 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