简要说明
PWM(Pulse Width Modulation),即脉冲宽度调制,其是利用微处理器的数字输出来对模拟电路进行控制的一种有效的技术。

如上图所示,是一个周期频率是100Hz的pwm波形,高电平占空比为40,低电平占空比为60,通过调节高电平占空比的值,即可以改变模拟输出值的大小。
Api描述
tkl_pwm_init
OPERATE_RET tkl_pwm_init(TUYA_PWM_NUM_E ch_id, CONST TUYA_PWM_BASE_CFG_T *cfg);
- 功能描述:
- 通过端口号和基础配置初始化对应的pwm实例,返回初始化结果 。
- 参数:
ch_id: 通道号。
cfg: pwm基础配置,包含输出极性,占空比,频率 。
```c typedef struct { TUYA_PWM_POLARITY_E polarity; TUYA_PWM_COUNT_E count_mode; //pulse duty cycle = duty / cycle; exp duty = 5000,cycle = 10000; pulse duty cycle = 50% UINT_T duty; UINT_T cycle; UINT_T frequency; // (bet: Hz) } TUYA_PWM_BASE_CFG_T; ```
polarity:
| 名字 | 定义 | 备注 |
| TUYA_PWM_NEGATIVE | PWM低有效输出 | |
| TUYA_PWM_POSITIVE | PWM高有效输出 | |
count_mode:
计数模式,有TUYA_PWM_CNT_UP和TUYA_PWM_CNT_UP_AND_DOWN两种。
duty:
占空比,和cycle搭配使用,输出 = duty / cycle 。
cycle:
周期,或颗粒度,输出 = duty / cycle。
frequency:
输出频率,单位Hz。
- 返回值:
- OPRT_OK 成功,其他请参考文件tuya_error_code.h。
tkl_pwm_deinit
OPERATE_RET tkl_pwm_deinit(TUYA_PWM_NUM_E ch_id);
- 功能描述:
- pwm实例反初始化。
- 该接口会停止pwm实例正在进行的传输(如果有),并且释放相关的软硬件资源。
- 参数:
- 返回值:
- OPRT_OK 成功,其他请参考文件tuya_error_code.h。
tkl_pwm_start
OPERATE_RET tkl_pwm_start(TUYA_PWM_NUM_E ch_id);
- 功能描述:
- 参数:
- 返回值:
- OPRT_OK 成功,其他请参考文件tuya_error_code.h。
tkl_pwm_stop
OPERATE_RET tkl_pwm_stop(TUYA_PWM_NUM_E ch_id);
- 功能描述:
- 参数:
- 返回值:
- OPRT_OK 成功,其他请参考文件tuya_error_code.h。
tkl_pwm_multichannel_start
OPERATE_RET tkl_pwm_multichannel_start(TUYA_PWM_NUM_E *ch_id, UINT8_T num);
- 功能描述:
- 同时启动多通道pwm,用于多路组合输出,用于对时序要求比较严格的场景。
- 参数:
ch_id: 通道号列表,数组。
- num:启动的通道号数目
- 返回值:
- OPRT_OK 成功,其他请参考文件tuya_error_code.h。
tkl_pwm_multichannel_stop
OPERATE_RET tkl_pwm_multichannel_stop(TUYA_PWM_NUM_E *ch_id, UINT8_T num);
- 功能描述:
- 同时停止多通道pwm,用于多路组合输出,对时序要求比较严格的场景。
- 参数:
ch_id: 通道号列表,数组。
- num:需要关闭的通道号数目
- 返回值:
- OPRT_OK 成功,其他请参考文件tuya_error_code.h。
tkl_pwm_info_set
OPERATE_RET tkl_pwm_info_set(TUYA_PWM_NUM_E ch_id, CONST TUYA_PWM_BASE_CFG_T *info);
- 功能描述:
- 重设pwm配置参数,pwm start之后可动态修改配置,补充重新start。
- 参数:
ch_id: 通道号。
info: pwm基础配置,包含输出极性,占空比,频率 。其结构体参数见上文描述
- 返回值:
- 错误码,OPRT_OK 成功,其他请参考文件tuya_error_code.h。
tkl_pwm_info_get
OPERATE_RET tkl_pwm_info_get(TUYA_PWM_NUM_E ch_id, TUYA_PWM_BASE_CFG_T *info);
- 功能描述:
- 参数:
ch_id: 通道号。
info: pwm基础配置,包含输出极性,占空比,频率 。其结构体参数见上文描述
- 返回值:
- 错误码,OPRT_OK 成功,其他请参考文件tuya_error_code.h。
示例1
void tuya_pwm_test(void)
{
OPERATE_RET ret;
.duty = 1000,
.cycle = 10000,
.frequency = 1000};
if (ret != OPRT_OK) {
return;
}
if (ret != OPRT_OK) {
return;
}
if (ret != OPRT_OK) {
return;
}
if(cfg.duty !=5000){
cfg.duty =5000;
}
if (ret != OPRT_OK) {
return;
}
if (ret != OPRT_OK) {
return;
}
}
pwm config
Definition: tuya_cloud_types.h:824
OPERATE_RET tkl_pwm_deinit(TUYA_PWM_NUM_E ch_id)
pwm deinit
OPERATE_RET tkl_pwm_stop(TUYA_PWM_NUM_E ch_id)
pwm stop
OPERATE_RET tkl_pwm_info_get(TUYA_PWM_NUM_E ch_id, TUYA_PWM_BASE_CFG_T *info)
get pwm info
OPERATE_RET tkl_pwm_info_set(TUYA_PWM_NUM_E ch_id, CONST TUYA_PWM_BASE_CFG_T *info)
set pwm info
OPERATE_RET tkl_pwm_start(TUYA_PWM_NUM_E ch_id)
pwm start
OPERATE_RET tkl_pwm_init(TUYA_PWM_NUM_E ch_id, CONST TUYA_PWM_BASE_CFG_T *cfg)
pwm init
VOID_T tkl_system_delay(UINT_T num_ms)
system delay