找回密码
 立即注册
楼主: 神农鼎

如何测量72MHz以下的外部信号,STC32的144MHz的高速PWM

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:106
  • 最近打卡:2025-06-28 00:08:16

75

主题

6163

回帖

1万

积分

超级版主

积分
12932
发表于 2024-1-14 23:02:34 | 显示全部楼层
flas*** 发表于 2024-1-14 20:31
楼主,请问两个问题:
1、在使用高速高级PWM进行捕获时,捕获数值的寄存器的时钟源是按系统时钟计时还是按 ...

1、在使用高速高级PWM进行捕获时,捕获数值的寄存器的时钟源是按PLL时钟。

2、PWMA、PWMB是两组相互独立的PWM,各自操作互不干涉,PWM7/8属于PWMB,PWM1P疏于PWMA,各自为政。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-03-20 09:06:34

2

主题

3

回帖

144

积分

注册会员

积分
144
发表于 2024-1-15 16:19:30 | 显示全部楼层
本帖最后由 flashlix 于 2024-1-15 16:23 编辑

收到,谢谢大师解惑。另外,请问下梁工,STC32G12K128用外部12M无源晶振 ±10ppm作为时钟源,PLL后时钟的精度咋样?有这方面的数据没有呢?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:274
  • 最近打卡:2025-06-27 10:04:37

3

主题

155

回帖

655

积分

高级会员

积分
655
发表于 2024-2-25 22:10:59 | 显示全部楼层
学习了
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-03-25 08:44:33
已绑定手机

9

主题

17

回帖

92

积分

注册会员

积分
92
发表于 2024-11-12 16:44:21 | 显示全部楼层
我想问下 stc32能输出20mhz左右的方波信号吗,有实现过的大佬吗。
要求频率可调

点评

可以,要工作在 5V, STC32G8K64, 直接工作在 40MHz, 2分频输出时钟  详情 回复 发表于 2024-11-12 16:56
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:112
  • 最近打卡:2025-06-29 00:35:48

740

主题

1万

回帖

1万

积分

管理员

积分
17153
发表于 2024-11-12 16:56:55 | 显示全部楼层
sjh*** 发表于 2024-11-12 16:44
我想问下 stc32能输出20mhz左右的方波信号吗,有实现过的大佬吗。
要求频率可调
...

可以,要工作在 5V, STC32G8K64, 直接工作在 40MHz, 2分频输出时钟
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-03-25 08:44:33
已绑定手机

9

主题

17

回帖

92

积分

注册会员

积分
92
发表于 2024-11-12 18:58:41 | 显示全部楼层
神*** 发表于 2024-11-12 16:56
可以,要工作在 5V, STC32G8K64, 直接工作在 40MHz, 2分频输出时钟

哦,我想问下能不能输出可调占空比的pwm,比如输出20mhz,占空比可以改变寄存器值来控制的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-06-25 16:37:57

2

主题

7

回帖

46

积分

新手上路

积分
46
发表于 2025-6-17 09:44:43 | 显示全部楼层
梁*** 发表于 2024-1-14 23:02
1、在使用高速高级PWM进行捕获时,捕获数值的寄存器的时钟源是按PLL时钟。

2、PWMA、PWMB是两组相互独立 ...

楼主,请教一下,我用的你的参考程序的配置,测出来的频率,用的还是系统时钟频率来计数的,不是pll的频率来计数的,请问怎么才能用pll的时钟给计数器计数呢?

点评

PLL个PWM时钟,请参考“板凳”楼层的程序。  详情 回复 发表于 2025-6-17 10:15
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:106
  • 最近打卡:2025-06-28 00:08:16

75

主题

6163

回帖

1万

积分

超级版主

积分
12932
发表于 2025-6-17 10:15:05 | 显示全部楼层
zuod*** 发表于 2025-6-17 09:44
楼主,请教一下,我用的你的参考程序的配置,测出来的频率,用的还是系统时钟频率来计数的,不是pll的频率 ...

PLL个PWM时钟,请参考“板凳”楼层的程序。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-06-25 16:37:57

2

主题

7

回帖

46

积分

新手上路

积分
46
发表于 2025-6-17 13:29:12 | 显示全部楼层
zh*** 发表于 2023-3-14 17:41
STC32G系列单片机的高速PWM可以和CPU工作在不同频率
STC32G12K128系列CPU最高工作频率可达35MHz
STC32G8K64 ...

楼主刚才的问题应该是解决了,144MHz作为计数器的基频,现在问题是,测量低一点的频率,计数器溢出,那么计数器溢出中断怎么配置的?WritePWMA((char)&PWMA_CR1, 0x03); //开始计时,允许计时器溢出更新中断这个配置对吗?中断里面                sta = ReadPWMA((char)&PWMA_SR1);
          if(sta & 0X01)//计时器溢出事件中断
    {
                        jishiyichunum++;
                }这样检测对吗?实测没有效果
我是捕获cc1的周期的,中断程序如下:

/*捕获中断、事件更新中断*/
void PWMA_ISR() interrupt 26
{
                u32 cnt;
                u8 sta;
                sta = ReadPWMA((char)&PWMA_SR1);
          if(sta & 0X01)//计时器溢出事件中断
    {
                        jishiyichunum++;
                }
    if(sta & 0X02)//CC1捕获中断
    {
                        P07 = ~P07;
//                        PWMA_SR1 &=~0X02;
                        cnt = ReadPWMA((char)&PWMA_CCR1H);
                        cnt = (cnt<<8)+ReadPWMA((char)&PWMA_CCR1L)+jishiyichunum*0xffff;//CC1捕获周期宽度
                        zhuce_time_interval =  cnt;
                        jishiyichunum = 0;
//                        TIM1CH1_CAPTURE_VAL[TIM1CH1_CAPTURE_num]= cnt;
//                        TIM1CH1_CAPTURE_num++;
    }
                WritePWMA((char)&PWMA_SR1, 0x00);   //清除完成标志
}

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-29 08:18 , Processed in 0.186964 second(s), 102 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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