找回密码
 立即注册
首页 业界区 安全 《DNESP32P4开发指南_V1.0》第十一章 LED实验 ...

《DNESP32P4开发指南_V1.0》第十一章 LED实验

孜稞 5 小时前
第十一章 LED实验
本章教程介绍了ESP32-P4的GPIO输出应用,通过点灯例程帮助大家理解其基本功能。点灯作为经典的测试案例,能够让读者对ESP32-P4的应用有一个简单而全面的认识,为后续更复杂的项目奠定基础。
本章分为如下几个小节:
11.1 GPIO及LED介绍
11.2 硬件设计
11.3 程序设计
11.4 下载验证
11.1 GPIO及LED介绍
11.1.1 GPIO简介
ESP32-P4芯片提供了55个通用输入输出(GPIO)功能,使其在各种应用中具备灵活性和适应性。这些GPIO的主要特点包括:
1,多功能性:每个GPIO引脚不仅可以作为输入或输出,还可以通过IO MUX配置为不同的功能(详细内容可回溯到第二章),例如PWM、ADC、I2C、SPI等,这使得ESP32-P4能够适应多种外设连接。
2,高电流输出:ESP32-P4的GPIO引脚支持高达40mA的电流输出,可以直接驱动LED等低功耗负载,降低了外部驱动电路的复杂性。
3,可编程性:通过ESP-IDF(SDK)开发框架,用户可以灵活地配置每个GPIO的输入输出模式、上拉下拉等参数,以满足特定应用需求。
4,中断支持:GPIO引脚支持中断功能,能够在信号变化时触发中断,适用于实时响应的应用,如按键检测、传感器触发等。
5,状态指示:GPIO可以用作LED指示灯,通过简单的高低电平切换,实现状态指示,方便用户调试和监控系统运行状态。
ESP32-P4的GPIO功能为开发者提供了强大的硬件支持。在本章中,我们将通过点灯的例程深入了解GPIO的应用与配置。
11.1.2 LED简介
LED(发光二极管)是一种高效、长寿命的小型半导体器件,通过电流发光,具有能量转换效率高、热量少和环境友好等优点。常用于指示灯、显示屏和照明设备,LED能够快速响应并提供多种颜色,使其在电子产品中应用广泛。在ESP32-P4的点灯例程中,GPIO的控制使得LED的开关变得简单而直观,帮助用户理解其应用。
1,LED灯发光原理
LED器件是一种以固态半导体为核心的发光器件。当在具有PN结的半导体材料两端加上正向电流时,半导体内部的载流子产生复合,使能量以光子的形式释放从而发光。因此,LED是冷光源,且不存在灯丝等发光引起的发热,易烧等缺陷。下图为LED器件的工作原理示意图。
1.png

图11.1.2.1 LED器件的工作原理
上图中,半导体PN结具有正向导通、反向截止和击穿特性。在外加偏压为零且处于热平衡时,PN结内部没有载流子复合,因此不发光。而当施加正向偏压时,PN结的发光过程可以分为三步:首先,载流子在正向偏压下被注入;其次,电子和空穴在P区复合,释放能量;最后,复合产生的能量以光的形式向外辐射。简单来讲,电流通过PN结时,电子在电场力作用下向P区移动,与空穴复合,释放出多余能量并产生光子,实现PN结的发光功能。
注意:LED的光颜色由所用半导体材料的能带宽度决定,不同材料产生不同波长的光,从而实现多样的颜色输出。这种高效的发光机制使LED在照明和指示应用中广泛使用。
2,LED灯驱动原理
LED驱动是指通过稳定的电源为LED提供适宜的电流和电压,确保其正常发光。LED驱动方式主要有恒流和恒压两种,其中,恒流驱动因其能限定电流而备受青睐。由于LED灯对电流变化极为敏感,一旦电流超过其额定值,可能导致损坏。因此,恒流驱动通过确保电流的稳定行,进而保障LED的安全运行。接下来,我们看一下LED两种驱动方式。
1)灌入电流接法。指的是LED的供电电流是由外部提供电流,将电流灌入我们的MCU,其风险是当外部电源出现变化时,会容易导致MCU的管脚烧坏。下图为灌入电流接法。
2.png

图11.1.2.2 灌入电流接法
2)输出流接法。指的是MCU提供电压电流,将电流输出给LED,若使用MCU的GPIO直接驱动LED,则驱动能力较弱,可能无法提供足够的电流驱动LED。下图为输出电流接法。
3.png

