一起玩儿物联网人工智能小车(ESP32)——21. ESP32的LED PWM控制器说明

摘要:本文介绍ESP32的LED PWM控制器的详细原理说明

ESP32芯片提供了2种用于输出PWM的信号的PWM控制器,一种LED控制器(LEDC),一种是马达PWM控制器(MCPWM)。其中MCPWM是专门用于马达调速控制的控制器,这个留在以后再讲解。今天讲解相对简单的LEDC。

LEDC虽然叫LED控制器,是主要用来控制LED,但其产生的信号用于其他设备的控制也是没有问题的。

LEDC是指LED PWM控制器,它有16路外接通道,其中8路为高速通道,另外8路为低速通道。每一个通道都可以使用不同的时钟源。

高速通道模式在硬件中实现,可以自动且无干扰地改变PWM占空比。而低速通道模式下的PWM占空比则需要由软件中的驱动器改变。高速模式的优点是可平稳地改变定时器设置。也就是说,高速模式下如定时器设置改变,在该定时器的下一次溢出中断后自动生效。而更新低速定时器的设置时,并不会自动生效,需要由软件通过函数调用来使其生效。

在使用LED PWM控制器生成PWM信号时,首先需要进行以下两个设置:

一、定时器配置

在进行定时器的配置时,需要给出以下一些信息:

  1. 速度模式,也就是使用LEDC的高速模式还是低速模式。
  2. 定时器索引,指定使用哪一个定时器。
  3. PWM信号频率,用于指定生成PWM信号的频率。
  4. PWM信号占空比分辨率,这个参数决定着PWM信号的占空比。PWM信号的频率参数和占空比分辨率是相关联的,频率越高,占空比分辨率越低,反之亦然。
  5. 时钟源,指定LEDC所使用的时钟源,这个时钟源也与PWM信号频率相关,时钟源的频率越高,可以配置的PWM信号频率上限也就越高。

下表列举了ESP32 LEDC时钟源的时钟频率、速度模式和相关特性:Á

时钟名称

时钟频率

速度模式

时钟功能

APB_CLK

80 MHz

高速 / 低速

/

REF_TICK

1 MHz

高速 / 低速

支持动态调频 (DFS) 功能

RC_FAST_CLK

~ 8 MHz

低速

支持动态调频(DFS)功能,支持 Light-sleep 模式

那么PWM信号占空比最大分辨率与指定的时钟源频率、输出的PWM信号频率之间的关系如下公式所示:

其中:floor()函数为向下取整。

下表为不同时钟源对应常用的PWM信号频率的PWM信号占空比最大分辨率和PWM信号的最高精度。

LEDC时钟源

LEDC输出(PWM)频率

占空比最大分辨率

最高精度

APB_CLK (80 MHz)

1 kHz

16 bit

1/65536

APB_CLK (80 MHz)

5 kHz

13 bit

1/8192

APB_CLK (80 MHz)

10 kHz

12 bit

1/4096

RTC8M_CLK (8 MHz)

1 kHz

12 bit

1/4096

RTC8M_CLK (8 MHz)

8 kHz

9 bit

1/512

REF_TICK (1 MHz)

1 kHz

9 bit

1/512

所以,在开发的时候,要依据计划输出的PWM信号的频率和可以选取的时钟源来计算出所生成PWM信号占空比的最高精度,以此来判断是否满足设计的要求。

配置完LEDC的定时器后,还需要进行通道配置。

二、通道配置

通道配置的有些参数与前面定时器配置的参数含义相同,这里就不解释了。最主要的不同就是要指定PWM信号输出GPIO引脚,也就是由那个GPIO引脚输出PWM信号。在选择GPIO引脚的时候同样要注意之前说的注意事项。最关键的就是两点,一是有特殊功能且被占用的引脚不能使用,另一个就是只有输入功能的GPIO不能使用。

在完成通道的配置后,该通道便开始运行,并在选定的GPIO引脚上生成由定时器设置指定的频率和占空比的PWM信号。

