PWM

简要说明

脉冲宽度调制(PWM)基本原理:控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,即可改变逆变电路输出电压的大小,也可改变输出频率。

接口描述

csi_pwm_initialize

pwm_handle_t csi_pwm_initialize(uint32_t idx)
  • 功能描述:

    • 通过传入的idx号初始化对应的PWM控制器实例,返回控制器实例的句柄。
  • 参数:

    • idx: 设备号。
  • 返回值:

    • NULL: 初始化失败。

    • 其它: 实例句柄。


csi_pwm_uninitialize

void csi_pwm_uninitialize(pwm_handle_t handle)
  • 功能描述:

    • PWM实例反初始化。该接口会停止PWM实例正在进行的传输(如果有),并且释放相关的软硬件资源。
  • 参数:

    • handle: 实例句柄。
  • 返回值:


csi_pwm_power_control

int32_t csi_pwm_power_control(pwm_handle_t handle, csi_power_stat_e state)
  • 功能描述:

    • PWM电源控制。
  • 参数:

    • handle: 实例句柄。

    • state: 设备实例的功耗模式,参看 csi_power_stat_e的定义。

  • 返回值:

    • 错误码。

csi_pwm_config

int32_t csi_pwm_config(pwm_handle_t handle,
                       uint8_t channel,
                       uint32_t period_us,
                       uint32_t pulse_width_us)
  • 功能描述:

    • 配置PWM channel通道的占空比。
  • 参数:

    • handle: 实例句柄。

    • channel: 通道号。

    • period_us: 一个周期时间(单位微秒)。

    • pulse_width_us: 一个高电平脉冲时间(单位微秒)。

  • 返回值:

    • 错误码。

csi_pwm_config_polarity

int32_t csi_pwm_config_polarity(pwm_handle_t handle,
                                uint8_t channel,
                                pwm_output_polarity_e polarity)
  • 功能描述:

    • 配置PWM 输出channel通道的极性。
  • 参数:

    • handle: 实例句柄。

    • channel: 通道号。

    • pwm_output_polarity_e 定义。

  • 返回值:

    • 错误码。

pwm_output_polarity_e:

名字 定义 备注
PWM_OUTPUT_POLARITY_LOW 输出低电平
PWM_OUTPUT_POLARITY_HIGH 输出高电平


csi_pwm_config_deadzone

int32_t csi_pwm_config_deadzone(pwm_handle_t handle,
                                uint8_t channel,
                                uint32_t deadzone_us);
  • 功能描述:

    • 配置PWM channel通道的死区时长。
  • 参数:

    • handle: 实例句柄。

    • channel: 通道号。

    • deadzone_us: 死区时间(单位微秒)。

  • 返回值:

    • 错误码。

csi_pwm_start

void csi_pwm_start(pwm_handle_t handle, uint8_t channel)
  • 功能描述:

    • 开始产生信号。
  • 参数:

    • handle: 实例句柄。

    • channel: 通道号。

  • 返回值:

    • 无。

csi_pwm_stop

void csi_pwm_stop(pwm_handle_t handle, uint8_t channel)
  • 功能描述:

    • 停止产生信号。
  • 参数:

    • handle: 实例句柄。

    • channel: 通道号。

  • 返回值:

    • 无。

示例

PWM示例1

int32_t  pwm_signal_test(uint32_t pwm_idx, uint8_t pwm_ch)
{
    int32_t ret;
    pwm_handle_t pwm_handle;

    pwm_handle = csi_pwm_initialize(pwm_idx);

    if (pwm_handle == NULL) {
        printf("csi_pwm_initialize error\n");
        return -1;
    }

    ret = csi_pwm_config(pwm_handle, pwm_ch, 3000, 1500);

    if (ret < 0) {
        printf("csi_pwm_config error\n");
        return -1;
    }

    csi_pwm_start(pwm_handle, pwm_ch);
    mdelay(20);

    ret = csi_pwm_config(pwm_handle, pwm_ch, 200, 150);

    if (ret < 0) {
        printf("csi_pwm_config error\n");
        return -1;
    }

    mdelay(20);
    csi_pwm_stop(pwm_handle, pwm_ch);

    csi_pwm_uninitialize(pwm_handle);

    return 0;
}

int example_pwm(uint32_t pwm_idx, uint8_t pwm_pin)
{
    int32_t ret;
    ret = pwm_signal_test(pwm_idx, pwm_pin);

    if (ret < 0) {
        printf("pwm_signal_test error\n");
        return -1;
    }

    printf("pwm_signal_test OK\n");

    return 0;
}

int main(void)
{
    return example_pwm(EXAMPLE_PWM_IDX, EXAMPLE_PWM_CH_IDX);
}

results matching ""

    No results matching ""