聊一聊万恶的esp家族中ESP-12F的管脚定义

店长大人 8.5m2021-04-1413144 次点击1 人收藏1 人感谢
平常DIY中,很多人都在使用ESP kits,常见的是开发板 ESP-8266,ESP32,NODEMCU等。
如果大家用的都很多,估计不会翻车。但我在画板子的时候,还是出了问题。经过多次验证,终于明白了官方所谓的管脚定义。所以,这篇文章就当个笔记,记录下一些心得体会。
0x01:首先,管脚定义:
![图](https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=564195720,2493910484&fm=26&gp=0.jpg)

来,一个一个说:
这里先说一个概念:pin,pin指的是芯片管脚号,不是名字,是芯片管脚脚序。在ESP-12F官方定义中,如下图。芯片右侧最上面那个脚是pin 1,然后往下依次到PIN8,然后最下面一排不算!!!不算!!!跳过!!从最左侧的最下面开始算,这个是PIN9!!依次往上累加,左侧最上为PIN16。
![管脚定义](https://ppmm.org/images/2021/04/14/b875dc63f7c662eb309ba98da6739c61.jpg)

好了。了解了Pin,我们再来看这一张图:
![管脚定义](https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fcbu01.alicdn.com%2Fimg%2Fibank%2F2017%2F928%2F463%2F4283364829_1706862693.jpg&refer=http%3A%2F%2Fcbu01.alicdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1620973827&t=9c8727c725bc136dc2444bd044229bb7)

这张图里面的英文标识及其GPIO标识是芯片管脚的功能名。其与管脚序号的对应关系及管脚功能是:
![e619f66aabef1b80889d549e37282558.jpg](https://ppmm.org/images/2021/04/14/e619f66aabef1b80889d549e37282558.jpg)

好的,接下来,我们讨论下在Arduino IDE中如何使用这些对应的IO口。
因为大家都用成熟的开发板,很少用最小电路来DIY,写程序。所以大家应该对这张图特别熟悉:
![D1 mini](https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=586456689,2373915629&fm=26&gp=0.jpg)
大家更多的是在Arduino IDE中用D0,D1,D2等管脚名字来使用它,比如:pinMode(D1, INPUT)
而同样,针对esp-12F芯片,他也可以对应到这种标号方式,如下图:
![3063b7211d409b3dc611aa6db6915232.jpg](https://ppmm.org/images/2021/04/14/3063b7211d409b3dc611aa6db6915232.jpg)
所以,使用esp-12F的时候,你是可以根据对应的管脚名字找到其对应的D字标号,在IDE中进行编程的,当然,如果你懒得对应,当然也支持使用他自己的管脚名来写,这里的管脚名指的就是GPIO后面的数字。比如我们想初始化GPIO5, 你可以这样写:pinMode(5, INPUT),同样也可以这样写pinMode(D1, INPUT). 这两种写法,在IDE中是一样的效果。如果你想使用Dx或者Ax来写,D和A是绝对不可以省略的。

0x02:GPIO的默认设置。
首先,ESP-12F中可以用的IO口只有9个。IO9,IO10是不可用的!!!那只是个摆设!!!
然后剩下的9个可用口中,
IO15/D8/pin10,它已经强制下拉到地,无论什么时候它都是低电平输入,这个口也是无法使用的,当然片选的时候可以用下。
ADC/A0/PIN2,这个脚是唯一的模拟输入口,支持10bit分辨率
GPIO0/D3/PIN12,这个脚是上载软件烧写时需要拉低的,正常使用时,需要拉高或者悬空,所以比较难用。
最万恶的是GPIO2/D4/PIN11,这个脚是系统默认的串口发送!如果你不对其进行初始化定义的话,你会发现,它一直在输出系统日志。。。有时候即便你定义了,他还在发日志!!靠!!!慎用!!但是它同时又是I2C的SDA口,真是见鬼了,我发现用I2C的时候,这个SDA会很乖的履行职责。所以推荐使用它做日志输出或者I2C的SDA.
GPIO14/D5/PIN5,这是硬件时钟口,一般是SPI的CLK或者是I2C的SCL.
剩下的就没有什么很特殊的了。目前我测试了下,在管脚不外加上拉和下拉电阻的时候,把数字GPIO口都做输入初始化,除了GPIO16和GPIO15(运行工况下必须下拉),是低电平输入外,其他都是高电平。
还有就是IO的驱动能力都有限,不要用去直驱大电流元件。

啰啰嗦嗦就这些吧,打字很累。
安!
收藏 ♥ 感谢
Spoony 小组长 2021-04-14 
真的是坑了我很多时间的坑
D0-D4、D8 不去用

登录注册 后可回复。