PWM信号在输出的过程中,开发人员还可以通过软件来改变PWM信号的频率和占空比。另外,LEDC也提供了硬件自动改变占空比,也就是不在CPU的干预下,可以自动的改变输出PWM信号的占空比,这个功能主要用来实现LED的颜色和亮度的渐变。

好了,ESP32的LEDC PWM控制器的基本知识就介绍到这里了,似乎有些复杂,一时理解不了也没关系,初期能够照着例子把程序做出来就可以了。这么多参数也不是都需要配置的,开发软件会给很多参数选取合适的默认值。所以,真正开发起来,并不是那么的难。

今天就到这里了,接下来会讲解如何用Mixly实现PWM波形的输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/281614.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

缺失的第一个正数(LeetCode 41)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路4.1 暴力4.2 排序4.3 哈希表4.4 空间复杂度为 O(1) 的哈希表4.5 置换 参考文献 1.问题描述 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级…

k8s搭建(详细演示完整一篇)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

2023年度总结—你是你的年度MVP吗?

这段年度总结其实我之前就想写了,大概就是市赛比完之后18号的样子把,但是因为太懒了就一直拖到了现在哈哈,我思来想去,翻来覆去,彻夜难眠,想了想,还是决定把它写了吧!毕竟&#xff0…

【ROS2】MOMO的鱼香ROS2(一)ROS2入门篇——从Ubuntu操作系统开启

从Ubuntu操作系统开启 引言1 术语汇总2 Ubuntu (操作系统)2.1 Ubuntu权限管理2.2 Ubuntu安装软件2.2.1 使用apt命令安装2.2.2 dpkg安装deb包2.2.3 make install源代码安装 2.3 Ubuntu之常用指令2.3.1 ls命令(查看文件)2.3.2 cd 命…

生财有术项目精选

生财有术项目精选 25700读者,71内容 这绝对是小报童这个平台的第一名了,背靠着生财有术这个国内最大的副业平台,再加上现如今的副业热潮,成功造就了2W订阅的奇迹 专栏包含66个精选实操赚钱项目,可以说每一个项目都蕴含…

Vue(二):计算属性与 watch 监听器

03. Vue 指令拓展 3.1 指令修饰符 可以通过 . 来指明一些指令的后缀,不同的后缀中封装了不同的操作,可以帮助我们简化代码,比如之前使用过的监听 enter 键的弹起,我们需要操作事件对象,来检测用户使用了哪个键&#…

Python 中的运算符介绍(1)

算数运算符 常见的% 、//、/ 用法 赋值运算符 赋值运算:将等号右边赋值给等号左边 常见场景: 比较运算符 代码解析: 逻辑运算符 位运算符(了解) 三目运算符 身份证运算符 成员运算符

Vue独立组件开发-动态组件

文章目录 一、前言二、实现三、优化四、总结五、最后 一、前言 在开发中&#xff0c;你经常会遇到这么一种情况&#xff1a;根据条件动态地切换某个组件&#xff0c;或动态地选择渲染某个组件。 Vue 提供了另外一个内置的组件 <component> 和 is 特性&#xff0c;可以更…

【零基础入门VUE】在 Vue 中构建复杂表单

✍面向读者&#xff1a;所有人 ✍所属专栏&#xff1a;零基础入门VUE专栏https://blog.csdn.net/arthas777/category_12537076.html 目录 v-modelVue 中的 指令 Vue 中的组件 没有构建步骤 随着构建步骤 注册 VUE 组件 Vue 道具 VUE 中的道具声明 在 VUE 中传递 PROP…

【web安全】短信等各类验证码的绕过思路整理

前言 本文是对一些验证码可能出现的问题的总结。 验证码的种类分析 首先验证码有两种&#xff1a; 1.短信验证码&#xff0c;这种通常出现在一些登录&#xff0c;修改绑定信息等位置处。 2.人机验证码&#xff0c;这种一般是用来防止机器操作和密码爆破的&#xff0c;通常…

