2 min read

原生USB颠覆Arduino串行通信:波特率不再是瓶颈,数据传输迈入新纪元

ESP32-S3等原生USB芯片的出现,颠覆了传统Arduino开发中对`Serial.begin()`波特率的认知。当通信通过USB原生接口而非UART进行时,`Serial.begin()`指定的波特率(如常见的115200)已不再是数据传输速率的实际限制。

ESP32-S3等芯片集成了USB控制器,能够直接通过USB接口进行串行通信,无需外部USB-to-UART转换芯片。这意味着通信速率不再受限于UART硬件的波特率设置,而是取决于USB接口本身的带宽。USB全速模式理论带宽为12Mbps,实际数据吞吐量可达约9.6MB/s。测试表明,基于ESP32-S3的Arduino固件可实现超过7MB/s的数据传输,而使用ESP-IDF的固件表现稍慢,约5MB/s,这可能与TinyUSB实现有关。

这一发现对嵌入式开发具有重要意义,尤其是在数据密集型应用中。开发者可以利用原生USB接口的更高带宽,大幅提升数据传输效率,例如在音频流、数据记录或固件更新等场景。然而,对于仍依赖UART接口的开发板,其传输速率仍将受限于UART硬件的上限(ESP32 UART据称最高5Mb/s)。未来的开发应更多关注原生USB的潜力,并优化相关驱动和协议以充分释放硬件能力。

This number does nothing...
Yes, I know it’s a bit click-baity - but I’m struggling to come up with entertaining and amusing titles…
订阅情报