实战经验 | STM32H5 PB14输出波形异常分析

cathy的头像
cathy 发布于:周三, 06/26/2024 - 14:53 ,关键词:

01、问题背景

客户在使用 STM32H565 开发新项目的时候遇到一个问题,PB14 在开漏时无法上拉到 3V3,且其输出的 PWM 频率比其它 GPIO 低。且多片芯片的表现类似。

检查客户的原理图并未发现明显的问题。

02、问题复现

测试配置:硬件测试平台 NUCLEO-STM32H563ZI。

软件工具版本: 

  • STM32CubeMX Version: 6.9.2 

  • STM32Cubeide Version: 1.13.2

2.1. 测试 1:PB14 开漏输出异常 

2.1.1. 测试配置 
1.png
▲ 图1. PB14 配置

2.1.2. 测试结果

测试结果见图 2: 

2.png

▲ 图2. PB14 输出波形

从测试结果看 PB14 无法上拉到 3V3,高电平只有 1.704V,似乎有个下拉电阻分了压。

查看芯片的规格书 DS14258 Rev 1 Table 14. STM32H562xx and STM32H563xx pin/ball definition,关于 PB14 其 IO 定义如下图:

3.png
▲ 图3. PB14 定义 

其中_c 表示该 pin 脚具有 USB type-c PD 功能。

查找 RM0481 Rev1,查看 10.11.8 PWR USB Type-C power delivery register (PWR_UCPDR)寄存器描述如下:

4.png

▲ 图4. UCPD_DBDIS 描述 

根据 UCPD_DBDIS 的描述,当芯片退出复位时,对于 CC1,CC2 pin 默认下拉。这 也就解释了客户遇到的,开漏模式时无法上拉到 3.3V 的现象。

修改测试代码,增加如下代码:

/* USER CODE BEGIN 2 */ 
SET_BIT(PWR->UCPDR, PWR_UCPDR_UCPD_DBDIS); 
/* USER CODE END 2 */
再次测试 PB14 输出,波形如下 
5.png
▲ 图5. PB14 输出的波形

此时的波形输出符合预期,测试正常。 

2.2. 测试 2:PB14 的 PWM 输出频率低于其他的 GPIO

使用 TIM12 在 PB14/PB15 作为 PWM 输出。对比管脚为 PB15。

2.2.1. GPIO 配置 1 

6.png

▲ 图6. PB14/PB15 配置 1 

7.png

▲ 图7. TIM12 配置 1

2.2.2. 测试结果 1 

8.png

▲ 图8. PB14/PB15 输出波形图 1 

此时 PB14 的 GPIO 输出为 0。修改 TIM12 的配置降低 PWM 频率再次测试。

9.png

▲ 图9. TM12 配置 2 

2.2.3. 测试结果 2 

10.png

▲ 图10. PB14/PB15 输出波形图 2 

此时的 PB14 是有输出的但波形幅值变小,似乎是 GPIO 设置的速度的问题造成的,修改 GPIO 速度 Maximum output speed 为 medium,再次测试。波形图如下。

11.png

▲ 图11. PB14_medium PB15_low 输出波形图 

综合上述实验 1,2 可以看出 PB14 的输出 PWM 的最大频率确实是低于其它 GPIO 的。

03、小结

由于 PB13,PB14 都连接到 USB PD,对于 PB14,PB13 的最大 GPIO 输出速度也是有 限制的,GPIO 输出速度只支持 low 和 medium, 最大 medium 速度为 10Mhz。关于这 些描述会添加在下一版本的 DS14258 中。

来源:STM32

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 55