gpt4 book ai didi

stm32F4 pwm 输入捕捉高频信号约。 2兆赫?

转载 作者:行者123 更新时间:2023-12-01 09:49:25 25 4
gpt4 key购买 nike

我想测量 PWM 信号的频率。为此,我使用了 STM-F401RE 及其 Timer_Input_Capture 函数。

问题是:

  • 输入信号具有相当高的频率(大约 2MHz),并且,
  • STM-F401RE Controller 只有一个 80MHz 的时钟

因此,当使用中断例程来计算输入信号上升沿的数量时,它会错过许多上升沿(取决于输入信号的频率)。当使用示波器并切换 I/O 引脚时,我看到它只能在频率低于 400kHz 时捕获所有上升沿。

问题是:如何克服这个问题?还是有另一种方法来测量高频输入 PWM 信号?

谢谢

最佳答案

您需要将定时器设置为 PWM 输入而不是捕获输入(例如 TIM1 可以做到)。这样,使用了 2 个 channel (但您只有一个物理连接)。基本上,第一个 channel 会为您提供周期,第二个 channel 会为您提供脉搏。计数器会自动重置。

初始化函数:

void tim_init()
{
TIM_SlaveConfigTypeDef sSlaveConfig;
TIM_IC_InitTypeDef sConfigIC;
TIM_MasterConfigTypeDef sMasterConfig;

htim1.Instance = TIM1;
htim1.Init.Prescaler = 0;
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
htim1.Init.Period = 65535;
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim1.Init.RepetitionCounter = 0;
HAL_TIM_IC_Init(&htim1);

sSlaveConfig.SlaveMode = TIM_SLAVEMODE_RESET;
sSlaveConfig.InputTrigger = TIM_TS_TI2FP2;
sSlaveConfig.TriggerPolarity = TIM_INPUTCHANNELPOLARITY_RISING;
sSlaveConfig.TriggerPrescaler = TIM_ICPSC_DIV1;
sSlaveConfig.TriggerFilter = 0;
HAL_TIM_SlaveConfigSynchronization(&htim1, &sSlaveConfig);

sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_FALLING;
sConfigIC.ICSelection = TIM_ICSELECTION_INDIRECTTI;
sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
sConfigIC.ICFilter = 0;
HAL_TIM_IC_ConfigChannel(&htim1, &sConfigIC, TIM_CHANNEL_1);

sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING;
sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
HAL_TIM_IC_ConfigChannel(&htim1, &sConfigIC, TIM_CHANNEL_2);

sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig);

//Enable interrupt
HAL_TIM_IC_Start_IT(&htim1, TIM_CHANNEL_2);
HAL_TIM_IC_Start(&htim1, TIM_CHANNEL_1);
}

中断处理程序

void tim_irq()
{
period = HAL_TIM_ReadCapturedValue(&htim1, TIM_CHANNEL_2);
pulse = HAL_TIM_ReadCapturedValue(&htim1, TIM_CHANNEL_1);

//First irq to be ignored
}

关于stm32F4 pwm 输入捕捉高频信号约。 2兆赫?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41262460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com