USB経由でUART(単純なシリアル送信および受信)をエミュレートできるかどうか誰かが知っていますか?これはどのように達成されますか?
このリンクはMicrochipのWebサイトで見つけましたが、あまり公開されていません。
http://www.microchip.com/forums/m522571-print.aspx
何か案は?ありがとう。
USB経由でUART(単純なシリアル送信および受信)をエミュレートできるかどうか誰かが知っていますか?これはどのように達成されますか?
このリンクはMicrochipのWebサイトで見つけましたが、あまり公開されていません。
http://www.microchip.com/forums/m522571-print.aspx
何か案は?ありがとう。
デバイススタックをCDCACMデバイス(仮想COMポートまたはVCPとも呼ばれます)として実装する必要があります。USBをサポートするマイクロコントローラーのほとんどのベンダーには、サンプルコードまたはアプリノートがあります。
それを考えると、Windowsに関する限り、デバイスはCOMポートのように見えます。デバイス側では、転送されたデータの生のブロックを取得します。UARTインターフェイスとUSBインターフェイスの両方に適切な抽象化レイヤーを実装して、必要に応じて同じインターフェイスを提供できます。
1つの落とし穴は、USBデバイスには、USB実装者フォーラムによって割り当てられたベンダーIDが5000ドルの料金で必要になることです(2016年7月23日正解)。デバイスを実際にリリースする場合、デバイスが認識され、他のデバイスと正しく動作するためには、実際にデバイスが必要になります。一部のマイクロコントローラーベンダーは、製品IDのサブセットにベンダーIDを無料または少額の料金で使用できるようにしますが、大量のデバイスを購入した場合にのみ使用できる場合があります。
もう1つの問題は、OSXまたはLinuxでは追加のドライバーなしでCDC / ACMが認識されるのに対し、Windowsはより煩雑で、特定のUSBベンダーと製品IDをusbser.sysドライバーに関連付けるためにINFファイルが必要になることです。次に、ドライバー署名の全世界に入ります。これは、WindowsVista64または任意のバージョンのWindows7を使用する場合に不可欠です。コード署名署名にも費用がかかります。ベンダーがサンプルVCPコードを提供している場合は、おそらく署名付きドライバーも提供します。STMicroelectroniosのSTM32VCPの例は、WHQL認定も受けているため、WindowsUpdateを介して自動的に取得できます。
つまり、実験のために、ベンダーがすでにコードと署名付きドライバーを提供している場合(またはWindowsを使用していない場合)にそれを行うことができますが、製品を展開するには、ベンダーIDとコード署名証明書が必要になります。正直なところ、ちょっとした地雷原です。
より簡単なアプローチは、FTDIUSB<->シリアルチップを使用することです。これは、独自のUSBコントローラーを備えていないマイクロコントローラーに特に役立ちますが、データ転送速度は、USB速度ではなく、マイクロコントローラーやFTDIのUARTインターフェイスによって制限されます。FTDIチップは、FTDIのVID / PIDを使用してそのまま使用することも、独自のVID/PIDでカスタマイズすることもできます。カスタマイズすると、VIDと署名証明書を取得する必要がなくなりますが、デバイスを汎用シリアルポートとしてではなく一意に識別できます。
基本的に、UARToverUSBをエミュレートするには2つのオプションがあります。
既存の製品を使用してください。FTDI社は、FT230Xなどのよく知られた堅牢なUART-USBブリッジチップを提供しています。プロ:USBについての詳細な知識は必要ありません。短所:大量生産で使用すると高価です。追加のハードウェア、追加の電力が必要です。
USBデバイスクラス「CommunicationDeviceClass」(CDC)を実装します。CDCの仕様は、USB.orgから入手できます。こちらを参照してください。プロ:大量生産で安価(マイクロコントローラーにUSBが搭載されている場合)。短所:USBに関する詳細な知識が必要です。