1. 前言
1.1 ESP-12K模块
ESP-12K 是由安信可科技开发的 Wi-Fi 模块,该模块核心处理器ESP32-S2是一款高集成度的低功耗 Wi-Fi 系统级芯片(SoC),专为物联网(IoT)、移动设备、可穿戴电子设备、智能家居等各种应用而设计。
安信可ESP-12K模块采用的是乐鑫 ESP32-S2 芯片,"阉割版ESP32"虽然去掉了蓝牙,但依然比 ESP8266 性能比更高,有43个可编程 GPIO。
1.2 硬件资源图
ESP32-S2 芯片搭载 Xtensa® 32 位 LX7 单核处理器,工作频率高达240 MHz。芯片支持二次开发,无需使用其它微控制器或处理器。该芯片内置320 KB SRAM,128KBROM,可通过 SPI/QSPI/OSPI 等接口外接 flash 和 RAM。ESP32-S2 支持多种低功耗工作状态,能够满足各种应用场景的功耗需求。芯片所特有的精细时钟门控功能、动态电压时钟频率调节功能、射频输出功率可调节功能等特性,可以实现通信距离、通信速率和功耗之间的最佳平衡。
2. ESP-12K特性:
- 基于 RSA-3072 算法的安全启动;
- 基于 AES-XTS-256 算法的 Flash 加密;
- 保护私钥和设备机密不受软件访问;
- 密码加速器提高云连接性能;
- 有效抵抗物理故障注入攻击;
- ESP-12K 集成了丰富的外围设备,有 43 个可编程 GPIO,可以灵活配置为USB OTG、LCD 接口、摄像头接口、SPI、I2S、UART、ADC、DAC 等常用功能;
- ESP-12K 具有 LCD 接口和14 个可配置的电容触摸 GPIO,可为基于触摸屏和触摸板的设备提供良好的 HMI 解决方案。
2.1 ESP32S2的功能概览
ESP32-S2 提供丰富的外设接口,包括 SPI,I2S,UART,I2C,LED PWM,LCD接口,Camera 接口,ADC,DAC,触摸传感器,温度传感器和多达43 个GPIO。它支持芯片外围扩展 PSRAM,ESP-12K 模组可以选配 PSRAM。此外,它还包括一个全速USB On-The-Go(OTG)接口,可以支持使用 USB 通信。
2.2 ESP-12K原理图
板载LED灯接GPIO2
ESP32-S2 具有多种特有的硬件安全机制。硬件加密加速器支持AES、SHA 和RSA算法。其中的 RNG、HMAC 和数字签名(Digital Signature) 模块提供了更多安全性能。其他安全特性还包括 flash 加密和安全启动 (se-cure boot) 签名验证等。完善的安全机制使芯片能够完美地应用于各种加密产品。
2.3 ESP8266 / ESP32 和 ESP32S2的差别
由于ESP32S2 为 ESP32 的阉割版,去掉了蓝牙的单核版,所以此芯片是没有蓝牙协议栈的,但是与 ESP32 的二次开发类似;
2.4 外观尺寸
- 外观图
- 尺寸图
3. 开发测试
3.1 mixly软件环境
采用国产图形化mixly软件开发,下载地址
Mixly(米思齐)是在北京师范大学傅骞博士团队组织开发的一款国内自主研发,且免费开源的图形化编程工具。在国内外都掀起创客教育的浪潮中,傅骞老师认真分析了当前电子领域内的创客教育,并认为“如果不能给学生提供一个足够简单的、不能给教师提供一个容易上手的,不能给各大生产厂商提供一个足够自主的编程工具,所谓的“创”也只能是停留在表面的浮云,风一吹便散。”为了大力贯彻落实创客实验室“自主实践,分享快乐”的教育理念,傅骞老师带领其团队,开发出具有易用性、简单性、功能性、普适性、延续性及生态性等特点的Mixly。
3.2 板卡选择
-
打开mixly
-
点击小于号选择esp32s2
-
编写相关mixly代码,上传时记得板载复位一下
-
Arduino代码
#include <Arduino.h>
#include <analogWrite.h>
void setup(){
Serial.begin(9600);
}
void loop(){
for (int i = 0; i <= 255; i = i + (1)) {
analogWrite(2, i);
analogWrite(2, i);
Serial.print("GPIO2:");
Serial.println(i);
delay(10);
}
for (int i = 255; i >= 0; i = i + (-1)) {
analogWrite(2, i);
analogWrite(2, i);
Serial.print("GPIO2:");
Serial.println(i);
delay(10);
}
}
- 输出打印log
上传中...
正在使用文件夹D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\arduino-cli\Arduino15\packages\esp32\hardware\esp32\2.0.2中的平台上的开发板“esp32s2”
使用文件夹D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\arduino-cli\Arduino15\packages\esp32\hardware\esp32\2.0.2中的平台的代码“esp32”
cmd /c if exist "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\testArduino\\partitions.csv" COPY /y "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\testArduino\\partitions.csv" "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild\\partitions.csv"
cmd /c if not exist "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild\\partitions.csv" if exist "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\arduino-cli\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.2\\variants\\esp32s2\\partitions.csv" COPY "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\arduino-cli\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.2\\variants\\esp32s2\\partitions.csv" "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild\\partitions.csv"
cmd /c if not exist "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild\\partitions.csv" COPY "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\arduino-cli\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.2\\tools\\partitions\\default.csv" "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild\\partitions.csv"
cmd /c IF EXIST "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\testArduino\\bootloader.bin" ( COPY /y "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\testArduino\\bootloader.bin" "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild\\testArduino.ino.bootloader.bin" ) ELSE ( IF EXIST "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\arduino-cli\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.2\\variants\\esp32s2\\bootloader.bin" ( COPY "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\arduino-cli\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.2\\variants\\esp32s2\\bootloader.bin" "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild\\testArduino.ino.bootloader.bin" ) ELSE ( COPY /y "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\arduino-cli\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.2\\tools\\sdk\\esp32s2\\bin\\bootloader_qio_80m.bin" "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild\\testArduino.ino.bootloader.bin" ) )
�Ѹ��� 1 ���ļ���
cmd /c if exist "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\testArduino\\build_opt.h" COPY /y "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\testArduino\\build_opt.h" "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild\\build_opt.h"
cmd /c if not exist "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild\\build_opt.h" type nul > "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild\\build_opt.h"
正在检测使用的库。。。
analogWrite.h 的替代方案:[ESP32_AnalogWrite@0.2]
ResolveLibrary(analogWrite.h)
-> 候选: [ESP32_AnalogWrite@0.2]
使用缓存库文件依赖项:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\arduino-cli\libraries\ESP32_AnalogWrite\src\analogWrite.cpp
生成函数原型。。。
"D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\arduino-cli\\Arduino15\\packages\\builtin\\tools\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild\\preproc\\ctags_target_for_gcc_minus_e.cpp"
正在编译项目。。。
正在编译库。。。
正在编译库ESP32_AnalogWrite
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\libraries\ESP32_AnalogWrite\analogWrite.cpp.o
正在编译内核。。。
无法深度缓存内核构建:Rel: can't make D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild relative to C:\Users\Asus\AppData\Local\Temp\arduino-core-cache
正在运行正常的内核构建。。。
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-cpu.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-i2c-slave.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-dac.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-bt.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-adc.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-ledc.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-gpio.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-i2c.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-matrix.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-misc.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-psram.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-spi.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-rmt.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-sigmadelta.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-timer.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-time.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\firmware_msc_fat.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-touch.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\stdlib_noniso.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-tinyusb.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\esp32-hal-uart.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\wiring_shift.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\libb64\cencode.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\wiring_pulse.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\libb64\cdecode.c.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\IPAddress.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\HardwareSerial.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\IPv6Address.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\MD5Builder.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\FunctionalInterrupt.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\FirmwareMSC.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\HWCDC.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\Esp.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\Print.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\Stream.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\USBCDC.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\StreamString.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\USBMSC.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\USB.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\base64.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\cbuf.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\WMath.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\WString.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\main.cpp.o
使用以前编译的文件:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild\core\core.a
将所有内容链接在一起。。。
"D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\arduino-cli\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32s2-elf-gcc\\gcc8_4_0-esp-2021r2/bin/xtensa-esp32s2-elf-g++" "-Wl,--Map=D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild/testArduino.ino.map" "-LD:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\arduino-cli\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.2/tools/sdk/esp32s2/lib" "-LD:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\arduino-cli\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.2/tools/sdk/esp32s2/ld" -T memory.ld -T sections.ld -T esp32s2.rom.ld -T esp32s2.rom.api.ld -T esp32s2.rom.libgcc.ld -T esp32s2.rom.newlib-funcs.ld -T esp32s2.rom.newlib-data.ld -T esp32s2.rom.spiflash.ld -T esp32s2.peripherals.ld -mlongcalls -Wl,--cref -Wl,--gc-sections -fno-rtti -fno-lto -u _Z5setupv -u _Z4loopv -u esp_app_desc -u pthread_include_pthread_impl -u pthread_include_pthread_cond_impl -u pthread_include_pthread_local_storage_impl -u pthread_include_pthread_rwlock_impl -u ld_include_highint_hdl -u start_app -u __ubsan_include -Wl,--wrap=longjmp -u __assert_func -u vfs_include_syscalls_impl -Wl,--undefined=uxTopUsedPriority -u app_main -u newlib_include_heap_impl -u newlib_include_syscalls_impl -u newlib_include_pthread_impl -u newlib_include_assert_impl -u __cxa_guard_dummy -DESP32 -DCORE_DEBUG_LEVEL=0 -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 -Wl,--start-group "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild\\sketch\\testArduino.ino.cpp.o" "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild\\libraries\\ESP32_AnalogWrite\\analogWrite.cpp.o" "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild\\core\\core.a" -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lasio -lcbor -lunity -lcmock -lcoap -lnghttp -lesp-tls -lesp_adc_cal -lesp_hid -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lesp_https_server -lesp_lcd -lprotobuf-c -lprotocomm -lmdns -lesp_local_ctrl -lsdmmc -lesp_serial_slave_link -lesp_websocket_client -lexpat -lwear_levelling -lfatfs -lfreemodbus -ljsmn -ljson -llibsodium -lmqtt -lopenssl -lperfmon -lspiffs -lusb -ltouch_element -lulp -lwifi_provisioning -lesp-dsp -lesp32-camera -lesp_littlefs -lfb_gfx -lasio -lcbor -lcmock -lunity -lcoap -lesp_lcd -lesp_local_ctrl -lesp_https_server -lesp_websocket_client -lexpat -lfreemodbus -ljsmn -llibsodium -lmqtt -lperfmon -lusb -ltouch_element -lesp_adc_cal -lesp_hid -lfatfs -lwear_levelling -lopenssl -lspiffs -lwifi_provisioning -lprotocomm -lprotobuf-c -lmdns -ljson -larduino_tinyusb -lcat_face_detect -lhuman_face_detect -lcolor_detect -lmfn -ldl -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lnghttp -lesp-tls -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lsdmmc -lesp_serial_slave_link -lulp -lmbedtls -lmbedcrypto -lmbedx509 -lcoexist -lcore -lespnow -lmesh -lnet80211 -lpp -lsmartconfig -lwapi -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lnghttp -lesp-tls -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lsdmmc -lesp_serial_slave_link -lulp -lmbedtls -lmbedcrypto -lmbedx509 -lcoexist -lcore -lespnow -lmesh -lnet80211 -lpp -lsmartconfig -lwapi -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lnghttp -lesp-tls -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lsdmmc -lesp_serial_slave_link -lulp -lmbedtls -lmbedcrypto -lmbedx509 -lcoexist -lcore -lespnow -lmesh -lnet80211 -lpp -lsmartconfig -lwapi -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lnghttp -lesp-tls -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lsdmmc -lesp_serial_slave_link -lulp -lmbedtls -lmbedcrypto -lmbedx509 -lcoexist -lcore -lespnow -lmesh -lnet80211 -lpp -lsmartconfig -lwapi -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lnghttp -lesp-tls -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lsdmmc -lesp_serial_slave_link -lulp -lmbedtls -lmbedcrypto -lmbedx509 -lcoexist -lcore -lespnow -lmesh -lnet80211 -lpp -lsmartconfig -lwapi -lesp_ringbuf -lefuse -lesp_ipc -ldriver -lesp_pm -lmbedtls -lapp_update -lbootloader_support -lspi_flash -lnvs_flash -lpthread -lesp_gdbstub -lespcoredump -lesp_phy -lesp_system -lesp_rom -lhal -lvfs -lesp_eth -ltcpip_adapter -lesp_netif -lesp_event -lwpa_supplicant -lesp_wifi -lconsole -llwip -llog -lheap -lsoc -lesp_hw_support -lxtensa -lesp_common -lesp_timer -lfreertos -lnewlib -lcxx -lapp_trace -lnghttp -lesp-tls -ltcp_transport -lesp_http_client -lesp_http_server -lesp_https_ota -lsdmmc -lesp_serial_slave_link -lulp -lmbedtls -lmbedcrypto -lmbedx509 -lcoexist -lcore -lespnow -lmesh -lnet80211 -lpp -lsmartconfig -lwapi -lphy -lesp_phy -lphy -lesp_phy -lphy -lxt_hal -lm -lnewlib -lstdc++ -lpthread -lgcc -lcxx -lapp_trace -lgcov -lapp_trace -lgcov -lc -Wl,--end-group -Wl,-EL -o "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild/testArduino.ino.elf"
"D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\arduino-cli\\Arduino15\\packages\\esp32\\tools\\esptool_py\\3.1.0/esptool.exe" --chip esp32s2 elf2image --flash_mode dio --flash_freq 80m --flash_size 4MB -o "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild/testArduino.ino.bin" "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild/testArduino.ino.elf"
esptool.py v3.1
Merged 2 ELF sections
"D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\arduino-cli\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.2/tools/gen_esp32part.exe" -q "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild/partitions.csv" "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild/testArduino.ino.partitions.bin"
使用文件夹中版本0.2的库ESP32_AnalogWrite:D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\arduino-cli\libraries\ESP32_AnalogWrite
"D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\arduino-cli\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32s2-elf-gcc\\gcc8_4_0-esp-2021r2/bin/xtensa-esp32s2-elf-size" -A "D:\\Program Files (x86)\\Mixly2.0-rc0-Win10-x64\\mixlyBuild/testArduino.ino.elf"
项目使用196146字节(14%)的程序存储空间。最大值为1310720字节。
个全局变量使用10020个字节(3%)的动态内存,剩下317660个字节用于局部变量。最大值为327680字节。
"D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\arduino-cli\Arduino15\packages\esp32\tools\esptool_py\3.1.0/esptool.exe" --chip esp32s2 --port "COM7" --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0xe000 "D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\arduino-cli\Arduino15\packages\esp32\hardware\esp32\2.0.2/tools/partitions/boot_app0.bin" 0x1000 "D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild/testArduino.ino.bootloader.bin" 0x10000 "D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild/testArduino.ino.bin" 0x8000 "D:\Program Files (x86)\Mixly2.0-rc0-Win10-x64\mixlyBuild/testArduino.ino.partitions.bin"
esptool.py v3.1
Serial port COM7
Connecting....
Chip is ESP32-S2
Features: WiFi, ADC and temperature sensor calibration in BLK2 of efuse
Crystal is 40MHz
MAC: 84:f7:03:7e:e6:88
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00001000 to 0x00004fff...
Flash will be erased from 0x00010000 to 0x0003ffff...
Flash will be erased from 0x00008000 to 0x00008fff...
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 551.4 kbit/s)...
Hash of data verified.
Compressed 14448 bytes to 10006...
Writing at 0x00001000... (100 %)
Wrote 14448 bytes (10006 compressed) at 0x00001000 in 0.3 seconds (effective 331.9 kbit/s)...
Hash of data verified.
Compressed 196528 bytes to 115162...
Writing at 0x00010000... (12 %)
Writing at 0x0001c3ae... (25 %)
Writing at 0x00021983... (37 %)
Writing at 0x00026c8c... (50 %)
Writing at 0x0002bff2... (62 %)
Writing at 0x00032231... (75 %)
Writing at 0x0003a247... (87 %)
Writing at 0x0003fcd4... (100 %)
Wrote 196528 bytes (115162 compressed) at 0x00010000 in 2.0 seconds (effective 797.6 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 128...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.0 seconds (effective 687.4 kbit/s)...
Hash of data verified.
Leaving...
==上传成功(用时 10s)==
4. 效果展示
-
视频GIF
-
输出数据可视化
参考文献: