pwm输出
-
能否输出一个高精度的32768hz的波形呢?
-
这个可以的。801xH的芯片有两种pwm,一个是数字模块的pwm,精度是cpu的运行频率,12M,24M,48M。 如果是48M的cpu时钟的话,pwm的输出精度是48M HZ。 具体的参考代码如下:
system_set_port_mux(GPIO_PORT_D,GPIO_BIT_4,PORTD4_FUNC_PWM4);
system_set_port_mux(GPIO_PORT_D,GPIO_BIT_5,PORTD5_FUNC_PWM5);
pwm_init(PWM_CHANNEL_4,32768,50);
pwm_init(PWM_CHANNEL_5,32768,50);
pwm_start(PWM_CHANNEL_4);
pwm_start(PWM_CHANNEL_5);
数字模块的pwm,在启动sleep后,会停止运行。另一种是pmu的pwm模块,这个模块在启动sleep后,依然能运行,它的时钟精度是sleep低速时钟的精度,即最大32KHz。参考代码如下:
pmu_pwm_init();
pmu_set_pin_to_PMU(GPIO_PORT_D, BIT(4)|BIT(5));
pmu_set_pin_dir(GPIO_PORT_D, BIT(4)|BIT(5),GPIO_DIR_OUT);
pmu_set_port_mux(GPIO_PORT_D,GPIO_BIT_4,PMU_PORT_MUX_PWM);
pmu_set_port_mux(GPIO_PORT_D,GPIO_BIT_5,PMU_PORT_MUX_PWM);
pmu_pwm_set_param(GPIO_PORT_D,GPIO_BIT_4,1,1);
pmu_pwm_set_param(GPIO_PORT_D,GPIO_BIT_5,1,1);
pmu_pwm_start(GPIO_PORT_D,GPIO_BIT_4,true,0);
pmu_pwm_start(GPIO_PORT_D,GPIO_BIT_5,true,0);
两种pwm的示例代码都能在 driver_demos这个工程里的demo_pwm() 和demo_pmu_pwm() 找到。
-
内部32k的精度是多少?