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

PWM输出时相关设置问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-08-17 18:45:38
已绑定手机

2

主题

1

回帖

16

积分

新手上路

积分
16
发表于 7 天前 | 显示全部楼层 |阅读模式
麻烦哪位大神帮忙回复下手册里面有说到:OC1PE必须在通道打开时(PWMA_CCER1寄存器的CC1E = 1)才是可写的,   那么如果是仅用到1通道的负极输出的话,是不是(PWMA_CCER1寄存器的CC1NE = 1)也是可写的。    另外同样的问题提到CC1S仅在通道关闭时(pwma_ccer1寄存器的CC1E=0)才是可写的,那么如果禁用到1通道的负极输出,是不是PWMA_CCER1寄存器的CC1NE = 0)也是可写的。


void user_pwm1n_init(unsigned int frequency)
{
        unsigned long temp_ulong_data = 0;
        unsigned short temp_ushort_data = 0;       
        PWMA_SMCR = 0x00;

        temp_ushort_data = (unsigned short)((unsigned long)((float)SYS_CLK / (SPEED_GRADE + 1) / frequency - 1));
        PWMA_PSCRH = (unsigned char)(temp_ushort_data >> 8);
        PWMA_PSCRL = (unsigned char)temp_ushort_data;
       
                 
        PWMA_CCER1 &= ~(0x01 << 2);  //关闭通道一
        PWMA_CCMR1 &= ~0x03;         //通道一设置为输出模式,仅在通道一关闭时可写
        PWMA_CCMR1 &= ~(0x07 << 4);  //通道一恢复默认值
        PWMA_CCMR1 |= (0x06 << 4);   //通道一设置为PWM模式一        
        PWMA_CCER1 |= (0x01 << 2);   // 1p通道高电平有效, 比较输出使能
  PWMA_CCMR1 |= (0x01 << 3);   //开启预装载使能,必须在通道启用后方可写入       

        PWMA_ARRH = (unsigned char)(SPEED_GRADE >> 8);
        PWMA_ARRL = (unsigned char)SPEED_GRADE;               
               

        PWMA_CCR1H = 0;                 
        PWMA_CCR1L = 0;  
       
       
        PWMA_ENO |= (0x01 << 1);             //开启PWM1n输出               
  PWMA_BKR |= 0x80;                    //开启主输出           
         
        PWMA_CR1 |= (0x01 << 7);            //启用预装载寄存器
  PWMA_CR1 |= 0x01;                         //开启计数器  
  PWMA_EGR |= 0x01;                   //产生一个更新事件            
}

附上代码
回复

使用道具 举报 送花

3

主题

2031

回帖

910

积分

等待验证会员

积分
910
发表于 7 天前 | 显示全部楼层
关于PWM输出相关设置的问题,以下是基于手册内容的专业解答:

在使用PWM功能时,寄存器的写入权限通常与通道状态密切相关。根据手册说明,OC1PE(通道1预装载使能)仅在通道开启状态下(即PWMACCER1寄存器中的CC1E位为1)才可被写入。这表明,在通道启用期间,对OC1PE的修改需要确保系统处于稳定状态,以避免因配置变更导致的输出异常。

对于仅使用通道1的负极输出(即CC1NE位为1),该位的可写性同样依赖于通道的状态。根据手册逻辑,CC1NE的写入权限应与CC1E保持一致,即当CC1E为1时,CC1NE也应具备可写性。因此,在仅使用负极输出的情况下,若通道已启用(CC1E=1),则CC1NE位是可以被修改的。

关于CC1S(通道1模式选择)的写入权限,手册明确指出其仅在通道关闭状态下(CC1E=0)才可被写入。这意味着,当通道未启用时,方可对CC1S进行配置。同理,若禁用通道1的负极输出(即CC1NE=0),此时通道状态仍由CC1E决定。如果CC1E为0,则CC1NE位同样具备可写性,可用于重新配置负极输出状态。

综上所述,在通道启用(CC1E=1)时,OC1PE和CC1NE均可被写入;而在通道关闭(CC1E=0)时,CC1S和CC1NE均可被修改。实际应用中,建议在配置前确认通道状态,并按照手册要求进行寄存器操作,以确保PWM功能的正确运行。

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:547
  • 最近打卡:2025-08-21 21:27:12
已绑定手机
已实名认证

116

主题

2712

回帖

6806

积分

版主

积分
6806
发表于 6 天前 | 显示全部楼层
如果想要仅输出负极性PWM,可以使用CCER1中的极性设置为相反来输出,如果想要使用N通道引脚输出负极性,建议正常使能P和N通道,然后通过PWMA_ENO来关闭P通道输出即可
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-8-24 03:22 , Processed in 0.106334 second(s), 57 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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