图11.1.2.3 输出电流接法
DNESP32P4开发板上的LED电路采用灌入电流接法,这种方式避免了MCU直接提供电压电流来驱动LED,从而有效减轻了MCU的负载。这使得MCU能够更加专注于执行其他核心任务,进而提升了整体系统的性能和稳定性。
3,LED的压降和驱动电流
正点原子DNESP32P4开发板的LED电路采用了如图11.1.2.22所示的电路来驱动LED灯。那么,这种电路流经LED的电流是多少呢?在讨论之前,我们需要先了解一个基础知识,即LED灯的压降参考值。以下是贴片LED的压降参考值:
1)红色的压降为1.821.88V,电流58mA。
2)绿色的压降为1.751.82V,电流35mA。
3)蓝色的压降为3.13.3V,电流810mA。
根据上述的贴片LED压降参考值,我们可以利用基尔霍夫电压定律计算图11.1.2.22中的LED电流。计算过程如下:
(3.3 – 1.8)/ 510R = 2.9mA
在不考虑二极管本身电阻的情况下,流过LED的电流为2.9 mA。尽管这个电流值不在贴片LED的标准电流参考范围内,但2.9 mA的电流仍足以让红色LED发光。
在许多电路中,无论是板载哪种颜色的LED,通常都会使用相同数值的限流电阻。这主要是出于统一物料和简化设计的考虑。使用相同的电阻值可降低生产和维护的复杂性,方便库存管理。此外,统一的电阻值还可以简化电路设计流程,使得设计人员在设计和调试时更加高效。
11.2 硬件设计
11.2.1 例程功能
在500 ms的周期内,LED0的电平状态会发生翻转。
11.2.2 硬件资源
1)LED灯
LED        0        - IO51
11.2.3 原理图
LED灯相关原理图,如下图所示。
4.png

图11.2.3.1 LED硬件原理图
上图中,LED0由ESP32-P4的GPIO51号管脚控制亮灭,而LED1则由IO扩展芯片的第13位管脚控制。在后续章节中,笔者将重点讲解如何通过IIC接口控制IO扩展芯片,以实现对各个扩展管脚的灵活控制。同时,PWR指示灯表示电源状态,插上电源时该灯会亮起。
11.3 程序设计
11.3.1 GPIO的IDF驱动
GPIO外设驱动位于ESP-IDF的components\esp_driver_gpio目录。该目录中的include文件夹存放GPIO相关的头文件,声明了GPIO函数和结构体等;而src文件夹则存放实际的GPIO操作函数。要使用GPIO功能,必须先导入以下头文件。
  1. #include "driver/gpio.h"
复制代码
接下来,作者将介绍一些常用的GPIO函数,这些函数的描述及其作用如下:
1,GPIO配置函数gpio_config
该函数用于配置GPIO的模式、上下拉等功能,其函数原型如下:
  1. esp_err_t gpio_config(const gpio_config_t *pGPIOConfig);
复制代码
函数形参:
5.png

表11.3.1.1 gpio_config函数形参描述
返回值:
ESP_OK表示操作成功。
ESP_ERR_INVALID_ARG表示参数错误。可能是由于提供了无效的GPIO配置,或者pGPIOConfig为空。
pGPIOConfig为指向GPIO配置结构体的指针。接下来,笔者将详细介绍gpio_config_t结构体中的各个成员变量,如下代码所示:
  1. typedef struct {
  2.     uint64_t pin_bit_mask;          /* GPIO引脚:位掩码设置,每个位映射到一个GPIO */
  3.     gpio_mode_t mode;               /* GPIO模式:设置输入/输出模式 */
  4.     gpio_pullup_t pull_up_en;       /* GPIO上拉配置 */
  5.     gpio_pulldown_t pull_down_en;   /* GPIO下拉配置 */
  6. gpio_int_type_t intr_type;      /* GPIO中断类型 */
  7. #if SOC_GPIO_SUPPORT_PIN_HYS_FILTER /* 不支持GPIO滞后控制 */
  8.     gpio_hys_ctrl_mode_t hys_ctrl_mode; /* GPIO滞后控制:对斜率输入的滞后滤波 */
  9. #endif
  10. } gpio_config_t;
复制代码
上述结构体用于配置GPIO引脚的各种参数,以下对各个成员做简单介绍。
1)pin_bit_mask:
设置管脚位。使用方法:1

相关推荐

您需要登录后才可以回帖 登录 | 立即注册