打印
[STM32F7]

外部信号经过电路元件后幅值变小,无法被STM32正确捕获

[复制链接]
453|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jzzllv|  楼主 | 2024-6-29 21:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在使用STM32F723ZET6的TIM捕获外部信号的上升沿时,确实可能会遇到信号幅值变小的问题。如果外部信号经过电路元件后幅值变小,可能无法被STM32正确捕获。这种情况下,将输入捕获通道的GPIO设置为上拉可能是一个解决方法。

上拉和输入捕获的冲突
上拉电阻的作用是在引脚没有驱动电压时提供一个稳定的高电平。然而,输入捕获模式和上拉配置之间可能存在冲突。具体来说,当使能输入捕获功能后,引脚的配置可能会被硬件重新配置,从而影响上拉电阻的作用。

使用特权

评论回复
沙发
jzzllv|  楼主 | 2024-6-29 21:07 | 只看该作者
解决方法
外部上拉电阻:可以尝试在外部电路中添加一个上拉电阻,而不是依赖内部的上拉配置。这将确保信号在到达STM32引脚时有足够的幅值。

信号放大:如果信号幅值过小,可以考虑在信号路径中加入放大电路(例如运算放大器)以提高信号幅值,使其能够被STM32正确捕获。

GPIO配置:

在初始化GPIO时,先配置为上拉输入,然后再配置为TIM输入捕获模式。
确保在配置TIM输入捕获模式之前,正确地配置了GPIO引脚的上拉设置。

使用特权

评论回复
板凳
jzzllv|  楼主 | 2024-6-29 21:11 | 只看该作者
示例代码
以下是一个简单的代码示例,展示如何配置GPIO引脚为上拉输入,然后配置为TIM输入捕获模式:

c
#include "stm32f7xx_hal.h"

// 假设TIM2的CH1用作输入捕获
void TIM_InputCapture_Init(void) {
    __HAL_RCC_TIM2_CLK_ENABLE();
    __HAL_RCC_GPIOA_CLK_ENABLE();

    GPIO_InitTypeDef GPIO_InitStruct;
   
    // 1. 配置GPIO为上拉输入
    GPIO_InitStruct.Pin = GPIO_PIN_0;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_PULLUP;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    // 2. 配置GPIO为TIM输入捕获模式
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    TIM_HandleTypeDef htim2;
    TIM_IC_InitTypeDef sConfigIC;

    // 初始化TIM2
    htim2.Instance = TIM2;
    htim2.Init.Prescaler = 0;
    htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
    htim2.Init.Period = 0xFFFF;
    htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
    HAL_TIM_IC_Init(&htim2);

    // 配置输入捕获通道
    sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING;
    sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
    sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
    sConfigIC.ICFilter = 0;
    HAL_TIM_IC_ConfigChannel(&htim2, &sConfigIC, TIM_CHANNEL_1);

    // 启动输入捕获中断
    HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_1);
}


使用特权

评论回复
地板
jzzllv|  楼主 | 2024-6-29 21:15 | 只看该作者
通过这种方法,确保在启用TIM输入捕获功能之前,GPIO引脚已经配置为上拉输入,可以缓解上拉和输入捕获之间的冲突。添加外部上拉电阻和信号放大电路也是有效的解决方案。

使用特权

评论回复
5
szt1993| | 2024-6-30 08:39 | 只看该作者
上拉电阻的作用是在引脚没有驱动电压时提供一个稳定的高电平。

使用特权

评论回复
6
stormwind123| | 2024-8-13 17:19 | 只看该作者
电路元件的问题?

使用特权

评论回复
7
laocuo1142| | 2024-8-13 17:20 | 只看该作者
如果信号的幅值太小,你可以考虑在STM32的输入端之前添加一个信号放大器。

使用特权

评论回复
8
flycamelaaa| | 2024-8-13 17:20 | 只看该作者
使用适当的滤波

使用特权

评论回复
9
powerantone| | 2024-8-13 17:21 | 只看该作者
信号源有问题?

使用特权

评论回复
10
probedog| | 2024-8-13 17:21 | 只看该作者
咨询技术支持

使用特权

评论回复
11
狄克爱老虎油| | 2024-8-17 23:55 | 只看该作者
把信号放大一下再采集

使用特权

评论回复
12
花间一壶酒sd| | 2024-8-31 22:07 | 只看该作者
这种问题的解决方案可以包括调整输入信号的电平或使用上拉电阻来确保信号稳定。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

49

帖子

0

粉丝