fcccc 发表于 2021-6-9 22:29

如何测量周期变化的PWM信号占空比

本帖最后由 fcccc 于 2021-6-9 22:31 编辑

问题:
使用的TIM3输入捕捉,上升下降沿都触发中断,中断读取捕获值,来测量一个周期和占空比都变化的PWM信号的占空比;
频率从500HZ~2Khz,占空比从0~100%;实时性要求需要在2个周期内测出来准确的占空比.
遇到的麻烦是当占空比很低,或者很高的时候,也就是下降沿和上升沿时间间隔非常小,定时器输入捕捉无法准确抓到两个相邻边沿,偶尔丢失一个边沿就造成本来接近99.9%的占空比测成了50%;

有什么好的解决办法吗?

lidi911 发表于 2021-6-10 07:44

用FPGA或CPLD做就很好实现

fcccc 发表于 2021-6-10 09:42

lidi911 发表于 2021-6-10 07:44
用FPGA或CPLD做就很好实现

不现实

tanleitanlei 发表于 2021-6-10 10:47

本帖最后由 tanleitanlei 于 2021-6-10 10:48 编辑

可以参考bsp内,Pwm输入捕获demo。感觉你这种中断内获取数据的处理方式在极限情况下获取捕获的数据容易覆盖

fcccc 发表于 2021-6-10 11:14

tanleitanlei 发表于 2021-6-10 10:47
可以参考bsp内,Pwm输入捕获demo。感觉你这种中断内获取数据的处理方式在极限情况下获取捕获的数据容易覆盖 ...

就是这个意思,在极限位置容易出错.

tanleitanlei 发表于 2021-6-10 11:44

fcccc 发表于 2021-6-10 11:14
就是这个意思,在极限位置容易出错.

所以用bsp内的pwm输入捕获demo,这种模式捕获的值存在cc1和cc2两个寄存器内的,中断内获取这两个寄存器值,然后计算。应该可以解决问题

fanwei700615 发表于 2021-6-10 17:22

把输入捕获的频率拉到最高

别看我照片 发表于 2021-6-10 18:14

这个很重要,没有必要的。

勇者无惧你和我 发表于 2021-6-11 08:31

最好是使用信号发生器来进行处理,要比较好一些了。

zhamatu 发表于 2021-6-11 10:28

数据手册上有长时间或短时间的解决方案的。当然有些时候需要你软件上做智慧的处理的。

wangshujun 发表于 2021-6-11 14:26

最小周期如果小于一次中断的处理时间就会出问题,否则都应该是稳定的
使用定时器捕获实现难度不大,如果周期太短,比如1兆以上的频率,需要把定时器捕获送入到dma,在dma的中断中可以完成10兆左右的捕获

fcccc 发表于 2021-6-15 15:35

wangshujun 发表于 2021-6-11 14:26
最小周期如果小于一次中断的处理时间就会出问题,否则都应该是稳定的
使用定时器捕获实现难度不大,如果周 ...

好的多谢指点,这个方法应该可以.

可爱的烧饼 发表于 2021-6-15 17:13

最好是使用信号发生器。
页: [1]
查看完整版本: 如何测量周期变化的PWM信号占空比