Collaboration diagram for PWM driver:

Functions

void pwm_init (uint32 period, uint32 *duty, uint32 pwm_channel_num, uint32(*pin_info_list)[3])
 Initialize PWM function, including GPIO selection, period and duty cycle. More...
 
void pwm_start (void)
 Starts PWM. More...
 
void pwm_set_duty (uint32 duty, uint8 channel)
 Sets duty cycle of a PWM output. More...
 
uint32 pwm_get_duty (uint8 channel)
 Get duty cycle of PWM output. More...
 
void pwm_set_period (uint32 period)
 Set PWM period. More...
 
uint32 pwm_get_period (void)
 Get PWM period. More...
 
uint32 get_pwm_version (void)
 Get version information of PWM. More...
 

Detailed Description

Function Documentation

◆ get_pwm_version()

uint32 get_pwm_version ( void  )

Get version information of PWM.

Return values
uint32PWM version

◆ pwm_get_duty()

uint32 pwm_get_duty ( uint8  channel)

Get duty cycle of PWM output.

Parameters
channelPWM channel, which depends on how many PWM channels are used
Return values
uint32Duty cycle of PWM output

Duty cycle will be (duty*45) / (period*1000).

◆ pwm_get_period()

uint32 pwm_get_period ( void  )

Get PWM period.

Return values
uint32Return PWM period in us.

◆ pwm_init()

void pwm_init ( uint32  period,
uint32 *  duty,
uint32  pwm_channel_num,
uint32(*)  pin_info_list[3] 
)

Initialize PWM function, including GPIO selection, period and duty cycle.

Parameters
periodPWM period
dutyduty cycle of each output
pwm_channel_numPWM channel number
pin_info_listArray containing an entry for each channel giving
Note
This API can be called only once.

Example:

    uint32 io_info[][3] = {
        {PWM_0_OUT_IO_MUX, PWM_0_OUT_IO_FUNC, PWM_0_OUT_IO_NUM},
        {PWM_1_OUT_IO_MUX, PWM_1_OUT_IO_FUNC, PWM_1_OUT_IO_NUM},
        {PWM_2_OUT_IO_MUX, PWM_2_OUT_IO_FUNC, PWM_2_OUT_IO_NUM}
};

pwm_init(light_param.pwm_period, light_param.pwm_duty, 3, io_info);

◆ pwm_set_duty()

void pwm_set_duty ( uint32  duty,
uint8  channel 
)

Sets duty cycle of a PWM output.

Parameters
dutyThe time that high-level single will last, duty cycle will be (duty*45)/(period*1000)
channelPWM channel, which depends on how many PWM channels are used

Set the time that high-level signal will last. The range of duty depends on PWM period. Its maximum value of which can be Period * 1000 / 45.

For example, for 1-KHz PWM, the duty range is 0 ~ 22222.

◆ pwm_set_period()

void pwm_set_period ( uint32  period)

Set PWM period.

Parameters
periodPWM period in us. For example, 1-KHz PWM period = 1000us.

◆ pwm_start()

void pwm_start ( void  )

Starts PWM.

This function needs to be called after PWM configuration is changed.