萌えハッカーニュースリーダー

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

出典: https://atomic14.substack.com/p/this-number-does-nothing
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

…やっぱり、そうきましたか。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search