esp32s2mini 烧录流程记录

本文讲述了作者使用ESP32S2mini开发板烧录固件时遇到的问题,涉及USB识别、DFU方法、WinUSB驱动安装、esp_idf.json配置和环境变量设置,最终发现重启后解决DFU问题的关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

到手一个全新的esp32s2mini开发板,想要进行烧录固件,需要进行以下几步操作。

开发板如图:
在这里插入图片描述

1.按住0按键,等待几秒后,再按RST按键,同时松开(该操作目的是电脑识别到该设备,设备管理器出现USB串行设备即成功)

在这里插入图片描述

2. 直接采用DFU方法烧录会出现以下错误,找不到该设备进行烧录。应该安装WinUSB驱动到开发板上,采用zadig软件进行安装

在这里插入图片描述
在这里插入图片描述

zadig下载链接:https://zadig.akeo.ie/
安装参考链接:https://github.com/libusb/libusb/wiki/Windows#How_to_use_libusb_on_Windows
https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1.2/esp32s2/api-guides/dfu.html#api-guide-dfu-flash-win
在这里插入图片描述
但安装完成后,出现该错误:
在这里插入图片描述

3. 首先尝试的该解决方法(初次并未奏效)

https://blog.csdn.net/github_75054236/article/details/132592418

修改esp_idf.json将dfu-utils的路径加入idf环境中(其他工具也可以这么安装)
在这里插入图片描述
在这里插入图片描述

4. 之后尝试的方法(尝试完之后,依旧不行)(有用!!!但是记得重启vscode)

https://blog.csdn.net/plusufo/article/details/135150137
在window的环境变量的path中加入dfu-util的路径
-----------------------------------------------.
2024.4.1修改:
实测之后发现,还是需要在【系统变量】的【环境变量】中添加该路径,但添加完之后需要重启vscode才有效。

5. 终极办法-----重启!!!(完美烧录)

之后我将环境变量中的dfu-util的路径删掉,不影响烧录。看来应该是第三条重启后可以解决该问题了。
很迷,不知道为啥会好了,如果有大佬知道的话,希望不吝赐教,感谢!!
在这里插入图片描述

开启usb cdc,可以通过usb读log了
在这里插入图片描述
在这里插入图片描述

### ESP32-S3-MINI-1 开发板 I2C 使用教程 #### 1. 硬件连接 对于 ESP32-S3-MINI-1 来说,I2C 接口通常用于与传感器或其他外围设备通信。SCL 和 SDA 是两个主要的信号线,在硬件连接时需要注意这两条线路的接法以及是否需要上拉电阻[^1]。 ```plaintext | 设备 | 连接到 | |--| | VCC | 3V3 或者 5V (取决于模块需求) | | GND | 地 | | SDA | GPIO 被配置为 I2C 数据线 | | SCL | GPIO 被配置为 I2C 时钟线 | ``` #### 2. 初始化 I2C 总线 初始化过程中涉及到设置波特率、指定使用的GPIO引脚作为SDA和SCL等功能。下面是一个简单的初始化函数示例: ```cpp #include "driver/i2c.h" #define SDA_PIN 21 // 定义SDA针脚编号 #define SCL_PIN 22 // 定义SCL针脚编号 void setup_i2c() { int i2c_master_port = I2C_NUM_0; i2c_config_t conf = { .mode = I2C_MODE_MASTER, .sda_io_num = SDA_PIN, .scl_io_num = SCL_PIN, .sda_pullup_en = GPIO_PULLUP_ENABLE, // 启用内部上拉电阻 .scl_pullup_en = GPIO_PULLUP_ENABLE, .master.clk_speed = 100000 // 设置传输速率 }; i2c_param_config(i2c_master_port, &conf); i2c_driver_install(i2c_master_port, conf.mode, 0, 0, 0); } ``` #### 3. 发送数据到从机 发送命令给连接至 I2C 总线上的一台或多台从属装置可以按照如下方式实现: ```cpp int address = 0x7F; // 假定地址为 0x7F // 写入单字节数据 i2c_cmd_handle_t cmd = i2c_cmd_link_create(); i2c_master_start(cmd); i2c_master_write_byte(cmd, (address << 1) | WRITE_BIT, ACK_CHECK_EN); i2c_master_write_byte(cmd, data_to_send, ACK_CHECK_EN); i2c_master_stop(cmd); i2c_master_cmd_begin(I2C_NUM_0, cmd, 1000 / portTICK_RATE_MS); i2c_cmd_link_delete(cmd); ``` #### 4. 读取来自从机的数据 接收由其他设备通过 I2C 协议传来的信息可以通过以下方法完成: ```cpp uint8_t read_data; cmd = i2c_cmd_link_create(); i2c_master_start(cmd); i2c_master_write_byte(cmd, (address << 1) | READ_BIT, ACK_CHECK_EN); i2c_master_read_byte(cmd, &read_data, ACK_VAL); i2c_master_stop(cmd); i2c_master_cmd_begin(I2C_NUM_0, cmd, 1000 / portTICK_RATE_MS); i2c_cmd_link_delete(cmd); Serial.println(read_data); ``` #### 5. 常见问题解答 - **无法识别从器件**: 验证所选的 SDA/SCL 引脚是否正确;确认外部电源供应充足;尝试增加外部上拉电阻。 - **通讯失败或不稳定**: 检查是否有足够的等待时间让总线稳定下来再继续操作;降低 I2C 波特率以减少误码可能性。 - **程序崩溃**: 如果遇到此情况,请确保所有指针都已适当分配内存空间,并且释放不再使用的资源。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值