[技术问答]

003 pwm配置问题

[复制链接]
1387|5
手机看帖
扫描二维码
随时随地手机跟帖
尼古拉斯枭雄|  楼主 | 2019-7-30 16:14 | 显示全部楼层 |阅读模式
怎么配置pwm  才能让占空比为0或者100%的时候 没有脉冲

使用特权

评论回复
尼古拉斯枭雄|  楼主 | 2019-7-30 16:19 | 显示全部楼层
    stcAdtBaseCntCfg.enCntMode = AdtSawtoothMode;
    stcAdtBaseCntCfg.enCntDir = AdtCntUp;
    stcAdtBaseCntCfg.enCntClkDiv = AdtClkPClk0;
    Adt_Init(enAdt, &stcAdtBaseCntCfg);                      //ADT载波、计数模式、时钟配置
   
    u16Period = 4096;
    Adt_SetPeriod(enAdt, u16Period);                         //ADT载波、计数模式、时钟配置

    enAdtCompare = AdtCompareA;
    u16Compare = R_level;
    Adt_SetCompareValue(enAdt, enAdtCompare, u16Compare*4);    //通用比较基准值寄存器A设置

    stcAdtTIM4ACfg.enCap = AdtCHxCompareOutput;
    stcAdtTIM4ACfg.bOutEn = TRUE;
    stcAdtTIM4ACfg.enPerc = AdtCHxPeriodHigh;
    stcAdtTIM4ACfg.enCmpc = AdtCHxCompareLow;
    stcAdtTIM4ACfg.enStaStp = AdtCHxStateSelKeep;
    stcAdtTIM4ACfg.enStaOut = AdtCHxPortOutLow;
    stcAdtTIM4ACfg.enStpOut = AdtCHxPortOutLow;
    Adt_CHxXPortConfig(enAdt, AdtCHxA, &stcAdtTIM4ACfg);   //端口CHA配置

    Adt_StartCount(enAdt);

上面这段是我的配置,在占空比为0 的时候有个细细脉冲

使用特权

评论回复
martinhu| | 2019-8-1 14:15 | 显示全部楼层
F003的高级定时器,如果直接设置占空比0或者100%的时候,是不能输出常高或者常低的波形,
如果你只使用1个通道的话,可以参考驱动库样例里的ADT的PwmHwComp,把CHB的配置删除,然后死区配置为最小
这样你可以控制GCMCR(缓存传送使能的情况下)设置0或者大于等于周期值的时候,输出常高或常低的波形。
131555d42838191afd.png

使用特权

评论回复
凡人8000| | 2019-10-11 17:47 | 显示全部楼层
测试过,只能单独出现低电平或高电平,不能出现由高电平到低电平或由低电平到高电平的现象。

使用特权

评论回复
stevenvonmark| | 2019-11-16 14:33 | 显示全部楼层
凡人8000 发表于 2019-10-11 17:47
测试过,只能单独出现低电平或高电平,不能出现由高电平到低电平或由低电平到高电平的现象。 ...

我刚使用005芯片一个星期,期间也调试了一下pwm输出,以下应该可以输出0%-100%
void PWM_SetDuty(uint8_t duty_value)
{
        uint16_t pwm_value;
        Adt_SetPeriodBuf(AdTIM4,500);                //(float)u32_pclk/20000000 * period_us_div10;        4000000MHZ/20000000*2500=500
        if(duty_value==0)
        {        Adt_StopCount(AdTIM4);        }
        else
        {        Adt_StartCount(AdTIM4);        }
        pwm_value=duty_value*5;
        Adt_SetCompareValue(AdTIM4, AdtCompareC,pwm_value);

PS:要设置一下一个方向,stcAdtTIM4ACfg.enPerc = AdtCHxPeriodHigh;        //AdtCHxPeriodKeep;

使用特权

评论回复
buffered| | 2019-11-17 18:24 | 显示全部楼层
我都是直接配置输出值

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

64

帖子

0

粉丝