MicroPython-On-ESP8266——GPIO引脚

本文介绍了ESP8266EX芯片的GPIO管脚功能,包括I/O引脚的使用、上拉/下拉配置、中断事件及其实现。通过示例展示了如何控制GPIO引脚状态以及设置中断回调函数。还提到了GPIO16的特殊限制,即无上拉模式,以及外部中断在其他引脚上的应用。
摘要由CSDN通过智能技术生成

芯片管脚介绍

开发板能做什么功能,取决于核心芯片的支持,ESP8266EX是乐鑫公司研制的一款物联网wifi低功耗芯片。乐鑫官方产品规格书对芯片的管脚定义如下

在这里插入图片描述

黑色:管脚序号 & 名称 | 紫色:管脚类型 | 红色:用途介绍

GPIO Pin

上图中类型为I/O的管脚即为GPIO引脚,作为与外界交互的输入与输出端使用,如控制led灯、蜂鸣器、读取温湿度传感器数据、输出PWM脉冲信号等。

红色用途字体中,有对可用GPIO引脚的说明和号码的定义,实际上只有以下这些才是可用的GPIO引脚

  • GPIO0
  • GPIO2
  • GPIO4
  • GPIO5
  • GPIO12
  • GPIO13
  • GPIO14
  • GPIO15
  • GPIO16

其他的都有特殊用途(如:GPIO1 & GPIO3被用作UART与硬件进行信息交互的接口,前面进的REPL就是通过这两个引脚来实现的)

代码控制Pin

>>> from machine import Pin  # 从machine库中引入Pin
>>> pin = Pin(2, Pin.OUT)    # 实例化一个Pin,使用GPIO2,并定义模式为输出
>>> pin.value(0)             # 设置pin为低电平
>>> pin.on()                 # 设置pin为高电平

开发板板载了一个LED灯,接在GPIO2引脚上,而且是反接的。所以当pin.value(0)给低电平时,反而点亮了灯。

8266开发板在实例Pin对象时,还有一个pull参数,可以定义引脚pull为无模式None或者上拉模式 PULL_UP

上拉/下拉其实对于没有电工电子基础的我来说也比较蒙圈。查了些资料,大概意思是芯片内部对于GPIO的驱动能力是有限的,当驱动不足时 (以下理解可能有误,待学习深入以后再过来确认和纠正)

配合上拉电阻可以提高引脚电平值,从而达到外部器件的输入要求。(向外拉电流)(外部接GND)
配合下拉电阻可以降低引脚的电流,从而小于外围器件电流,方便外部输入。(向内灌电流)(外部接VCC)

  1. esp8266没有下拉模式
  2. GPIO16引脚没有上拉模式,所以这个引脚不能用OUT模式来控制外部器件,只能读取外部输入值

外部中断IRQ

除GPIO16外,其他引脚都可以响应输入中断事件。可以给中断配置回调函数来实现定制的功能。

先定义一个简单的回调:

>>> def callback(p):
...     print('pin changed', p)

使用两个引脚来测试中断事件

>>> from machine import Pin
>>> p4 = Pin(4, Pin.IN)
>>> p5 = Pin(5, Pin.IN)

给引脚绑定中断类型和响应回调

>>> p4.irq(trigger=Pin.IRQ_FALLING, handler=callback)
>>> p5.irq(trigger=Pin.IRQ_RISING | Pin.IRQ_FALLING, handler=callback)
  • tigger 中断类型
    • IRQ_RISIONG 即引脚从低电平转变为高电平,
    • IRQ_FALLING反过来从高电平转变为低电平
  • handler 绑定事件(回调函数)

REPL中执行上面代码后,用手去触碰4、5引脚,可以看到回调函数打印的日志。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值