我这两天又翻出来了之前做的一个ESP32-Pico-D4的板子,之前测是发现会无限重启,结果现在再试,下进去一个新的程序就能用了,这里记录一下开发中遇到的问题;
Pico D4介绍
这个芯片资源挺多的,最主要的是内嵌了晶振和Flash,在板子布线方面容易了许多;
芯片特性
原理图设计
原理图设计参考
原理图参考
实物图片
重启问题
ESP32 启动时会有如下打印:
1 | rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) |
其中 rst 简单说明如下:
| PRO | APP | 源 | 复位方式 | 注释 |
|---|---|---|---|---|
| 0x01 | 0x01 | 芯片上电复位 | 系统复位 | - |
| 0x10 | 0x10 | RWDT 系统复位 | 系统复位 | 详见 ESP32 技术参考手册 WDT 章节 |
| 0x0F | 0x0F | 欠压复位 | 系统复位 | 详见 ESP32 技术参考手册 Power Management 章节 |
| 0x03 | 0x03 | 软件系统复位 | 内核复位 | 配置 RTC_CNTL_SW_SYS_RST 寄存器 |
| 0x05 | 0x05 | Deep Sleep Reset | 内核复位 | 详见 ESP32 技术参考手册 Power Management 章节 |
| 0x07 | 0x07 | MWDT0 全局复位 | 内核复位 | 详见 ESP32 技术参考手册 WDT 章节 |
| 0x08 | 0x08 | MWDT1 全局复位 | 内核复位 | 详见 ESP32 技术参考手册 WDT 章节 |
| 0x09 | 0x09 | RWDT 内核复位 | 内核复位 | 详见 ESP32 技术参考手册 WDT 章节 |
| 0x0B | - | MWDT0 CPU 复位 | CPU 复位 | 详见 ESP32 技术参考手册 WDT 章节 |
| 0x0C | - | 软件 CPU 复位 | CPU 复位 | 配置 RTC_CNTL_SW_APPCPU_RST 寄存器 |
| - | 0x0B | MWDT1 CPU 复位 | CPU 复位 | 详见 ESP32 技术参考手册 WDT 章节 |
| - | 0x0C | 软件 CPU 复位 | CPU 复位 | 配置 RTC_CNTL_SW_APPCPU_RST 寄存器 |
| 0x0D | 0x0D | RWDT CPU 复位 | CPU 复位 | 详见 ESP32 技术参考手册 WDT 章节 |
| - | 0xE | PRO CPU 复位 | CPU 复位 | 表明 PRO CPU 能够通过配置 DPORT_APPCPU_RESETTING 寄存器单独复位 APP CPU |
boot mode说明如下:
ESP32 上电时会判断 strapping 管脚的状态, 并决定 boot mode;
例如常见的两种上电打印:
下载固件模式:
1 | rst:0x1 (POWERON_RESET),boot:0x3 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2)) |
芯片运行模式:
1 | rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) |
boot 值由 Strapping 管脚 的 5 位值 [MTDI, GPIO0, GPIO2, MTDO, GPIO5] 共同决定。
下面是关于 Stripping 管脚 相关说明:

Strapping 管脚
固件可以通过配置一些寄存器比特位,在启动后改变“内置 LDO (VDD_SDIO) 电压”和“SDIO 从机信号输入输出时序”的设定;
ESP32-PICO-D4 集成的外部 SPI flash 工作电压为 3.3 V,因此在上电复位过程中需保持 Strapping 管脚 MTDI 为低电平;
注意供电不足时,打开WiFi会导致重启;
IO引脚分配
绿色突出显示的管脚可以使用。黄色突出显示的可以使用,但您需要注意,因为它们可能在启动时有意外行为。不建议将红色突出显示的管脚用作输入或输出:
IO引脚分配
外设引脚分配
ESP32的大多数外设信号都直接连接到其专用的IO_MUX引脚。但是,也可以使用GPIO矩阵将信号转换到任何其他可用的引脚。如果至少一个信号通过GPIO矩阵转换,则所有信号都将通过GPIO矩阵转换。
GPIO矩阵引入了转换灵活性,但也带来了以下缺点:
增加了MISO信号的输入延迟,这更可能违反MISO设置时间。如果SPI需要高速运行,请使用专用的IO_MUX引脚。
如果使用IO_MUX引脚,则允许信号的时钟频率最多为40 MHz,而时钟频率最高为80 MHz。
ADC(模数转换器)和DAC(数模转换器)功能分配给特定的静态引脚。但是,您可以决定哪些管脚是UART、I2C、SPI、PWM等,您只需要在代码中分配它们。这是可能的,因为ESP32芯片的多路复用功能。
ADC
ADC引脚分配
DAC
DAC引脚分配
触摸传感器
触摸传感器引脚分配
JTAG
JTAG引脚分配
SD/SDIO/MMC 主机控制器
SD/SDIO/MMC 主机控制器引脚分配
电机PWM
电机PWM引脚分配
SDIO/SPI 从机控制器
SDIO/SPI 从机控制器引脚分配
UART
UART引脚分配
I2C
ESP32有两个I2C信道,任何管脚都可以设置为SDA或SCL。将ESP32与Arduino IDE一起使用时,默认I2C引脚为:
GPIO 21(SDA)
GPIO 22(SCL)
如果要使用其他管脚,在使用导线库时,只需调用:Wire.begin(SDA, SCL);
I2C引脚分配
LED PWM
ESP32 LED PWM控制器有16个独立信道,可以配置为生成具有不同特性的PWM信号。所有可以作为输出的管脚都可以用作PWM管脚(GPIOs 34到39不能产生PWM)。
要设置脉冲宽度调制信号,需要在代码中定义这些参数:
信号频率;
占空比;
脉宽调制信道;
要输出信号的GPIO。
LED PWM引脚分配
I2S
I2S引脚分配
红外遥控器
红外遥控器引脚分配
通用SPI
通用SPI引脚分配
并行SPI
并行SPI引脚分配
默认情况下,可以用的SPI的引脚映射是:
| 引脚对应的GPIO | SPI2 | SPI3 |
|---|---|---|
| CS0 * | 15 | 5 |
| SCLK | 14 | 18 |
| MISO | 12 | 19 |
| MOSI | 13 | 23 |
| QUADWP | 2 | 22 |
| QUADHD | 4 | 21 |
仅连接到总线的第一个设备可以使用CS0引脚;
EMAC
EMAC引脚分配
脉冲计数器
脉冲计数器引脚分配
TWAI
TWAI引脚分配
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: false
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true