单片机的ESP32系列开发板使用CP210x (或类似的) "FTDI“芯片在闪烁时与单片机通信。CP210x向运行esptool.py的主机提供一个COM端口,这是一个实现Esressif通信协议的脚本。与其使用CP210x,我希望使用一个SAMD21来代替它。
我已经设法从我的ESP32,通过SAMD21,通过USB接收到我电脑上的串行监视器的日志。SAMD21通过UART连接到ESP32,标准的ESP配置为115200 8N1。通过在引导时保持正确的引脚,我可以手动进入引导加载程序模式,并得到日志返回确认正确的引导加载程序模式。
但是,当我运行esptool.py时,连接会失败,并且会超时。同样,esptool "monitor“无法确认我的终端模拟器很容易检测到的相同日志。
运行esptool.py的主机、CP210x FTDI芯片和ESP32之间的通信协议是什么?如何用SAMD21来模拟CP210x?"FTDI“、"TTL”和"RS232“的定义都有点模糊,据我在网上的研究可以确定,所以如果有人在这个领域有经验,我很想听听你的建议。
我的SAMD21上的代码只是:
#include <Arduino.h>
void setup()
{
Serial.begin(115200);
Serial1.begin(115200);
}
void loop()
{
if(Serial.available())
{
Serial1.write(Serial.read());
}
if(Serial1.available())
{
Serial.write(Serial1.read());
}
}其中Serial1是UART,Serial是USB串行连接。
发布于 2022-04-23 18:21:35
esptool.py期望串行端口(在Windows上称为COM端口)与ESP32通信。它不在乎计算机是否有一个老式的串行端口,是否使用带有专有协议(FTDI、CP210x等)的USB到串行桥,或者使用标准化的UBS协议进行串行通信(USB CDC ACM)。这将留给操作系统和已安装的驱动程序处理。
然而,esptool.py修改波特率,并使用RTS和DTR信号重置ESP32。它还相当容易受到与重置有关的定时问题的影响。如果您在引导模式中手动设置了ESP32,那么您应该能够在没有这些模式的情况下离开。
但是,最有可能的原因是Arduino CDC实现没有实现流控制。如果esptool.py发送的数据比放入内部缓冲区的数据多,则很可能会丢弃它,而不是将NAK发回,以便主机稍后可以重试。
我不完全理解SAMD21的Arduino核心来验证它。如果是这样的话,我不知道如何使它与Arduino程序一起工作。您需要使用其他框架来编程SAMD21。
更新
经过更多的测试,证明SAMD21 Arduino核的USB实现正确地实现了流控制。所以不会有任何数据丢失。
实际上,我能够成功地将代码上传到ESP32模块。设置如下:
Serial,而是SerialUSB,因为我不确定如何控制常规Arduino IDE中可用的项目设置。发布于 2022-04-24 19:29:00
Arduino有多个主板,esp32作为WiFi适配器安装在板上.为了闪现esp32,在WiFi库的示例中有一个名为SerialNINAPassthrough的工具草图,它应该被上传到主板上(在两个官方板上的SAMD21)。
SerialNINAPassthrough草图处理esptool发送的DTR和RTS信号,以便将板重置为闪烁模式。
https://stackoverflow.com/questions/71982301
复制相似问题