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

高级PWM配置问题 | 已解决,引脚虚焊

[复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:90
  • 最近打卡:2025-04-12 15:58:13

24

主题

70

回帖

644

积分

高级会员

积分
644
发表于 2025-4-12 15:58:13 | 显示全部楼层 |阅读模式
老师们,我在学习高级PWM的时候,代码不知道哪里错误,PWMB的5P和8P没有信号,请老师们帮忙 看一下代码哪里错误,谢谢了

现在是1P和1N,2P和2N是输出一样的PWM,3P,4P,6P,7P正常输出,5P和8P没有信号 。


#define PWM_PERIOD 1999 //设置PWM周期值
u16 PWM_Duty = 1500;//设置点空比

void PWM_Int(void)
{
   
        PWMA_PS |= 0x55;//高级 PWM 通道输出脚选择P20位,P22,P24,P26.
        PWMB_PS |= 0xAA;//高级 PWM 通道输出脚选择P00位,P01,P02,P03.
        
        PWMA_CCER1 = 0x00;//写CCMRx前必须先清零CCxE关闭通道
        PWMA_CCMR1= 0x68;//通道模式配置
        PWMA_CCMR2= 0x68;//通道模式配置
        PWMA_CCER1 =0x7D;//配置通道输出使能和极性
        
        PWMA_CCER2 = 0x00;//写CCMRx前必须先清零CCxE关闭通道
        PWMA_CCMR3= 0x68;//通道模式配置
        PWMA_CCMR4= 0x68;//通道模式配置
        PWMA_CCER2 =0x11;//配置通道输出使能和极性
        
        PWMB_CCER1 = 0x00;//写CCMRx前必须先清零CCxE关闭通道
        PWMB_CCMR1= 0x68;//通道模式配置
        PWMB_CCMR2= 0x68;//通道模式配置
        PWMB_CCER1 =0x11;//配置通道输出使能和极性
        
        PWMB_CCER2 = 0x00;//写CCMRx前必须先清零CCxE关闭通道
        PWMB_CCMR3= 0x68;//通道模式配置
        PWMB_CCMR4= 0x68;//通道模式配置
        PWMB_CCER2 =0x11;//配置通道输出使能和极性
        
        PWMA_ARRH = (u8)(PWM_PERIOD>>8);//设置周期时间
        PWMA_ARRL = (u8)PWM_PERIOD;
        
        PWMB_ARRH = (u8)(PWM_PERIOD>>8);//设置周期时间
        PWMB_ARRL = (u8)PWM_PERIOD;
        
        PWMA_ENO = 0x5F;//使能输出
        PWMB_ENO = 0x55;//使能输出
        
        PWMA_CCR1H = (u8)(PWM_Duty >>8);//设置占空比时间
        PWMA_CCR1L = (u8)(PWM_Duty);
        
    PWMA_CCR2H = (u8)(PWM_Duty >>8);//设置占空比时间
        PWMA_CCR2L = (u8)(PWM_Duty);
        
        PWMA_CCR3H = (u8)(PWM_Duty >>8);//设置占空比时间
        PWMA_CCR3L = (u8)(PWM_Duty);
        
        PWMA_CCR4H = (u8)(PWM_Duty >>8);//设置占空比时间
        PWMA_CCR4L = (u8)(PWM_Duty);
        
    PWMB_CCR5H = (u8)(PWM_Duty >>8);//设置占空比时间
        PWMB_CCR5L = (u8)(PWM_Duty);

        PWMB_CCR6H = (u8)(PWM_Duty >>8);//设置占空比时间
        PWMB_CCR6L = (u8)(PWM_Duty);

        PWMB_CCR7H = (u8)(PWM_Duty >>8);//设置占空比时间
        PWMB_CCR7L = (u8)(PWM_Duty);

        PWMB_CCR8H = (u8)(PWM_Duty >>8);//设置占空比时间
        PWMB_CCR8L = (u8)(PWM_Duty);

        PWMA_BKR = 0x80;//使能主输出
        PWMB_BKR = 0x80;//使能主输出
        PWMA_CR1 = 0x01;//开始计时
        PWMB_CR1 = 0x01;//开始计时
}



回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-4-12 16:03:00 | 显示全部楼层
在您提供的代码中,PWMB的5P和8P没有信号输出,可能是由于以下几个原因导致的。以下是对代码的详细分析和建议:

1. PWMBPS寄存器配置问题
您当前的配置是PWMBPS |= 0xAA;,这表示PWMB的通道输出脚选择为P00、P01、P02、P03。然而,5P和8P可能对应的是其他引脚,您需要确认这些引脚是否被正确映射到PWMB的通道上。
建议检查芯片手册,确认5P和8P对应的引脚是否被正确配置到PWMB的通道上。如果未正确配置,需要调整PWMBPS的值。

2. PWMBCCER1和PWMBCCMR1配置问题
您当前的配置是PWMBCCER1 = 0x00;和PWMBCCMR1= 0x68;。PWMBCCER1用于配置通道输出使能和极性,而PWMBCCMR1用于配置通道模式。
确保PWMBCCER1的值正确配置了5P和8P对应的通道使能位。如果未使能,通道将不会输出信号。
建议检查PWMBCCER1的值,确保5P和8P对应的通道使能位被正确设置。

3. PWMBCCMR2配置问题
您当前的配置是PWMBCCMR2= 0x68;。PWMBCCMR2用于配置通道模式,确保5P和8P对应的通道模式被正确配置。
如果通道模式配置不正确,可能会导致信号无法输出。建议检查PWMBCCMR2的值,确保5P和8P对应的通道模式被正确设置。

4. PWM周期和占空比配置
您当前的PWM周期和占空比配置为#define PWMPERIOD 1999和u16 PWMDuty = 1500;。确保这些值在芯片的允许范围内,并且与您的应用需求相符。
如果周期或占空比配置不正确,可能会导致信号无法正常输出。建议检查这些值,并根据需要进行调整。

5. 硬件连接问题
除了软件配置,还需要检查硬件连接是否正确。确保5P和8P对应的引脚与外部电路连接正确,并且没有短路或断路现象。

6. 调试建议
使用调试工具(如示波器或逻辑分析仪)检查5P和8P的引脚是否有信号输出。如果没有信号输出,可以逐步检查上述配置,找出问题所在。
如果仍然无法解决问题,建议参考芯片手册中的PWM模块章节,详细了解每个寄存器的功能和配置方法。

7. 代码示例
   以下是一个可能的修正代码示例,供您参考:
  1. c
  2. define PWMPERIOD 1999 //设置PWM周期值
  3. u16 PWMDuty = 1500; //设置占空比
  4. void PWMInt(void)
  5. {
  6.     // 配置PWMA和PWMB的输出引脚
  7.     PWMAPS |= 0x55; // 高级PWM通道输出脚选择P20位,P22,P24,P26.
  8.     PWMBPS |= 0xAA; // 高级PWM通道输出脚选择P00位,P01,P02,P03.
  9.     // 配置PWMA的通道1和2
  10.     PWMACCER1 = 0x00; // 写CCMRx前必须先清零CCxE关闭通道
  11.     PWMACCMR1 = 0x68; // 通道模式配置
  12.     PWMACCMR2 = 0x68; // 通道模式配置
  13.     PWMACCER1 = 0x7D; // 配置通道输出使能和极性
  14.     // 配置PWMA的通道3和4
  15.     PWMACCER2 = 0x00; // 写CCMRx前必须先清零CCxE关闭通道
  16.     PWMACCMR3 = 0x68; // 通道模式配置
  17.     PWMACCMR4 = 0x68; // 通道模式配置
  18.     PWMACCER2 = 0x11; // 配置通道输出使能和极性
  19.     // 配置PWMB的通道1和2
  20.     PWMBCCER1 = 0x00; // 写CCMRx前必须先清零CCxE关闭通道
  21.     PWMBCCMR1 = 0x68; // 通道模式配置
  22.     PWMBCCMR2 = 0x68; // 通道模式配置
  23.     PWMBCCER1 = 0x7D; // 配置通道输出使能和极性
  24.     // 配置PWMB的通道3和4
  25.     PWMBCCER2 = 0x00; // 写CCMRx前必须先清零CCxE关闭通道
  26.     PWMBCCMR3 = 0x68; // 通道模式配置
  27.     PWMBCCMR4 = 0x68; // 通道模式配置
  28.     PWMBCCER2 = 0x11; // 配置通道输出使能和极性
  29. }
复制代码

总结
通过以上分析和建议,您可以逐步排查并解决PWMB的5P和8P没有信号输出的问题。如果问题仍然存在,建议进一步检查硬件连接和芯片手册中的相关配置。希望这些建议对您有所帮助。

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

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:90
  • 最近打卡:2025-04-12 15:58:13

24

主题

70

回帖

644

积分

高级会员

积分
644
发表于 2025-4-12 16:12:52 | 显示全部楼层
找到问题了,芯片引脚虚焊了,查了一下午代码。唉
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:32 , Processed in 0.210373 second(s), 57 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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