找回密码
 立即注册
查看: 52|回复: 7

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

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-07-25 08:58:54
已绑定手机

2

主题

13

回帖

80

积分

注册会员

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


水泵正常停止时波形.jpg
图 3  放大杂波信号.jpg
图 5 杂波宽度 2.4us左右.jpg
图1  单片机捕获输入信号 P3-Feedback.png
图2  正常波形.jpg
图4 杂波貌似有规律.jpg
图5 出现大量杂波.jpg
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:532
  • 最近打卡:2025-07-31 14:15:17
已绑定手机
已实名认证

116

主题

2499

回帖

6450

积分

版主

积分
6450
发表于 7 天前 | 显示全部楼层
截图202507250917032119.jpg

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-07-25 08:58:54
已绑定手机

2

主题

13

回帖

80

积分

注册会员

积分
80
发表于 7 天前 | 显示全部楼层
王*** 发表于 2025-7-25 09:17
试试修改一下对应通道的CCMR寄存器,可以设置滤波宽度,将滤波宽度增大一点可能会好一些
...

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

点评

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:532
  • 最近打卡:2025-07-31 14:15:17
已绑定手机
已实名认证

116

主题

2499

回帖

6450

积分

版主

积分
6450
发表于 7 天前 | 显示全部楼层
nange*** 发表于 2025-7-25 10:12
我现在主频是 24MHz,CCP分频系数为 24,也就是说 CCP运行频率是 1MHz,我如果把ICnF设置为 1111的话,是 ...

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-07-25 08:58:54
已绑定手机

2

主题

13

回帖

80

积分

注册会员

积分
80
发表于 7 天前 | 显示全部楼层
王*** 发表于 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计数器

点评

这个是PWM模块的输入捕获功能  详情 回复 发表于 7 天前
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:137
  • 最近打卡:2025-07-31 12:11:20

76

主题

6281

回帖

1万

积分

超级版主

积分
13347
发表于 7 天前 | 显示全部楼层
对于电机类信号,硬件一定要加适当的滤波,通常就是RC即可,滤掉一些尖峰干扰,如下图,IO输入口对地增加电容10nF~100nF(根据滤除的信号宽度选择)。

截图202507251050014805.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-07-25 08:58:54
已绑定手机

2

主题

13

回帖

80

积分

注册会员

积分
80
发表于 7 天前 | 显示全部楼层
梁*** 发表于 2025-7-25 10:58
对于电机类信号,硬件一定要加适当的滤波,通常就是RC即可,滤掉一些尖峰干扰,如下图,IO输入口对地增加电 ...

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:532
  • 最近打卡:2025-07-31 14:15:17
已绑定手机
已实名认证

116

主题

2499

回帖

6450

积分

版主

积分
6450
发表于 7 天前 | 显示全部楼层
nange*** 发表于 2025-7-25 10:56
下面是我的程序,应该是 CCP捕获吧?       

这个是PWM模块的输入捕获功能
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-8-1 01:41 , Processed in 0.130327 second(s), 93 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表