Dji TT无人机扩展件ESP32芯片(D2WDQ5)
就是蓝色位置的芯片
项目使用了964036字节,
占用了(74%)程序存储空间,
余留346684字节,
最大为1310720字节。
全局变量使用了40760字节,
(14%)的动态内存,
余留254152字节局部变量,
最大为294912字节。
esptool.exe
--chip esp32
--port COM3
--baud 921600
read_flash 0x400000 4
Chip is ESP32D2WDQ5 (revision 1)
Features:
WiFi,
BT,
Dual Core,
Embedded Flash,
VRef calibration in efuse
因为最近在做一个无人机辅助的操控装置,大的无人机不方便调试,就目光又转向了TT,所以需要不停的刷写程序,所以又燃起了对扩展件的研究欲望。上面的日志来自于烧录时,里面已经有了很多有趣的东西了,主要时芯片。
ESP32D2WDQ5
但是随便一搜索,都是自己写的东西
就是这种感觉,根本不想看自己写的东西
https://www.espressif.com/zh-hans/support/documents/technical-documents
我们下载这份文档来读
记住是系列芯片
ESP32-D2WD 为 400 MIPS
别的都是600 MIPS,这个就是400 ,不过我觉得可能就是已经够用了。
频率为160Mhz
看这个说法是自己带了flash
CS# = GPIO16,
IO1/DO = GPIO17,
IO3/HOLD# = SD_CMD,
CLK = SD_CLK,
IO2/WP# =SD_DATA_0,
IO0/DI = SD_DATA_1
这个是芯片的引脚连接flash的定义
芯片的引脚使用图
ESP32-D2WD 的内置 flash 的工作电压是 1.8 V, 上电时需要将 MTDI 拉高
启动时使用的引脚
ESP32-D2WD 和 ESP32-U4WDH 芯片的整体工作温度为–40 °C ~ 105 °C
在特性里面看见最后一个东西,去查查是什么,是内部烧录的一个值
ADC的参考电压(VREF)<-就是它
https://github.com/espressif/esptool/wiki/espefuse
它就是一个py的脚本,一起安装了
# python $IDF_PATH/components/esptool_py/esptool/espefuse.py --port COM7 adc_info
# python $IDF_PATH/components/esptool_py/esptool/espefuse.py --port COM7 adc_info
espefuse.py v2.7-dev
Connecting........_____....._
ADC VRef calibration: 1093mV
上面是用工具读取整个电压的值为多少
根据设计,ADC 参考电压为 1100 mV,但在不同的 ESP32 中,真实参考电压的范围可以从 1000 mV 到 1200 mV。
校准值
校准值用于生成说明特定 ESP32 芯片的 ADC 参考电压变化的特性曲线。ESP32 目前有 3 个校准值来源。这些校准值的可用性将取决于 ESP32 芯片/模块的类型和生产日期。
两点值代表 ADC 在 150 mV 和 850 mV 下的每个读数。为了获得更准确的校准结果,用户应测量这些值并将其烧录到 eFuse 中
BLOCK3
。eFuse Vref代表真正的 ADC 参考电压。该值
BLOCK0
在工厂校准期间被测量并烧录到 eFuse中。默认 Vref是用户提供的 ADC 参考电压的估计值,作为表征期间的参数。如果两点或 eFuse Vref 值不可用,则将使用默认 Vref。
2018 年第 1 周后生产的 ESP32-D0WD 和 ESP32-D0WDQ6 芯片已单独测量和烧录eFuse Vref。此类芯片可通过 012018 年或以后的日期代码识别(见下图第 4 行) )。
· 448 KB ROM
· 520 KB SRAM
· 16 KB RTC SRAM
· QSPI 支持多个 flash/SRAM
这个是芯片的一些存储参数
最后出现了SPI,那这个芯片框图就不可少了
看上面写的三组SPI接口
ESP32 共有 4 个 SPI 控制器,用于连接支持 SPI协议的设备。
SPI0 控制器作为 cache 访问外部存储单元接口使用,
SPI1 作为主机使用, SPI2 和 SPI3 控制器既可作为主机使用又可作为从机使用。作主机使用时,每个 SPI 控制器可以使用多个片选信号 (CS0~CS2) 来连接多个 SPI 从机设备。SPI1 ~ SPI3 控制器共享两个 DMA 通道。
SPI 控制器在 GP-SPI 模式下,支持标准的四线全双工通信(MOSI、 MISO、 CS、 CLK)和三线半双工通信(DATA、CS、 CLK)。
SPI 控制器在 QSPI 模式下使用信号总线 D、 Q、 CS0~CS2、 CLK、 WP 和 HD 作为 4-bit 并行 SPI总线来访问外部 Flash 或 SRAM。
从左数看第三个
令人迷惑的一点是,HSPI和VSPI并不是high-speed SPI 和Very High-speed SPI,而是SPI和HSPI、VSPI是一样的,只不过是换个名字用于区分,SPI相当于SPI0或SPI1,HSPI相当于SPI2,VSPI相当于SPI3。
SPI0和SPI1通过总线仲裁器共享一条信号总线,用于在模组内部访问FLASH(SoC FLASH),不对用户开放。
SPI2和SPI3是通用SPI控制器,也被称为HSPI和VSPI。它们拥有独立的信号总线,每条总线都有三条片选(CS)信号,也就是说每个控制器都能驱动最多3个SPI从器件。这两个SPI控制器对用户开放
SPI | SPI0或SPI1 |
HSPI | SPI2 |
VSPI | SPI3 |
所有SPI相关的API都不能在中断服务函数或上下文切换期间使用,因为SPI相关的API都调用了互斥量,可能会造成系统错误,这个是编写程序时要注意的。
在使用IDF编程时:
#include "driver/spi_master.h
#include "driver/spi_slave.h
调用设备的头文件为
这些事来自于官方的文档,具体使用时要比对再确认
翻译自官网
https://blog.csdn.net/qq_40500005/article/details/113966067
作者在此
SPI和对应的GPIO的表,也叫映射
最后给出一个命名表来结束文章