Esp32系列资料
Esp32系列资料
esp32芯片型号
[参考资料](esp32和stm32性能哪个好 - 云+社区 - 腾讯云 (tencent.com))
rom和flash
狭义的EEPROM:
这种rom的特点是可以随机访问和修改任何一个字节,可以往每个bit中写入0或者1。这是最传统的一种EEPROM,掉电后数据不丢失,可以保存100年,可以擦写100w次。具有较高的可靠性,但是电路复杂/成本也高。因此目前的EEPROM都是几十千字节到几百千字节的,绝少有超过512K的。
flash:
flash属于广义的EEPROM,因为它也是电擦除的rom。但是为了区别于一般的按字节为单位的擦写的EEPROM,我们都叫它flash。
flash做的改进就是擦除时不再以字节为单位,而是以块为单位,一次简化了电路,数据密度更高,降低了成本。上M的rom一般都是flash。
esp32模块外置了4Mflash芯片。
ch340和cp2102
- Ch340、cp2102都是将USB信号转TTL的芯片
- CP2102工业上用的比较多些。 CH340消费电子比较常用。 两者都差不多。 CH340芯片价格便宜,带USB转TTL、232串口电平,也可以实现TTL和232电平的转化,而CP2102不带232电平转化,相对而言就不如CH340好用了。
- 一般待cp2102芯片的单片机比CH340的单片机贵10~20元。
计算机和MCU通信的方法:
- 只有串口接口的台式机(很老)
交叉串口线>>>MAX232芯片>>>MCU(单片机) - 既有串口接口又有USB接口的电脑(台式机)
(1)电脑串口接口>>>交叉串口线>>>MAX232芯片>>>MCU(单片机)
(2)电脑USB接口>>>USB转串口线>>>MAX232芯片>>>MCU(单片机)
(3)电脑USB接口>>>USB2.0数据线>>>PL2303或CH340>>>MCU(单片机) - 只有USB接口的电脑(笔记本)
(1)电脑USB接口>>>USB转串口线>>>MAX232芯片>>>MCU(单片机)
(2)电脑USB接口>>>USB2.0数据线>>>PL2303或CH340>>>MCU(单片机)
计算机和MCU通信的原理:
(1)交叉串口线原理:信号线交叉,导线作用
(2)USB转串口线原理:USB接口>>>PL2303或CH340>>>MAX232>>>9针接口
(3)USB2.0数据线原理:信号线直连,导线作用
[参考资料]((132条消息) MAX232和PL2303、CH340的区别_hailongwang2412的博客-CSDN博客_pl2303和ch340的区别)
esp32的引脚参考和引脚接口功能介绍
引脚参考
ESP32外围设备
ESP32外围设备包括:[参考](ESP32引脚参考 - lnsane-G - 博客园 (cnblogs.com))
-
18个模数转换器(ADC)通道
-
3个SPI接口
-
3个UART接口
-
2个I2C接口
-
16个脉冲宽度调制输出通道
-
2个数模转换器(DAC)
-
2个I2S接口
-
10个电容传感GPIO
下表显示了哪些管脚最适合用作输入和输出,哪些管脚需要小心。绿色突出显示的管脚可以使用。黄色突出显示的可以使用,但您需要注意,因为它们可能在启动时有意外行为。不建议将红色突出显示的管脚用作输入或输出。
[参考网址](ESP32引脚参考 - lnsane-G - 博客园 (cnblogs.com))
接口总线的功能介绍:
ADC:(analog digital converter),AD转换,模数转换(也就是模拟转数字):
ESP32有18 x 12位ADC输入通道(而ESP8266只有1 x 10位ADC)。这些是可用作ADC和相应通道的GPIO:
ADC1_CH0 (GPIO 36)
ADC1_CH1 (GPIO 37)
ADC1_CH2 (GPIO 38)
ADC1_CH3 (GPIO 39)
ADC1_CH4 (GPIO 32)
ADC1_CH5 (GPIO 33)
ADC1_CH6 (GPIO 34)
ADC1_CH7 (GPIO 35)
ADC2_CH0 (GPIO 4)
ADC2_CH1 (GPIO 0)
ADC2_CH2 (GPIO 2)
ADC2_CH3 (GPIO 15)
ADC2_CH4 (GPIO 13)
ADC2_CH5 (GPIO 12)
ADC2_CH6 (GPIO 14)
ADC2_CH7 (GPIO 27)
ADC2_CH8 (GPIO 25)
ADC2_CH9 (GPIO 26)
注意:使用Wi-Fi时不能使用ADC2管脚。因此,如果您使用Wi-Fi,并且无法从ADC2 GPIO获取值,则可以考虑改用ADC1 GPIO,这应该可以解决您的问题。
ADC输入通道具有12位分辨率。这意味着您可以获得0到4095之间的模拟读数,其中0对应于0V,4095对应于3.3V。您还可以在代码上设置通道的分辨率以及ADC范围。
ESP32 ADC引脚没有线性行为。您可能无法区分0和0.1V,或3.2和3.3V。在使用ADC引脚时,您需要记住这一点。
数模转换器(DAC)
ESP32上有2 x 8位DAC通道,用于将数字信号转换为模拟电压信号输出。这些是DAC通道:
DAC1 (GPIO25)
DAC2 (GPIO26)
SPI接口是什么:[参考]((131条消息) SPI接口扫盲 SPI定义/SPI时序(CPHA CPOL)_douqingl的博客-CSDN博客_spi接口)
SPI ( Serial Peripheral Interface,串行外设接口)是一种同步、串行通讯接口规格,常用于短距离通讯,主要是在嵌入式系统中。
SPI接口是一种典型的全双工接口,通过同步时钟SCLK的脉冲将数据一位位地传送。所以在开始通讯前,master首先要配置接口时钟(确定其通讯频率是SLAVE可以支持的,通常为数兆赫兹)。
当MASTER片选一个SLAVE时,每向SLAVE发送一个周期的SCLK信号,都会有1bit的数据从MOSI发送至slave,与此同时,slave每收到一个周期的SCLK信号,都会从MISO向master发送1bit的数据。这种全双工通讯,是由硬件保证的(MASTER与HOST中各有一个移位寄存器作为收发数据的缓存)。
UART接口 :[参考]((131条消息) UART接口简介_ztnhnr的博客-CSDN博客_uart接口)
UART有4个pin(VCC, GND, RX, TX), 用的TTL电平, 低电平为0(0V),高电平为1(3.3V或以上)。
UART即通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),它是一种串行通信的物理接口形式。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。
- VCC:供电pin,一般是3.3v,在我们的板子上没有过电保护,这个pin一般不接更安全
- GND:接地pin,有的时候rx接受数据有问题,就要接上这个pin,一般也可不接
- RX:接收数据pin
- TX:发送数据pin
UART最好的一点是它只使用两根线就可以在设备之间传输数据。在UART通信中,两个UART直接相互通信。发送UART将来自CPU等控制设备的并行数据转换为串行形式,并将其串行发送到接收UART,接收UART然后将串行数据转换回接收设备的并行数据。在两个UART之间传输数据只需要两根线。数据从发送UART的Tx引脚流向接收UART的Rx引脚:
uart | tx | rx |
---|---|---|
0 | GPIO1 | GPIO17 |
2 | GPIO3 | GPIO16 |
I2C接口 [参考]((131条消息) I2C接口简介和时序_re_call的博客-CSDN博客_iic接口时序)
I2C,Inter-Integrated Circuit,是两根线,SDA(数据)和SCL(时钟),也是一种同步传输协议。主机在发送开始信号之后,先发送7个比特的地址位和1个比特的读写位,每个从机有自己的I2C地址,当发现该条指令是发给自己的时候,拉低SDA线(即回复ACK信号),然后主机发送或接收数据,完成传输。传输完成之后,主机发送停止位,完成该次传输。
ESP32有两个I2C通道,任何管脚都可以设置为SDA或SCL。将ESP32与Arduino IDE一起使用时,默认I2C引脚为:
GPIO 21(SDA)
GPIO 22(SCL)
如果要使用其他管脚,在使用导线库时,只需调用:
Wire.begin(SDA, SCL);
脉冲宽度调制(PWM)
ESP32 LED PWM控制器有16个独立通道,可以配置为生成具有不同特性的PWM信号。所有可以作为输出的管脚都可以用作PWM管脚(GPIOs 34到39不能产生PWM)。
要设置脉冲宽度调制信号,需要在代码中定义这些参数:
-
信号频率:单位(Hz),led的频率和电机的频率相差很大
-
占空比:输出时一个周期内低压所占比例(esp32是12位数字模拟0~2^12)
-
脉宽调制通道: ESP32 的 LEDC 总共有16个路通道(0 ~ 15),分为高低速两组,高速通道(0 ~ 7)由80MHz时钟驱动,低速通道(8 ~ 15)由 1MHz 时钟驱动。
-
要输出信号的GPIO:接口
I2S接口介绍 [参考]((131条消息) I2S接口介绍_weixin_33801856的博客-CSDN博客)
I2S协议作为音频数据传输协议,由Philips制定。该协议由三条数据线组成:
1、SCLK:串行时钟,频率= 2 * 采样频率 * 采样位数。
2、WS:字段(声道)选择,用来切换左右声道数据。WS = 采样频率(fs)。
a、1(左声道)
b、0(右声道)
3、SD:串行数据(二进制补码)(MSB--->LSB:数据由最高位到最低位依次传输)
电容式触摸接口
ESP32有10个内部电容式触摸传感器。它们能感应到任何带电物质的变化,比如人类皮肤。因此,他们可以检测到当用手指触摸gpio时引起的变化。这些引脚可以很容易地集成到电容垫,并取代机械按钮。电容式触针也可以用来唤醒ESP32的深度睡眠。
这些内部触摸传感器连接到这些GPIO:
T0 (GPIO 4)
T1 (GPIO 0)
T2 (GPIO 2)
T3 (GPIO 15)
T4 (GPIO 13)
T5 (GPIO 12)
T6 (GPIO 14)
T7 (GPIO 27)
T8 (GPIO 33)
T9 (GPIO 32)
使用esp32引脚时应注意:
Strapping pins
ESP32芯片具有以下Strapping pins:
GPIO 0
GPIO 2
GPIO 4
GPIO 5(启动期间必须为高)
GPIO 12(启动期间必须低)
GPIO 15(启动期间必须为高)
这些用于将ESP32置于引导加载程序或烧录模式。在大多数内置USB/Serial的开发板上,您不需要担心这些管脚的状态。电路板使引脚处于正确的烧录或启动模式。有关ESP32引导模式选择的更多信息,请参见此处。
但是,如果你有外设连接到这些引脚,你可能会有困难,试图上传新的代码,用新固件烧录ESP32或重置板。如果您有一些外设连接到Strapping pins,并且您在上载代码或烧录ESP32时遇到问题,可能是因为这些外设阻止ESP32进入正确的模式。请阅读引导模式选择文档以指导您朝正确的方向前进。复位、烧录或启动后,这些引脚按预期工作。
Pins HIGH at Boot
一些GPIO在启动或重置时将其状态更改为高或输出PWM信号。这意味着,如果输出连接到这些gpio,则在ESP32重置或引导时可能会得到意外的结果。
GPIO 1
GPIO 3
GPIO 5
GPIO 6 to GPIO 11 (connected to the ESP32 integrated SPI flash memory – not recommended to use).
GPIO 14
GPIO 15