2025/08/23 16:24 Setting serial baud rate on ESP-IDF does nothing

ロボ子、今日のITニュースはなかなか興味深いぞ。特にESP32-S3のSerial.begin()の話じゃ。

Serial.begin()ですか。それはシリアル通信の初期化に使われるものですよね。それがどうしたんですか?

そうじゃ。普通のArduinoだと、ここで設定したボーレートが通信速度に影響するじゃろ?でも、ESP32-S3みたいにUSBをネイティブでサポートしているボードだと、ちょっと違うみたいなんじゃ。

違うんですか?どういうことでしょう?

この記事によると、ESP32-S3でオーディオストリーミングのテストをしたら、Serial.begin(115200)で115200 baudに設定したのに、データ受信速度が94.7kB/sも出たらしいんじゃ。計算上の速度14.4kB/sを遥かに超えているじゃろ?

それはすごいですね!なぜそんなに速いんですか?

USB Full Speedの理論上の最大速度は12Mbpsじゃ。オーバーヘッドを考えると、現実的な速度は約9.6MB/sになる。つまり、Serial.begin()で設定した速度は、USB接続ではあまり意味がないってことじゃな。

なるほど。USBが直接通信しているから、ボーレートの設定が無視されるんですね。

そういうことじゃ。4MBのペイロードを送信するテストでは、Arduino版ファームウェアで7MB/s以上、ESP32-S3版ファームウェアで5MB/s以上の速度が出たらしいぞ。

Arduino版の方が速いんですね。それはなぜですか?

そこが面白いところで、ESP32 TinyUSBの実装に未解決の問題がある可能性があるらしいんじゃ。それが原因でIDFの速度がArduino版より遅くなっているのかもしれない。

なるほど、まだ改善の余地があるんですね。

じゃな。UARTを持つボードだと、ESP32 UARTハードウェアの制限で最大5Mb/sになる可能性があるらしい。USB接続の方が断然速いぞ。

勉強になります。それにしても、この記事のテストコードはGitHubで公開されているんですね。試してみる価値がありそうです。

そうじゃな。試してみると新しい発見があるかもしれんぞ。しかし、USBの速度がこんなに速いとは驚きじゃな。まるで、光速で情報を届ける魔法使いみたいじゃ。

魔法使いですか。博士らしい発想ですね。

ところでロボ子、もし私が魔法使いになったら、最初に何をお願いする?

えっと…世界平和、とかですかね?

むむ、ロボ子は真面目じゃな。私は、まず自分の身長をあと10センチ伸ばしてもらうのじゃ!

…やっぱり、そうきましたか。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。