LinuxでUSBプロトコルを変更できますか?

LinuxでUSBプロトコルを変更できますか?

私はuart-USBブリッジを使用せずにマイクロコントローラがUSB経由でコンピュータと直接通信できるようにする方法を見つけようとしました。 USBポートのUSBプロトコルを無効にしてポートを通常のシリアルポートとして使用すると、これを行うことができると思いました。これを達成するためにポート。ポート。ところでUSB部分は消えないと言いましたね。しかし、Linuxオペレーティングシステムの内部の仕組みの多くが変更される可能性があるという話も聞きました。 Linuxでは、USBプロトコルを変更してUSBポートを通常のシリアルポートに切り替えることはできますか?

ベストアンサー1

USBは、何らかの意味で以前のRS-232シリアルポート規格(EIA / TIA-232とも呼ばれます)と一致する「シリアルポート」ではありません。 「追加要件を解除」してUSBをRS-232に変換することはできません。

従来のRS-232シリアルポートとは異なり、USBは差動信号を使用します。信号レベルやその他の電気的特性は非常に異なりますが、実際にはRS-485とやや似ています。

RS-232は最大+/- 15Vの信号電圧を使用できます。 USBはUSB 2 Hi-SpeedモードでUSB 1モードで<0.3Vロジックローと2.8-3.6Vロジックハイを使用し、電圧ははるかに高いです。 。

RS-232でTTLロジックレベル(0..5V)を使用しても、USBトランスミッタはRS-232「スペース」(=より高い電圧状態)信号を安定して生成できません。これらの規格の間に信号レベルに矛盾があります。 USB 送信機の信号は RS-232 UART 受信機に比べて弱すぎるため、RS-232 出力信号は USB 受信機に過負荷がかかります。

さらに、単純なレベル変換回路では非互換性の問題を解決できない。 USBトランシーバは、スタートビット、データバイト、ストップビットの1つまたは2つを送信するのではなく、パケットを処理します。パケットの先頭には同期シーケンス(USB 1の場合は8ビット、USB 2 Hi-Speedの場合は32ビット)が必要です。です。これらはすべて効率のためにハードウェアで実装でき、通常は他のタスクを実行する理由がないため、直接ソフトウェア制御で実際のデータラインを「ビットタップ」する方法はありません。

比較信号例RS-232そしてUSB 1.1ウィキペディアで。

要約すると:いいえ、問題はUSBとRS-232が実際のハードウェアレベルで異なっていることです。

おすすめ記事