BLE芯片PHY6222---两路PWM互补输出

文章目录

前言

两路PWM驱动电机,一定情况下PHY6222存在复位且电机控制力度不足
两路PWM波形输出理应为异步,原因在于采用了定时不断开启,关闭,长时间运行会导致定时精度不准确,导致同一时间两路都输出高或者低时,或者高,低同步的时间长,整体电流就会变高且对应的电机转动力度降低demo传送门提取码:j4ny

处理

在配置PWM时不用定时器去延时输出,两路采用相反的配置互补输出即可(附上测试demo),关键部分已框红

#define PWM0_PIN P32
#define PWM1_PIN P33
#define PWM_TOP_VALUE      1000
static void pwm_test_init(void)
{
    hal_pwm_init(PWM_CH1, PWM_CLK_DIV_16, PWM_CNT_UP, PWM_POLARITY_FALLING);
    hal_pwm_set_count_val(PWM_CH1, 400, PWM_TOP_VALUE);
    hal_pwm_open_channel(PWM_CH1, PWM1_PIN);

    hal_pwm_init(PWM_CH0, PWM_CLK_DIV_16, PWM_CNT_UP, PWM_POLARITY_RISING);
    hal_pwm_set_count_val(PWM_CH0, 400, PWM_TOP_VALUE);
    hal_pwm_open_channel(PWM_CH0, PWM0_PIN);

    hal_pwm_start();
    LOG("PWM init start\n");
}
void chufa_P14(gpio_pin_e pin, gpio_polarity_e type)
{

    static int cnt = 0;
    cnt++;
    LOG("P14_chufa_type==%d,cnt==%d\n", type, cnt);

    if(cnt % 2 == 0)
    {
        pwm_test_init();
    }
    else
    {
        LOG("PWM stop\n");
        HAL_ENTER_CRITICAL_SECTION();

        *(volatile int*)0x4000E004 = 0x00;
        *(volatile int*)0x4000E008 = 0x00;
        *(volatile int*)0x4000E010 = 0x00;
        *(volatile int*)0x4000E014 = 0x00;

        HAL_EXIT_CRITICAL_SECTION();
        hal_pwm_destroy(PWM_CH0);
        hal_pwm_destroy(PWM_CH1);
        hal_pwm_stop();
    }

}
void anjian_pwm(void)
{
    hal_gpio_pin_init(GPIO_P14, IE);//ÊäÈë

    hal_gpio_pull_set(GPIO_P14, STRONG_PULL_UP);
    hal_gpioin_register(P14, NULL, chufa_P14);
}
void Key_Demo_Init(uint8 task_id)
{
    uint8_t i = 0;
    key_TaskID = task_id;

 hal_pwm_module_init();
    anjian_pwm();
//		osal_start_reload_timer(key_TaskID,PWM_INIT,3000);


}

PWM_POLARITY_FALLING 1
PWM_POLARITY_RISING 0

即可输出相反的PWM波形,注册按键下降沿中断,取余开关,两路输出1KHz的PWM,PWM输出的频率看datasheet的计算公式,波形效果如下
在这里插入图片描述

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值