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