计算机组成原理-总线概述

文章目录 总线简图总线的物理实现总览总线定义总线的特性总线的分类按数据格式分类串行总线并行总线 按总线功能分类注意系统总线的进一步分类 总线的结构单总线的机构双总线的结构三总线的结构四总线的结构 小结 总线简图 总线的物理实现 如果该为数据总线&#xff0c;那么当…

【openlayers-3】加载图标

目录 1、通过overlay方式添加 2、通过overlay css方式 3、通过Feature style方式实现 在OpenLayer3中添加图标有两种方式&#xff0c;一种是通过overlay方式&#xff0c;另一种是通过Feature Style的方式。 1、通过overlay方式添加 <div id"mapCon" styl…

如何部署Tale博客网站并发布个人站点到公网随时随地远程访问?

文章目录 前言1. Tale网站搭建1.1 检查本地环境1.2 部署Tale个人博客系统1.3 启动Tale服务1.4 访问博客地址 2. Linux安装Cpolar内网穿透3. 创建Tale博客公网地址4. 使用公网地址访问Tale 前言 今天给大家带来一款基于 Java 语言的轻量级博客开源项目——Tale&#xff0c;Tale…

[HNCTF 2022 Week1]2048

[HNCTF 2022 Week1]2048 wp 通过调试 js 代码赋值来输出 flag 。 搜索 alert &#xff1a; 找到了&#xff0c;这里就是弹出 flag 的地方。 简单分析一下&#xff0c;其触发条件是 this.score > 20000 &#xff0c;那么只需调试代码到此处&#xff0c;将 this.score 赋值…

穷举vs暴搜vs深搜vs回溯vs剪枝

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;全排列&#x1f449;&#…

dll文件和exe文件的区别和关系

dll文件 DLL(Dynamic Link Library)文件为动态链接库文件&#xff0c;又称"应用程序拓展"&#xff0c;是软件文件类型。在Windows中&#xff0c;许多应用程序并不是一个完整的可执行文件&#xff0c;它们被分割成一些相对独立的动态链接库&#xff0c;即DLL文件&…

快速找回误删的文件:2024 年顶级数据恢复软件大盘点

你曾经遇到过数据丢失的问题吗&#xff1f;别担心&#xff0c;12个最佳数据恢复软件帮你恢复。 计算机中的数据恢复是从辅助存储、丢失的文件或介质中恢复已删除、不可恢复、损坏、损坏和格式化的数据的过程。存储的数据可以通过正常方式带回到同一个地方&#xff0c;甚至&…

GAMES101:作业4记录

文章目录 总览算法编写代码&#xff1a;recursive_bezier()的实现Bezier()函数的实现提高部分&#xff1a;反走样 总览 Bzier 曲线是一种用于计算机图形学的参数曲线。在本次作业中,你需要实现 de Casteljau 算法来绘制由 4 个控制点表示的 Bzier 曲线 (当你正确实现该算法时,…

【Java开发岗面试】八股文—操作系统

声明&#xff1a; 背景&#xff1a;本人为24届双非硕校招生&#xff0c;已经完整经历了一次秋招&#xff0c;拿到了三个offer。本专题旨在分享自己的一些Java开发岗面试经验&#xff08;主要是校招&#xff09;&#xff0c;包括我自己总结的八股文、算法、项目、HR面和面试技巧…

【ARMv8M Cortex-M33 系列 2.1 -- Cortex-M33 使用 .hex /.srec 文件介绍】

请阅读【嵌入式开发学习必备专栏 之Cortex-M33 专栏】 文章目录 HEX 文件介绍英特尔十六进制文件格式记录类型hex 示例Cortex-M 系列hex 文件的使用 hex 文件和srec 文件生成Motorola S-Record (srec) 格式 HEX 文件介绍 .hex 文件通常用于微控制器编程&#xff0c;包括 ARM C…
最新文章