1. 概述

脉冲宽度调制(Pulse width modulation,简称 PWM)是一种利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
TG6210支持 2 组 PWM 信号生成,每组包含 4 通道 PWM 信号输出,每通道可以设置为 2 路互补 PWM。

2. API参考

2.1 PWM初始化

  • 函数原型:
    int hosal_pwm_init(hosal_pwm_dev_t *pwm);
  • 功能描述:初始化PWM
  • 函数参数:
    • pwm:需要初始化的PWM句柄 ```c typedef struct { uint8_t port; /< pwm port */ hosal_pwm_config_t config; /< pwm config / void priv; /*< priv data / } hosal_pwm_dev_t;
  1. ```c
  2. typedef struct {
  3. uint8_t port; /**< pwm port */
  4. hosal_pwm_config_t config; /**< pwm config */
  5. void *priv; /**< priv data */
  6. } hosal_pwm_dev_t;
  • 返回值:

    • 成功返回0。
    • 错误返回-1。

      2.2 输出PWM

  • 函数原型:
    int hosal_pwm_start(hosal_pwm_dev_t *pwm);

  • 功能描述:输出pwm。
  • 函数参数:
    • pwm:PWM句柄
  • 返回值:

    • 成功返回0。
    • 错误返回-1。

      2.3 停止PWM

  • 函数原型:
    int hosal_pwm_stop(hosal_pwm_dev_t *pwm);

  • 功能描述:停止pwm。
  • 函数参数:
    • pwm:PWM句柄
  • 返回值:

    • 成功返回0。
    • 错误返回-1。

      2.4 设置PWM参数

  • 函数原型:
    int hosal_pwm_para_chg(hosal_pwm_dev_t *pwm, hosal_pwm_config_t para);

  • 功能描述:设置pwm参数
  • 函数参数:
    • pwm:PWM句柄
    • para:需要设置的参数
  • 返回值:

    • 成功返回0。
    • 错误返回-1。

      2.5 设置PWM频率

  • 函数原型:
    int hosal_pwm_freq_set(hosal_pwm_dev_t *pwm, uint32_t freq);

  • 功能描述:设置pwm频率
  • 函数参数:
    • pwm:PWM句柄
    • freq:频率
  • 返回值:

    • 成功返回0。
    • 错误返回-1。

      2.6 获取PWM频率

  • 函数原型:
    int hosal_pwm_freq_get(hosal_pwm_dev_t *pwm, uint32_t *p_freq);

  • 功能描述:获取pwm频率
  • 函数参数:
    • pwm:PWM句柄
    • freq:频率
  • 返回值:

    • 成功返回0。
    • 错误返回-1。

      2.7反初始化PWM

  • 函数原型:
    int hosal_pwm_finalize(hosal_pwm_dev_t *pwm);

  • 功能描述:反初始化pwm
  • 函数参数:
    • pwm:PWM句柄
  • 返回值:

    • 成功返回0。
    • 错误返回-1。

      3. Demo示例

      1. hosal_pwm_dev_t pwm;
      2. pwm.port = 0
      3. pwm.pin = 0;
      4. pwm.config.duty_cycle = 5000;
      5. pwm.config.freq = 1000;
  • 通过 hosal_pwm_dev_t 定义一个pwm的设备,需要设置pwm的port(通道),pin,频率和占空比。

  1. hosal_pwm_init(&pwm);
  • 调用 hosal_pwm_init 初始化pwm 。
  1. hosal_pwm_start(&pwm);
  • 通过 hosal_pwm_start 开始输出pwm波形。
  1. hosal_pwm_config_t para;
  2. para.duty_cycle = 8000;
  3. para.freq = 500;
  4. hosal_pwm_para_chg(&pwm, para);
  • 通过 hosal_pwm_para_chg 更改pwm 频率和占空比。
  1. hosal_pwm_stop(&pwm);
  • 调用 hosal_pwm_stop 来停止pwm输出。
  1. hosal_pwm_finalize(&pwm);
  • 调用 hosal_pwm_finalize 来反初始化pwm。