|
' c1 C9 z( G. U, V* r$ n% k# m 01问题背景 客户在使用 STM32H565 开发新项目的时候遇到一个问题,PB14 在开漏时无法上拉到 3V3,且其输出的 PWM 频率比其它 GPIO 低。且多片芯片的表现类似。, O/ F3 O7 y2 w" K3 |7 b) m 检查客户的原理图并未发现明显的问题。 / q/ r( u' ], {2 C4 Q' F9 c1 q# N 2 ]2 G+ h" T: Z- t2 P9 _ 02问题复现 测试配置:硬件测试平台 NUCLEO-STM32H563ZI。 m2 s9 d. a0 |3 }3 S. Y& b 软件工具版本: # n- e$ S( f- c9 s2 ~- { STM32CubeMX Version: 6.9.2 STM32Cubeide Version: 1.13.2( E' g! O- L" p % E" f6 Q0 L3 N% B7 G* z+ N& _ 2.1. 测试 1:PB14 开漏输出异常 2.1.1. 测试配置 ' K# ]# y9 R# A+ z9 {7 P; D3 g. O: X ; q8 L) U) f9 V
▲ 图1. PB14 配置8 S3 U4 a& x3 d; p `( ` 7 M& J- X1 l9 o0 t/ X* E 2.1.2. 测试结果 测试结果见图 2: / o6 e7 V) _! e: e
▲ 图2. PB14 输出波形' n3 E6 R- ^) i8 a: h- Z3 g 7 D, K5 M. w* Z: K5 M . l6 Q& a* o4 }9 E, z ~' ~ 从测试结果看 PB14 无法上拉到 3V3,高电平只有 1.704V,似乎有个下拉电阻分了压。 ( B# H9 N' m- s. J) K7 T 查看芯片的规格书 DS14258 Rev 1 Table 14. STM32H562xx and STM32H563xx pin/ball definition,关于 PB14 其 IO 定义如下图: 7 J5 A" I$ ^5 @7 D% Z% Y $ p% ~9 [+ v' i# T- o B2 y# i) r
) W% H8 o" p/ Q C ▲ 图3. PB14 定义 1 q- `: [) r# C) k4 C( B' M 其中_c 表示该 pin 脚具有 USB type-c PD 功能。* P# v+ n) E* I 查找 RM0481 Rev1,查看 10.11.8 PWR USB Type-C power delivery register (PWR_UCPDR)寄存器描述如下: 9 t- @3 [1 ^: `+ P7 U
▲ 图4. UCPD_DBDIS 描述 根据 UCPD_DBDIS 的描述,当芯片退出复位时,对于 CC1,CC2 pin 默认下拉。这 也就解释了客户遇到的,开漏模式时无法上拉到 3.3V 的现象。, z; d& G$ i: i+ O, }/ `% I6 p 修改测试代码,增加如下代码:2 h9 T8 Z# m2 _9 l7 V
: ?1 i+ M6 O1 A4 ` q/ Z X 再次测试 PB14 输出,波形如下 " X6 F% H; j3 K+ X$ y9 r4 W
4 {3 X$ I( _; z0 I9 ~ ▲ 图5. PB14 输出的波形 此时的波形输出符合预期,测试正常。 4 w {8 A$ }2 L9 R ; t; P& p8 S8 ^) D- v ' X4 P* ]7 t7 _% M: Z% n * E% Y5 [& g2 x- H( u j2 o7 p- b 2.2. 测试 2:PB14 的 PWM 输出频率低于其他的 GPIO9 ~+ d( B' q* }: t! T0 f" E 使用 TIM12 在 PB14/PB15 作为 PWM 输出。对比管脚为 PB15。2 a8 e1 V7 E% B R, m6 } 2.2.1. GPIO 配置 1 + {8 m$ {' `$ G- k# c: ~: ]4 i6 X! Y 1 ` S8 X6 c8 \! f, F/ D) _% Y
8 f% Z6 e3 Z( _ ▲ 图6. PB14/PB15 配置 1
▲ 图7. TIM12 配置 1& ^8 X K T; G7 g ! c6 q; v N/ h6 E+ f 2.2.2. 测试结果 1
▲ 图8. PB14/PB15 输出波形图 1 9 d2 ^/ i0 S2 Z* x; p! I6 U* C# k 此时 PB14 的 GPIO 输出为 0。修改 TIM12 的配置降低 PWM 频率再次测试。4 \6 a3 h' F7 G" a7 M4 h8 s# M ) u" @ M+ }, S) Y' Q0 K% h ' ^: _0 ]# Y! P6 r1 w9 u
▲ 图9. TM12 配置 2 % ?1 @) j1 H2 ], E2 j' K0 k 4 }/ J( r q5 V8 ` 2.2.3. 测试结果 2 ; b8 z. T% Z3 w; p S& ` ) [ W2 x( k( V% c
3 x! E s1 ]" {" ]+ E9 _; c: C ▲ 图10. PB14/PB15 输出波形图 2 + N3 [/ I9 Y' w9 F( n# Y 1 h+ g/ b g/ }0 L 此时的 PB14 是有输出的但波形幅值变小,似乎是 GPIO 设置的速度的问题造成的,修改 GPIO 速度 Maximum output speed 为 medium,再次测试。波形图如下。$ P* m/ D; E) r s- j & o8 H* H8 ]+ y3 u) Y9 D
▲ 图11. PB14_medium PB15_low 输出波形图 5 e# a7 z+ G, L u) j6 I4 M 综合上述实验 1,2 可以看出 PB14 的输出 PWM 的最大频率确实是低于其它 GPIO 的。( K* l# D; z- q. M % ^: X4 O2 p; D' K/ I 03小结 由于 PB13,PB14 都连接到 USB PD,对于 PB14,PB13 的最大 GPIO 输出速度也是有 限制的,GPIO 输出速度只支持 low 和 medium, 最大 medium 速度为 10Mhz。关于这 些描述会添加在下一版本的 DS14258 中。- G+ T. j K3 J0 g$ M . b/ |0 t, W5 h( F l1 u3 c) Z' L3 M9 ?$ p/ h* |. n 如有侵权请联系删除' n6 t# A3 [3 }+ _ 转载自: STM32& N9 `6 p/ R( a$ l, @ : C" f) m4 S" ^3 ~ E6 ` Q |
【NUCLEO-H533RE评测】-01-开箱及资料准备
【STM32H503评测】+基于STM32CubeMX生成工程点灯
实战经验 | LAT1585 STM32H5在使能TrustZone下实现High-Cycle的数据存储
详解STM32单片机的堆栈
STM32大神笔记,超详细单片机学习汇总资料
小白也能明白的STM32的低功耗与唤醒机制
STM32芯片命名规则
STM32 引脚到底有多少?为什么一个引脚能当好几个用?
STM32时钟详解
经验分享 | STM32H563 SPI DMA应用演示
微信公众号
手机版