01 ESP32-Hardware Preparation-ESP32-DevKitC V2 board

一、概念梳理

1. 芯片/模组/核心板/开发板区别?

开始之前,有必要先梳理一下芯片、模组、核心板、开发板这些名词的含义.因为我们一般会以ESP32为关键字在淘宝搜索商品,搜索的结果往往让人眼花缭乱,如果不清楚这些概念容易入坑,我在第一次购买ESP8266时,就是因为没搞清楚概念,买了一堆模组,需要走一些飞线才能下载程序,很不方便.

  • 开发板:如上图,整个电路板叫做开发板,开发板内集成了USB接口、稳压芯片、USB转UART芯片、ESP-WROOM-32模组、按键和指示灯,只支持正常工作的基本功能,因此也可以叫核心板.更大一些的开发板还会集成LCD、SD卡槽等等.

  • 模组:ESP-WROOM-32是ESP32模组的其中一个型号,来自乐鑫原厂.里面集成了ESP32芯片、Flash、晶振、天线等,是实现通讯功能的基本组成.国内生产ESP32模组的厂家很多,除了原厂还有小米iot、安信可系列模组等.不同的型号模组,在flash容量,天线设计等会有所区别.

  • 芯片:模组和开发板千变万化,但芯片始终出自上海乐鑫,ESP32/ESP8266等芯片也有不同的型号,具体可以查芯片手册,不同型号在RAM等资源配置上有区别.

  • 2. ESP32 硬件参考选型

我们在做项目时,优先选择开发板,其次是模组,当然如果有能力搞定天线射频等,也可以选择芯片,可以使产品有更小的尺寸,更高的集成度.

二、ESP32 Core Board V2原理图

1. 原理图预览

2. 关键器件介绍

  • 供电单元:这部分很简单,5v转3.3v,平时调试可以直接使用电脑USB供电.如果使用WiFi功能,需要注意供电问题,毕竟电脑USB输出功率有限,加上劣质线缆可能有损耗,使芯片工作不稳定,直接用5v电源供电最为可靠.另外如果直接使用3.3v电源到引脚上,注意不要反接,因为3.3v输入并没有反接保护.

  • 按键:两个按键分别是复位-EN,启动选择-BOOT,EN外接了上拉电阻,BOOT的外部上拉电阻没有焊接,应该是配置了内部上拉,两个端口低电平有效.启动选择只在芯片复位时被检测一次,复位以后BOOT按钮可以当普通按钮使用.

  • LED:板载的LED在系统通电时常亮,因此无法控制闪烁,做点灯的程序只能再外接LED.

  • ESP32 Module:V2引出了芯片所有剩余关键,有很大的灵活性,但是如果只是使用基本的GPIO功能,要注意避开一些特殊功能的管脚,除非迫不得已.

需要避开的管脚包括:Strapping Pins(GPIO12(MTDI)、 GPIO0、 GPIO2、 GPIO15(MTDO)、 GPIO5)+GPIO13? 具体原因参考 esp32_datasheet_en_3.0 page:10

  • USB转UART单元:由于大多数个人电脑已经取消标准的RS232通信接口,因此与芯片的串口通信需要一个桥接芯片,V2板载的CP2102就是其中之一,其他比较熟悉的还有CH340等芯片.这个芯片除了完成串口通信功能外,还能在串口刷程序时,自动触发芯片进入Download Boot模式,不再需要手动按Boot按钮十分方便.

3、如何实现启动模式的自动切换?

3.1. 硬件设计方案

芯片一般在正常工作前,会检测某些特定管脚(boot,有些芯片有多个boot引脚)的电平,来决定运行于何种模式.ESP32在复位之前如果 GPIO0 / GPIO2 同时为低电平,会进入下载模式,等待串口通信信息.如果我们拿到的是模组,下载程序时需要在复位前把这两个引脚拉低,下载完成后,再将GPIO0恢复高电平.

如果拿到的像v2这种带有cp2102的开发板,这个工作可以省去,下载程序时,会自动切换到下载模式,非常方便.这一节我们先讨论一下这种机制的硬件实现.

CP2102大部分的管脚是无效端口,与ESP32直接相连的有RXD、TXD,分别对应串口收发,DTR和RTS为串口的流控位,做了一个逻辑处理,然后输入到ESP32管脚上.可以通过三极管的导通性分析,注意在两个三极管都截止时,EN和IO0因为有上拉电阻,所以都为1.

效果就是当DTR有信号(=1),RTS无信号时(=0),硬件复位(EN=0).

当DTR无信号(=0),RTS有信号时(=1),相当于BOOT按键被按下(IO0=0).

RTS、CTS、DSR和DTR为控制信号,其含义参考: EIA RS-232-C标准

3.2. 软件设计方案

第1小节,我们在硬件原理图上发现cp2102可以通过设置DTR和RST来触发ESP32的boot和EN.那么DTR和RST如何被触发呢?我会在下一篇文章中会从软件方面继续探究.

最后更新于