收藏官网首页
查看: 3672|回复: 0

[经验分享] esp8266 gpio输出及引脚复用

106

主题

107

帖子

7264

积分

论坛元老

Rank: 8Rank: 8

积分
7264
跳转到指定楼层
楼主
 楼主| 发表于 2023-9-19 23:13:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
注册成为机智云开发者,手机加虚拟设备快速开发
    esp8266的GPIO引脚不仅仅用于控制外部电路,它们还与设备的功能息息相关,如设备的休眠和启动。因此,**电路复杂的情况下,我们需要对GPIO进行复用或者重新配置GOIO的功能。

首先是引脚的配置

espressif官方提供的nonos sdk里,GPIO 相关接⼝位于 /ESP8266_NONOS_SDK/include/eagle_soc.h & gpio.h,我们在这个文件里,能找到对应引脚支持的复用功能,这里以12 13 14引脚为例

从规格书中我们可以看到这组引脚不仅可以用作GPIO口,还可以用于SPI通信



接下来,我们转到eagle_soc.h看看相关的定义



在这里,我们可以看到一个IO口的**。**实际上是对寄存器的配置,同时也定义了IO口支持的功能。如果我们要将引脚12、13和14配置为普通的IO引脚,我们可以使用PIN_FUNC_SELECT函数来选择引脚功能,如下:

  1. PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12);
  2.         PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, FUNC_GPIO13);
  3.         PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U, FUNC_GPIO14);
复制代码

在这里,我们只是完成了引脚的配置。如果我们需要将引脚用于I2C通信或其他协议,可能需要配置引脚的上拉或下拉模式。通常我们购买的贴片ESP8266的部分引脚已经完成了内部上拉。从官方的原理图中也可以看出,对于没有内部上拉或下拉的IO口,我们需要使用以下宏定义来启用或禁用引脚的上拉:

  1. PIN_PULLUP_DIS(io)或者PIN_PULLUP_EN(io);
复制代码

在完成IO引脚的配置后,我们需要启用IO的输出功能。Espressif的SDK提供了两种方式来启用GPIO的输出。第一种是使用宏定义进行输出,第二种是调用函数进行输出。调用函数的好处是能够同时配置多个引脚如:

宏定义输出:
  1. GPIO_OUTPUT_SET(gpio,bit_value);
复制代码

使用函数同时多个引脚输出:
  1. gpio_output_set(BIT12|BIT13,0,IT12|BIT13,0);
复制代码

对于此函数,第一个参数是设置输出为⾼的位,对应位为1,输出⾼,对应位为0,不改变状态
第二个是设置输出为低的位,对应位为1,输出低,对应位为0,不改变状态,第三个是设置使能输出的位,第四个是设置使能输⼊的位。因此我们使用gpio作为输出,只需要使用前三个参数即可。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表