liehuf-notes liehuf-notes
首页
K230
Verilog
留言板
我的博客 (opens new window)
GitHub (opens new window)
首页
K230
Verilog
留言板
我的博客 (opens new window)
GitHub (opens new window)
  • 1.K230 简单介绍
  • 2.K230 micropython基础
  • 3.K230 FPIOA&GPIO - 一切的根源
  • 4.K230 PWM的玩法
    • 1. 什么是PWM?
      • 🔧 PWM的关键参数
    • 2. K230的PWM能力概览
    • 3. 示例一:控制蜂鸣器发声
      • 💡说明:
    • 4. 示例二:播放《一闪一闪亮晶晶》
    • 5. 核心知识点解析
      • ✅ 引脚配置
      • ✅ PWM初始化
      • ✅ 发声逻辑
    • 6. 常见应用场景
    • 7. 注意事项
    • 8. 参考资料
    • 免责声明
  • 5.K230 UART-发送和接收
  • 6.K230 RTC-时间都去哪了
  • 7.我用定时器定时画个圈圈祝福你
  • 8.修勾别复位,我来喂你
  • 9.哈基摄,给我拍
  • 10.摄像头的基本素养-画面
  • 11.摄像头的猫-在画面上画画
  • K230
猎户f
2025-06-17
目录

4.K230 PWM的玩法

# K230 PWM的玩法

# 1. 什么是PWM?

PWM(Pulse Width Modulation,脉宽调制)是一种常用于控制电气设备的技术,能通过调节信号的占空比来模拟模拟信号,从而控制功率、电压或亮度等参数。

# 🔧 PWM的关键参数

参数 含义
频率 信号1秒内重复的次数,单位Hz
占空比 一个周期内高电平持续时间的比例,单位%
分辨率 控制占空比精度的能力(比如8位表示可分为256档)

# 2. K230的PWM能力概览

K230支持多个硬件PWM通道,通过 FPIOA(现场可编程IO阵列) 可将任意GPIO映射为PWM输出,为你带来极大的控制灵活性。典型应用包括蜂鸣器、LED调光、电机调速等。


# 3. 示例一:控制蜂鸣器发声

import time
from machine import PWM, FPIOA

# 设置GPIO43为PWM1功能
fpioa = FPIOA()
fpioa.set_function(43, FPIOA.PWM1)

# 初始化PWM通道1:4kHz频率,50%占空比
beep = PWM(1, freq=4000, duty=50, enable=False)

# 发声
beep.enable(True)
time.sleep_ms(50)
beep.enable(False)

# 清理资源
beep.deinit()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 💡说明:

  • PWM频率4kHz是人耳可听范围内的标准蜂鸣器驱动频率
  • enable() 控制是否发声
  • deinit() 用于释放PWM资源

# 4. 示例二:播放《一闪一闪亮晶晶》

import time
from machine import PWM, FPIOA

fpioa = FPIOA()
fpioa.set_function(43, FPIOA.PWM1)
beep = PWM(1, 1000, 50, enable=False)

notes = {
    'C4': 261, 'D4': 293, 'E4': 329, 'F4': 349,
    'G4': 392, 'A4': 440, 'B4': 493, 'C5': 523
}

melody = [
    ('C4', 500), ('C4', 500), ('G4', 500), ('G4', 500),
    ('A4', 500), ('A4', 500), ('G4', 1000),
    ('F4', 500), ('F4', 500), ('E4', 500), ('E4', 500),
    ('D4', 500), ('D4', 500), ('C4', 1000)
]

def play_tone(note, duration):
    freq = notes.get(note, 0)
    if freq > 0:
        beep.freq(freq)
        beep.enable(True)
        time.sleep_ms(duration)
        beep.enable(False)
        time.sleep_ms(50)

for note, duration in melody:
    play_tone(note, duration)

beep.deinit()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

# 5. 核心知识点解析

# ✅ 引脚配置

  • 使用 FPIOA.set_function(pin, FPIOA.PWMx) 映射功能
  • 示例中 GPIO43 被映射为 PWM1 输出

# ✅ PWM初始化

PWM(channel, freq, duty, enable=False)
1
  • channel: PWM通道(0~3)
  • freq: 输出频率(Hz)
  • duty: 占空比(百分比,0~100)

# ✅ 发声逻辑

  • enable(True) 开启发声
  • enable(False) 静音
  • 音符之间要有空隙,否则听起来像“噪声汤”

# 6. 常见应用场景

应用 描述
无源蜂鸣器 利用PWM发出不同频率的音调
LED调光 改变占空比控制亮度
电机控制 占空比调节转速
舵机驱动 特定频率和占空比的控制脉冲

# 7. 注意事项

  1. 无源蜂鸣器必须用PWM驱动,有源则不需要
  2. 不同硬件对PWM频率和占空比的反应不同,需根据器件调试
  3. 使用完PWM记得调用 .deinit() 释放资源
  4. 占空比设为 0 或 100 也等效于低/高电平输出,适用于测试

# 8. 参考资料

  • K230 PWM文档 (opens new window)
  • MicroPython PWM模块官方手册

# 免责声明

本文档及所有内容(包括文字、图片、代码等)均为作者基于嘉立创庐山派K230开发板公开资料和个人使用经验整理分享,仅供学习和技术交流之用。

所有涉及的品牌名称、商标、图片及相关资源均归嘉立创官方所有,未经授权不得用于商业宣传或其他用途。

作者与嘉立创官方无任何隶属或代理关系,内容不构成任何形式的官方承诺或保证。

用户在使用相关资源时,应遵守相应的开源协议和法律法规,确保合法合规。

如涉及版权问题,请联系作者或嘉立创官方处理。


帮助我们改善此页面 (opens new window)
上次更新: 2025/07/12, 16:01:22
3.K230 FPIOA&GPIO - 一切的根源
5.K230 UART-发送和接收

← 3.K230 FPIOA&GPIO - 一切的根源 5.K230 UART-发送和接收→

Theme by Vdoing | Copyright © 2025-2025 Eryajf | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式