找回密码
 立即注册
查看: 21|回复: 2

关于PWM相关问题

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:275
  • 最近打卡:2025-06-16 10:45:51
已绑定手机

19

主题

124

回帖

1287

积分

金牌会员

STC-镇江-老蔡

积分
1287
发表于 7 小时前 | 显示全部楼层 |阅读模式
各位大师我有个问题关于PWM方面的:

       首先我用PWMBCC7/CC8捕获一个波形的上升沿和下降沿程序设定如下:
//设定PWMB捕获P3^4脚波形,并初始化程序
void PWMB_INIT()
{
        PWMB_PS = 0x40;                //设定P3^4脚为捕获引脚
        PWMB_CCER2 = 0x00;        //先清零后写入
        PWMB_CCMR3 = 0x42; // 配置了一个0.4us的滤波器,抗干扰       
        PWMB_CCMR4 = 0x41;        //(滤波器16;CC1连续捕获映射到TI1FP上)
        PWMB_CCER2 = 0x31;        //CC7捕获上升沿,CC8捕获下降沿
        PWMB_IER = 0x18;        //启动CC7/CC8捕获中断
        PWMB_CR1 = 0x01;        //启动定时器
        IP2 |= 0x08;                //中断优先级3最高级
        IP2H |= 0x08;        //中断优先级3最高级
}
       其次我用PWMB的ENO5P比较输出一个4KHZ方波程序如下:

void PWMB_Init_4kHz(void)
{
    //PWMB_PS = 0xfc;                          //高级PWM功能脚切换寄存器;切换至P2.0脚;
        PWMB_CCER1 = 0x00;                //操作前必须要先清零;
        PWMB_CCMR1 = 0x60;                //捕获/比较模式寄存器;
        PWMB_CCER1 = 0x01;                //捕获/比较使能寄存器;
        PWMB_PSCR = 0x0e;                  //预分频寄存器,可以和PWMB_ARR共同决定分频值,从而决定输出波形的频率或周期
        PWMB_CCR5 = 250;                        //捕获比较寄存器,可以用来设置波形的占空比;
        PWMB_ARR = 0x01f3;                 //自动从装载寄存器,用来设置预分频值,从而设定输出波形的周期值;
        PWMB_ENO = 0x01;                        //输出使能寄存器,使能PWM1P输出;
        PWMB_CR1 = 0x01;                        //控制寄存器,使能计数;
        PWMB_BKR = 0x80;                        //刹车寄存器,主输出使能开启;
       
}


        另外我用PWMA做一个精度为1us,的定时器,用来记录CC7/CC8捕获的时间;

// PWM变换定时器初始化函数
void PWM_Transform_Timer_Init(void)
{
        PWMA_PSCRH = 0x00; // 1Mhz输出,分频因子1/30,1us定时精度;预分频器的预分频值29,30000000/(29+1)=1000000hz,1us定时精度
        PWMA_PSCRL = 0x1d;
        PWMA_ARRH = 0xff; //计数值并不会超出上限,所以设置成0xff;
        PWMA_ARRL = 0xff;
}

        结果发现4KHZ方波不能正常输出了,单独实验是可以正常输出的,我觉得是不是和设定中有冲突,但不知道怎么解决
请大师们帮我分析一下
截图202506161152576879.jpg
平安快乐
回复

使用道具 举报 送花

3

主题

717

回帖

145

积分

等待验证会员

积分
145
发表于 6 小时前 | 显示全部楼层
关于PWM相关问题,您提到的设置和问题需要进一步分析和验证。以下是对您提到的PWM相关问题的回复:

1. 关键点分析

您提到的PWMBCC7/CC8捕获和比较,以及对应的中断处理,可能涉及以下几个关键点:

(1) 捕获和比较模式设置
您在PWMBINIT函数中设置了CCER1和CCER2,用于控制中断和比较。您提到CCER2的设置为0x31,这可能与中断优先级有关。建议您确认中断优先级和中断处理逻辑是否正确。

(2) 滤波器设置
您在PWMBCCMR5和PWMBCCMR4中设置了滤波器配置。CCM5设置为250,这可能会影响波形的滤波效果。建议您确认滤波器的类型和参数是否符合TurboCode的规范。

(3) 柔合脚设置
您在PWMBPSCR中设置了预分频寄存器,可以与CCR5(分频值)共同决定分频值。建议您确认预分频设置是否合理,确保波形频率符合用户需求。

(4) 激活条件
您提到ICR5和ICR6的设置为0x18,这可能与中断条件有关。建议您确认这些条件是否正确,确保中断处理高效且不会导致波形不稳定。

2. 备选设置和建议

如果您希望实现4kHz的波形,以下是一些备选设置和建议:

备选设置
CCR5:设置为80(频率为1.25kHz)或更高,以确保波形频率稳定。
CCM5:设置为80或更高,以提高滤波效果。
CCR6:设置为0x00或更高,以避免过滤。
CCM6:设置为0x00或更高,以避免过滤。

中断处理
建议您在中断处理中设置以下条件:
ICR5:设置为0x30(中断优先级为1,最高级)。
ICR6:设置为0x30(中断优先级为1,最高级)。
中断信号:设置为0x01,确保中断信号优先处理。

预分频设置
建议您在预分频寄存器(PWMBPSCR)中设置为0x00,以避免预分频干扰。

3. 建议

如果您需要进一步优化波形,建议您进行以下步骤:
1. 调试中断处理:使用TurboCode的中断调试工具,查看中断信号和中断处理情况。
2. 检查滤波效果:确保滤波器的类型和参数符合TurboCode的规范。
3. 验证预分频设置:确保预分频设置不会干扰到波形。

结论

您提到的设置和问题需要进一步验证和调试。建议您按照以上备选设置和建议进行调整,并利用TurboCode的工具进行调试和验证。如果仍然存在问题,请提供更多详细信息,以便进一步诊断和优化。

希望以上回复对您有所帮助!如果还有其他问题,请随时告诉我。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:275
  • 最近打卡:2025-06-16 10:45:51
已绑定手机

19

主题

124

回帖

1287

积分

金牌会员

STC-镇江-老蔡

积分
1287
发表于 6 小时前 | 显示全部楼层
国芯人*** 发表于 2025-6-16 11:58
关于PWM相关问题,您提到的设置和问题需要进一步分析和验证。以下是对您提到的PWM相关问题的回复:

1. 关 ...

明白我再试试,谢谢大师
平安快乐
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-16 18:56 , Processed in 0.127397 second(s), 61 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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