PWM介绍
先楫的PWM与其他厂商的有些不同,PWM位于电机系统中,精度是(24+4)位,
更新占空比也比较特殊是将数据放入一个叫做影子寄存器中 通过某种条件来进行更新的
可以使用多个比较器才组成一个PWM,
另外这边需要注意的是PWM时钟是挂在AHB总线上面的,时钟是改不了的。所以如果想要做低赫兹的PWM就要用定时器功能TMR
周期 = 重载值/200MHz
PWM关注一般有几项:重载值,计数方式,占空比,这里加上(更新比较值方式),计数器类型。
流程步骤:
●计数器类型(是否开启拓展4位)
●互补输出
●死区时间
pwm_config.enable_output = true;
pwm_config.invert_output = false;
pwm_config.dead_zone_in_half_cycle = 0;
●设置重载值,开始计数值
pwm_set_reload(PWM, reload, reload);
pwm_set_start_count(PWM, 0, 0);
●设置PWM模式,设置占空比,影子寄存器更新方式
pwm_get_default_cmp_config(PWM, &cmp_config[0]);
cmp_config[0].mode = pwm_cmp_mode_output_compare;
cmp_config[0].cmp = reload;
cmp_config[0].enable_ex_cmp = true;
cmp_config[0].ex_cmp = 0;
cmp_config[0].update_trigger = pwm_shadow_register_update_on_shlk;
●导入参数
●使能影子寄存器更新方式
●开启PWM
●改占空比
pwm_start_counter(PWM);
pwm_cmp_update_cmp_value(PWM, 0, reload/4, 0);
pwm_issue_shadow_register_lock_event(PWM);