nanger1984 发表于 2025-7-25 08:58:54

CCP捕获后通过IO口输出,偶尔出现杂波问题

STC8H8K64U单片机通过 PWM1P输入端捕获水泵的反馈信号P3-Feedback,硬件接线图见图1. 捕获中断发生时进中断将 IO口同步反转,来还原捕获的信号。
示波器通道1是捕获完成后通过IO口还原出来的信号,通道2是直接测的水泵输出的反馈信号 P3-Feedback,正常运行时如图2.
在长期运行时,通过 IO还原出来的信号上会有杂波出现,如图3和图4,但是通道2直接测的是水泵的反馈信号,看上去是没有出现杂波的。有时杂波会出现的特别多,
如图5,在低电平会大量出现杂波,设备已经无法正常工作。经放大后观察,杂波宽度在 2.4us左右,不知道是什么原因,麻烦大佬帮忙给支个招吧,谢谢


王昱顺 发表于 2025-7-25 09:17:30



试试修改一下对应通道的CCMR寄存器,可以设置滤波宽度,将滤波宽度增大一点可能会好一些

nanger1984 发表于 2025-7-25 10:12:01

王昱顺 发表于 2025-7-25 09:17
试试修改一下对应通道的CCMR寄存器,可以设置滤波宽度,将滤波宽度增大一点可能会好一些
...

我现在主频是 24MHz,CCP分频系数为 24,也就是说 CCP运行频率是 1MHz,我如果把ICnF设置为 1111的话,是什么意思啊?256个时钟是做什么的啊?

王昱顺 发表于 2025-7-25 10:15:24

nanger1984 发表于 2025-7-25 10:12
我现在主频是 24MHz,CCP分频系数为 24,也就是说 CCP运行频率是 1MHz,我如果把ICnF设置为 1111的话,是 ...

需要明确一个问题,你现在用的是CCP还是PWM捕获?这是两个不同的外设
接下来解答你的问题,这个时钟数是用来维持稳定用的,意思就是等待256个时钟都采样到同样的电平才会确认当前的电平,相当于加了一个小电容来平滑毛刺,这样捕获就稳定了

nanger1984 发表于 2025-7-25 10:56:38

王昱顺 发表于 2025-7-25 10:15
需要明确一个问题,你现在用的是CCP还是PWM捕获?这是两个不同的外设
接下来解答你的问题,这个时钟数是 ...

下面是我的程序,应该是 CCP捕获吧?       


       //PWMA捕获两路反馈信号:P1-PWM1P, P2-PWM3P
        //CC1/3:捕获上升沿、CC2/4:捕获下降沿故障信号:75Hz(周期13.33ms)
       
        PWMA_PSCR= 23;                                                // 预分频:23+1 = 24
        PWMA_CCER1 = 0x00;                                        // 关闭通道
        PWMA_CCMR1 = 0xF1;                                         // CC1通道配置为输入,映射在TI1FP1上,256个时钟滤波
        PWMA_CCMR2 = 0xF2;                                         // CC2通道配置为输入,映射在TI1FP2上,256us保持稳态
        PWMA_CCER1 = 0x11;                                        // 使能CC1、CC2通道捕获功能
        PWMA_CCER1 |= 0x00;                                        // 设置CC1捕获上升沿:获得周期数据
        PWMA_CCER1 |= 0x20;                                        // 设置CC2捕获下降沿:获得高电平时间               
        PWMA_CCER2 = 0x00;
        PWMA_CCMR3 = 0xF1; //CC3 为输入模式,且映射到 TI3FP3 上
        PWMA_CCMR4 = 0xF2; //CC4 为输入模式,且映射到 TI3FP4 上
        PWMA_CCER2 = 0x11; //使能 CC3、CC4 上的捕获功能
        PWMA_CCER2 |= 0x00; //设置捕获极性为 CC3 的上升沿
        PWMA_CCER2 |= 0x20; //设置捕获极性为 CC4 的下降沿

        PWMA_IER = 0x1E;              //使能 CC1/CC2/CC3/CC4 捕获中断
        PWMA_CR1 |= 0x01;                 // 使能PWMA计数器

梁工 发表于 2025-7-25 10:58:01

对于电机类信号,硬件一定要加适当的滤波,通常就是RC即可,滤掉一些尖峰干扰,如下图,IO输入口对地增加电容10nF~100nF(根据滤除的信号宽度选择)。



nanger1984 发表于 2025-7-25 11:13:42

梁工 发表于 2025-7-25 10:58
对于电机类信号,硬件一定要加适当的滤波,通常就是RC即可,滤掉一些尖峰干扰,如下图,IO输入口对地增加电 ...

好的,梁工,我按照您的要求都加上两个 103电容试一下效果

王昱顺 发表于 2025-7-25 12:27:40

nanger1984 发表于 2025-7-25 10:56
下面是我的程序,应该是 CCP捕获吧?       




这个是PWM模块的输入捕获功能
页: [1]
查看完整版本: CCP捕获后通过IO口输出,偶尔出现杂波问题