CCP捕获后通过IO口输出,偶尔出现杂波问题
STC8H8K64U单片机通过 PWM1P输入端捕获水泵的反馈信号P3-Feedback,硬件接线图见图1. 捕获中断发生时进中断将 IO口同步反转,来还原捕获的信号。示波器通道1是捕获完成后通过IO口还原出来的信号,通道2是直接测的水泵输出的反馈信号 P3-Feedback,正常运行时如图2.
在长期运行时,通过 IO还原出来的信号上会有杂波出现,如图3和图4,但是通道2直接测的是水泵的反馈信号,看上去是没有出现杂波的。有时杂波会出现的特别多,
如图5,在低电平会大量出现杂波,设备已经无法正常工作。经放大后观察,杂波宽度在 2.4us左右,不知道是什么原因,麻烦大佬帮忙给支个招吧,谢谢
试试修改一下对应通道的CCMR寄存器,可以设置滤波宽度,将滤波宽度增大一点可能会好一些
王昱顺 发表于 2025-7-25 09:17
试试修改一下对应通道的CCMR寄存器,可以设置滤波宽度,将滤波宽度增大一点可能会好一些
...
我现在主频是 24MHz,CCP分频系数为 24,也就是说 CCP运行频率是 1MHz,我如果把ICnF设置为 1111的话,是什么意思啊?256个时钟是做什么的啊?
nanger1984 发表于 2025-7-25 10:12
我现在主频是 24MHz,CCP分频系数为 24,也就是说 CCP运行频率是 1MHz,我如果把ICnF设置为 1111的话,是 ...
需要明确一个问题,你现在用的是CCP还是PWM捕获?这是两个不同的外设
接下来解答你的问题,这个时钟数是用来维持稳定用的,意思就是等待256个时钟都采样到同样的电平才会确认当前的电平,相当于加了一个小电容来平滑毛刺,这样捕获就稳定了 王昱顺 发表于 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计数器 对于电机类信号,硬件一定要加适当的滤波,通常就是RC即可,滤掉一些尖峰干扰,如下图,IO输入口对地增加电容10nF~100nF(根据滤除的信号宽度选择)。
梁工 发表于 2025-7-25 10:58
对于电机类信号,硬件一定要加适当的滤波,通常就是RC即可,滤掉一些尖峰干扰,如下图,IO输入口对地增加电 ...
好的,梁工,我按照您的要求都加上两个 103电容试一下效果 nanger1984 发表于 2025-7-25 10:56
下面是我的程序,应该是 CCP捕获吧?
这个是PWM模块的输入捕获功能
页:
[1]