- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想测量 PWM 信号的频率。为此,我使用了 STM-F401RE 及其 Timer_Input_Capture 函数。
问题是:
因此,当使用中断例程来计算输入信号上升沿的数量时,它会错过许多上升沿(取决于输入信号的频率)。当使用示波器并切换 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/
我有一个关于 Arduino 的一般性问题,如何每秒使用 AnalogRead() 读取一定次数的传感器值。每秒说 10 次,并且还不断地向电机输出 PWM。 如果我尝试延迟循环(),它会影响我与 A
我正在使用 iMX6Q SD 板。而且我必须访问背光驱动程序来控制背光对比度。如何从用户空间或内核空间访问? (背光PWM驱动路径为drivers/video/backlight/pwm_bl.c)。
这应该是一个简单的公式,但我无法理解。 我有一个 16mHZ AVR 芯片。 我需要运行一个 24kHZ 的 PWM 信号.. 决定最佳预分频器的公式是什么。 我正在使用 16 位定时器。 最佳答案
我试图将PWM用于端口B的任何引脚上的ATmega8上的LED。设置计时器一直很烦人,我不知道该如何处理OCR1A。这是我的代码,我希望收到一些反馈。 我只是想弄清楚如何使用PWM。我知道这个概念,O
我一直在 ATMega328P 上试验 PWM 波形生成模式。我得到了一些奇怪的结果,我无法确定是我编写固件的方式有问题还是我解释 datasheet 的方式有问题。 . 这是我为模拟 analogW
我想测量 PWM 信号的频率。为此,我使用了 STM-F401RE 及其 Timer_Input_Capture 函数。 问题是: 输入信号具有相当高的频率(大约 2MHz),并且, STM-F401
我正在使用 MPC 7555 Controller 。它有一个 16 位 Σ-Δ ADC。称为麦克风输入的信号被馈送到该 ADC 引脚。根据该电压,产生与ADC信号采样频率相同的PWM信号。 For
我想创建一个 PWM 信号。我希望频率接近 38 kHz。我的理论计算周期是 26.3 微秒。所以我选择26微秒。我可以观察我的信号。 但我不明白我的代码如何正常工作:) (我的时钟频率是1MHz,所
我正在尝试编写一个程序来生成正弦波,我将通过被动夏季输出这些正弦波,从而在我按下按钮时让微 Controller 播放声音。 我已经让 PWM 正常工作,并且可以使用常量值演奏音符,但我想使用正弦波而
我可能只是在使用这些寄存器之一时遇到了一个看不见森林的时刻,但我无法让 PWM 在 dsPIC33FJ32MC102 上工作微 Controller (警告:大 PDF)我正在玩。我已经遵循了数据表和
如何将字符串输出为列表? (可能很简单,我知道) 我查看了所有 google,NONE 的解决方案有效。 我的代码:(有点意译) import Pmw from tkinter import * ro
我正在尝试为每个对角线(在我的例子中为 PWM1 和 PWM4)使用一个 PWM 发生器来控制 H 桥转换器。 我希望能够同时控制频率和占空比。为此,我在 PWM4 周期开始时生成触发中断,然后更新两
在 Atmel ATmega328P (datasheet) 上,有三个定时器可用于 PWM 生成(定时器 0、定时器 1 和定时器 2)。 我已经有了使用 8 位 timer2 所需的东西,我只关心
我正在尝试用蜂鸣器和 Arduino 制作和弦音乐播放器。我在关注 this教程作为指南,但我无法弄清楚。代码就像: void playTone() { long elapsed_time =
我有一个 STM32F4,我想对一个已与掩码进行“或”运算的 GPIO 端口进行 PWM 处理。 所以,也许我们想要以 200khz 的频率 PWM 0b00100010 一段时间,但是,10khz
我建了this motor shield基于L298N芯片控制坦克的两个电机。一个电机使用引脚 5 和 6,另一个电机使用引脚 10 和 11。 尝试添加TSOP 4838时为了用红外 Remote
我有一个 STM32F4,我想对一个已与掩码进行“或”运算的 GPIO 端口进行 PWM 处理。 所以,也许我们想要以 200khz 的频率 PWM 0b00100010 一段时间,但是,10khz
我是 ARM MCU (STM32F411) 的新手,我一直在尝试使用 STM 的 HAL 库和 STM32Cube 寻找外围设备的方法。 为了使用一些外围设备,我已经配置了我的开发板: Timer
Raspberry pi B+ 有四个硬件 PWM。如何在 C/C++ 中使用它们。解决方案越简单越好。 我用 WiringPi 找到了一个可行的解决方案 gpio mode 1 pwm gpio
我一直在尝试在 PIC16F877 MCU 上使用 PWM 模块,但我得到的只是 CCP1/CCP2 引脚上的平坦低电平。 配置和启动 PWM 模块的代码如下。 // Configure PWM //
我是一名优秀的程序员,十分优秀!