1 Star 0 Fork 22

Tairitsu / Waffle NanoV1 Python API Doc

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 5.39 KB
一键复制 编辑 原始数据 按行查看 历史
得到宽恕的无知 提交于 2021-07-15 02:35 . 修复 PWM 文档错误

PWM脉宽调制

概要

  • 脉宽调制技术的原理与属性(占空比,频率)
  • 通过PWM脉宽调节技术控制LED的亮度的演示实例。

什么是PWM脉宽调制技术

  • PWM的全称为Pulse Width Modulation脉冲宽度调节,是把模拟信号调制成脉波的技术。

占空比

  在一个周期内,高电平时间占总体周期的比例,称之为占空比 (duty)

pwm

  例如PWM的控制周期为100ms,其中20ms为高电平,80ms为低电平,则占空比就是 20/100 = 20%。

  注意有时候占空比有时候在嵌入式并不是百分比,而是参考其分辨率

  分辨率越高,也就意味着你可以调节的亮度的档位也就越高,引脚输出的平均电压处于0-3.3v之间 划分成1024份,你可以取其任意一个。

频率

  PWM的第二个属性是频率, 频率为控制周期T的倒数。在上面这个例子里面,100ms就是控制周期,那频率就是1s / 0.1s = 10HZ

  频率的取值范围由硬件决定。

PWM脉宽调制通用方法集合

 PWM脉宽调制定义了操作PWM的通用方法集合,包括:

  • 获取、释放设备句柄
  • 读写数据、获取和设置波特率
  • 获取和设置设备属性。

PWM引脚定义

  共有14个引脚有PWM功能:

  总共6组PWM。(注意,在Waffle Nano中 9、10号引脚作为与板载传感器沟通的主要线路,3,4号引脚为python REPL代码交互用引脚,已被占用,均无法进行二次调用)

引脚 功能
pin 4、pin 8、pin 10 PWM1 OUT
pin 7、pin 9 PWM0 OUT
pin 4、pin 8、pin 10 PWM1 OUT
pin 2、pin 5、pin 11 PWM2 OUT
pin 0、pin 6、pin 12 PWM3 OUT
pin 1、pin 4 PWM4 OUT
pin 3、pin 14 PWM5 OUT

machine.PWM API详解

  PWM可在所有输出引脚上启用。但其存在局限:须全部为同一频率,且仅有8个通道。

  使用from machine import PWM导入 machine 模块的脉宽调制类 PWM

  再使用 TAB 按键来查看 PWM 中所包含的内容:

>>> from machine import PWM
>>>PWM.
deinit          duty            freq            init

  class machine.PWM(id, Pin(),freq,duty)

  id :PWM组号。

  Pin() :有PWM组号相应功能的引脚。

  freq :频率,频率范围由硬件决定,最低输出频率为611赫兹,最高数据频率为65535赫兹。

  duty :占空比,介于0至100的闭开区间。

创建PWM对象

  利用类对象创建PWM

  示例:

>>> from machine import Pin,PWM
>>> p = PWM(0, Pin(7),freq=2442,duty=50) #构建PWM 0对象,频率为2442赫兹,占空比为50%

函数

  在接下来的示例中, 构造id=0PWM对象来列举PWM对象的函数。

>>>from machine import PWM
>>>pwm = PWM(0,Pin(7))#构建PWM0

初始化

  pwm.init(freq ,duty)

  函数说明:初始化PWM脉宽调制

  参数含义同上文类构造一致

>>> from machine import Pin,PWM
>>> pwm = PWM(0,Pin(7))
>>> pwm.init(freq=2442,duty=50)#初始化PWM频率为2442,占空比为50

频率

  pwm.freq()

  函数说明:设置PWM频率

  频率范围由硬件决定

>>> from machine import Pin,PWM
>>> pwm = PWM(0,Pin(7))#创建PWM 0对象
>>> pwm.freq(2442)#设置PWM频率为2442

占空比

  pwm.duty()

  函数说明:设置PWM占空比

  占空比为50%

>>> from machine import Pin,PWM
>>> pwm = PWM(0,Pin(7))#创建PWM 0对象
>>> pwm.duty(50)#设置PWM占空比为50%

释放资源

  pwm.deinit()

  函数说明:pwm使用完了之后,需要销毁,释放资源,否则引脚将继续保持在PWM模式

>>> from machine import Pin,PWM
>>> pwm = PWM(0)#创建PWM 0对象
>>> pwm.deinit()#释放pwm 0资源

示例

  将waffle nano的一些GPIO引脚构造成PWM,设置其频率和占空比。

from machine import Pin,PWM
p = PWM(0, Pin(7))
p.freq(2442)
p.freq(3442)
p.duty(50)
p.deinit()

  第一行导入machine模块的硬件类Pin和脉宽调制类PWM

  第二行创建PWM对象

  • 0 — 构造的是PWM 0
  • Pin(7) — GPIO 7号引脚实现PWM 0功能

  三四行设置PWM 0的频率

  第五行设置PWM 0的占空比为50%

  第六行释放PWM 0资源

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/Tempestissimo/waffle_nano_v1_python_api_document.git
git@gitee.com:Tempestissimo/waffle_nano_v1_python_api_document.git
Tempestissimo
waffle_nano_v1_python_api_document
Waffle NanoV1 Python API Doc
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891