微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 82平台GPIO0配置成PWM怎么输出3.57MHZ的方波?

82平台GPIO0配置成PWM怎么输出3.57MHZ的方波?

时间:10-02 整理:3721RD 点击:
82平台GPIO0配置成PWM怎么输出3.57MHZ的方波?
1、现在我GPIO0配置的是PWM1:GPIO_PWM_1_PIN
2、代码中添加如下函数:
static int set_pwm(int pwm_num,bool onoff)
{
        struct pwm_spec_config pwm_setting;
        unsigned int con, count;
        
        pwm_setting.pwm_no = pwm_num;
        pwm_setting.mode = PWM_MODE_FIFO; //new mode fifo and periodical mode
        pwm_setting.clk_div = CLK_div1;
        pwm_setting.clk_src = PWM_CLK_NEW_MODE_BLOCK;
               
        pwm_setting.PWM_MODE_FIFO_REGS.HDURATION = 1;
        pwm_setting.PWM_MODE_FIFO_REGS.LDURATION = 1;        
        pwm_setting.PWM_MODE_FIFO_REGS.IDLE_VALUE = 0;
        pwm_setting.PWM_MODE_FIFO_REGS.GUARD_VALUE = 0;
        pwm_setting.PWM_MODE_FIFO_REGS.STOP_BITPOS_VALUE = 63;
        pwm_setting.PWM_MODE_FIFO_REGS.GDURATION = 0;
        pwm_setting.PWM_MODE_FIFO_REGS.WAVE_NUM = 0;
        
        if(onoff)
        {
                pwm_setting.pwm_mode.PWM_MODE_FIFO_REGS.SEND_DATA0 = 0xAAAAAAAA;
                pwm_setting.pwm_mode.PWM_MODE_FIFO_REGS.SEND_DATA1 = 0xAAAAAAAA ;
                pwm_set_spec_config(&pwm_setting);
         }
        else
        {
                 pwm_setting.PWM_MODE_FIFO_REGS.STOP_BITPOS_VALUE = 0;
                 pwm_set_spec_config(&pwm_setting);
                 //mt_set_pwm_disable(pwm_num);
                 //mt_pwm_power_off (pwm_num,TRUE);
                 mt_pwm_disable(pwm_num,TRUE);
        }
        return 0;
        
}

结果:
现在测量这个pin脚,万用表量是1.8V的电压,示波器显示是个高电平,不是方波。请大家帮忙看看问题在哪,非常感谢

为啥我改了以后,连高电平都没有了啊?

static int set_pwm(int pwm_num,bool onoff)
{
        struct pwm_spec_config pwm_setting;
        unsigned int con, count;
       
        pwm_setting.pwm_no = PWM1;
        pwm_setting.mode = PWM_MODE_FIFO; //new mode fifo and periodical mode
        pwm_setting.clk_div = CLK_div16;
        pwm_setting.clk_src = PWM_CLK_NEW_MODE_BLOCK;
               
        pwm_setting.PWM_MODE_FIFO_REGS.HDURATION = 29;
        pwm_setting.PWM_MODE_FIFO_REGS.LDURATION = 29;       
        pwm_setting.PWM_MODE_FIFO_REGS.IDLE_VALUE = 0;
        pwm_setting.PWM_MODE_FIFO_REGS.GUARD_VALUE = 0;
        pwm_setting.PWM_MODE_FIFO_REGS.STOP_BITPOS_VALUE = 63;
        pwm_setting.PWM_MODE_FIFO_REGS.GDURATION = 0;
        pwm_setting.PWM_MODE_FIFO_REGS.WAVE_NUM = 0;
    onoff = 1;
       
        //printf("[LEDS]uboot: lcd_set_pwm :duty is %d\n");
        if(onoff)
        {
                pwm_setting.PWM_MODE_FIFO_REGS.SEND_DATA0 = 0xFFFFFFFF;
                pwm_setting.PWM_MODE_FIFO_REGS.SEND_DATA1 = 0x00000000 ;
                pwm_set_spec_config(&pwm_setting);
         }
        else
        {
                 pwm_setting.PWM_MODE_FIFO_REGS.STOP_BITPOS_VALUE = 0;
                 pwm_set_spec_config(&pwm_setting);
                 //mt_set_pwm_disable(pwm_num);
                 //mt_pwm_power_off (pwm_num,TRUE);
                 mt_pwm_disable(pwm_num,TRUE);
        }
        return 0;
       
}
新代码,强制都是打开的,用的pwm1

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top