注意

这是最新开发分支配套的文档,可能包含已发布版本中尚未提供的功能。如果您要查看特定版本的文档,请使用左侧的下拉菜单并选择所需要的版本。

PWM 使用教程#

什么是 PWM?#

PWM(Pulse Width Modulation,脉宽调制) 是一种通过控制数字信号的**高低电平比例(占空比)**来模拟模拟信号的方法。常用于:

  • 控制 LED 亮度

  • 驱动电机速度

  • 调节音频音量

  • 生成音调/方波等信号

K230 内部集成了两个 PWM 硬件模块,每个模块支持 3 个通道(共计 6 个通道):

  • 通道 0~2 使用同一个时钟源(频率相同,占空比分别设置)

  • 通道 3~5 使用另一个独立时钟源

  • 每个通道均可通过 IOMUX 配置到不同的输出引脚

示例概览#

以下示例演示了如何使用 K230 的 PWM 模块完成以下操作:

  • 初始化并启动 PWM 输出

  • 动态调节频率与占空比

  • 释放 PWM 通道资源

1. 导入模块并初始化 PWM#

from machine import PWM, Pin

# 初始化 PWM 通道 0,设置频率为 1kHz,占空比为 50%
pwm0 = PWM(Pin(42), freq=1000, duty=50)
  • PWM(通道号, 频率Hz, 占空比%) 创建指定通道的 PWM 输出,输出 1kHz 方波,占空比为 50%

2. 动态调节频率和占空比#

# 修改通道 0 的输出频率为 2kHz
pwm0.freq(2000)

# 修改占空比为 10%
pwm0.duty(10)
  • freq(x):设置输出频率(单位:Hz)

  • duty(x):设置占空比(单位:%,范围 0~100)

3. 释放通道资源#

# 完全释放通道 0,关闭输出并释放底层资源
pwm0.deinit()
  • deinit():关闭通道、释放资源,适用于退出场景或切换功能

4. 示例输出波形说明#

假设我们设置通道 0 输出 1kHz、50% 占空比的 PWM 波形,其波形为:

周期 T = 1ms
高电平时间 = 0.5ms,低电平时间 = 0.5ms
|‾‾‾‾‾     ‾‾‾‾‾     ‾‾‾‾‾
|     ‾‾‾‾‾     ‾‾‾‾‾     

若将占空比调整为 10%,波形如下:

|‾     ‾     ‾     ‾
|                   

PWM 通道说明#

通道号

所属模块

时钟共享组

0

PWM0

Group A

1

PWM0

Group A

2

PWM0

Group A

3

PWM1

Group B

4

PWM1

Group B

5

PWM1

Group B

⚠ 注意:同一组的通道共用一个频率,但占空比可以独立设置

应用场景#

  • LED 亮度调节(通过占空比控制亮度)

  • 蜂鸣器发声(通过频率控制音调)

  • 舵机控制(特定占空比控制转角)

  • 直流电机调速(通过 PWM 控制电压平均值)

  • 信号波形发生器(方波、PWM 调制波等)

延伸阅读#

评论列表
条评论
登录