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

PWM多通道输出问题 | 已找到问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2026-03-05 16:57:05
已绑定手机

2

主题

3

回帖

26

积分

新手上路

积分
26
发表于 2026-2-12 20:44:48 | 显示全部楼层 |阅读模式
//等主板到了再看一下需要用到的引脚
//不是PWMB极性的问题,也不是PS的问题,会不会是极性的问题
void PWM_R_L_motor_init(void)
{
    P2M1&=~0x03;
    P2M0|=0x03;   

    PWMB_CCER1 = 0x00;  //写 CCMRx 前必须先清零 CCxE 关闭通道
    PWMB_CCMR1 = 0x60;  //通道模式配置
    PWMB_CCMR2 = 0x60;  //通道模式配置
    PWMB_CCER1=0x33;    //使能5 6通道

    PWMB_PSCRH = 0;
    PWMB_PSCRL = 0;      // 1 分频,计数时钟 48 MHz

    PWMB_ARRH = 0x12;    // ARR = 4800 - 1 = 4799
    PWMB_ARRL = 0xBF;    // 0x12BF  

    PWMB_CCR5H = 0x04;   // CCR = 2400 → 50% 占空比
    PWMB_CCR5L = 0xB0;   // 0x0960 = 2400

    PWMB_CCR6H = 0x09;   // CCR = 2400 → 50% 占空比
    PWMB_CCR6L = 0x60;   // 0x04B0 = 1200

    PWMB_ENO = 0x00;
    PWMB_ENO |= ENO5P;  //使能输出
    PWMB_ENO |= ENO6P;  //使能输出

    PWMB_PS = 0x00;     //高级 PWM 通道输出脚选择位
    PWMB_PS |= PWMB5_1; //选择 PWMB5 通道   P00~P03
    PWMB_PS |= PWMB6_1;

    PWMB_BKR = 0x80;    //使能主输出
    PWMB_CR1 |= 0x01;   //开始计时
}为什么ch5可以正常输出,ch6却不行,已经详细对比了芯片手册,没找到问题在哪

回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:687
  • 最近打卡:2026-03-05 13:33:59
已绑定手机
已实名认证

129

主题

3375

回帖

8784

积分

版主

积分
8784
发表于 2026-2-13 07:57:42 | 显示全部楼层
代码是没有问题的,有这么几种可能,可以依次排查一下
1.可能是PWMB_PS没有选择正确,当P00作为PWM5的时候,P01才是PWM6,PWMB组没有互补输出
2.也有可能是最开头的IO模式没有设置正确,
  最开头的只设置了P20和P21,需要设置对应的输出口为强推挽模式才可以,
  否则默认为高阻输入模式,就是没有输出信号的
其他的应该没有什么问题,可以先排查上面两项

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2026-03-05 16:57:05
已绑定手机

2

主题

3

回帖

26

积分

新手上路

积分
26
发表于 5 小时前 | 显示全部楼层
王*** 发表于 2026-2-13 07:57
代码是没有问题的,有这么几种可能,可以依次排查一下
1.可能是PWMB_PS没有选择正确,当P00作为PWM5的时候 ...

好的,我看了一下问题出在第二点,谢谢王工
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-3-5 22:42 , Processed in 0.103895 second(s), 55 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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