- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
本件の目的から説明させて頂きます。
<本件の目的>
日ケミのカメラモジュール「NCM03-V」からの映像をPCに表示させたい。
<回路構成>
[日ケミカメラ:NCM03-V]→[サイプレスマイコン:CYUSB3014]→[USB3.0HUB]⇒PC
[日ケミカメラ:NCM03-V]→[サイプレスマイコン:CYUSB3014]]↑
[日ケミカメラ:NCM03-V]→[サイプレスマイコン:CYUSB3014]]↑
※3パラになっています。
<使用するカメラのスペック>
型式::NCM03-V
フォーマット:YUV422
解像度:640(H) x 480(V)
フレーム周期:Max 30fps
<作成した回路と参考回路差異>
差はU3RXVDDQ, U3TXVDDQピンのパスコン(現在はジャンパーで追加)
PCLKピンのダンピング抵抗(現状無くても信号は確認できている)
MCLKをCYUSB3014から入れるようにしている。
<現状と課題>
カメラからICまではPCLK,HSYNC,VSYNCという信号が確認できている。
MCLKはCYPRESSのICから27.5MHzを入れている。
USB3.0からビデオ信号が出力されていない。
<ダウンロードしたサンプルソフト>
CYPRESSからAN75779をダウンロード
<すでにご教示いただいた変更箇所>
コミュニティで教えて頂き
- Senser.cのI2Cでカメラモジュールの設定部分を修正
RESET信号処理
- Uvc.cのMCLK(27.5MHz)出力設定
STDBY信号をLOW固定で設定
- Cyfxuvcdscr.cの解像度部分を修正
<現状判っているソフトんも動き>
- Uvc.cのあるイベントセットが上手く動作していない。
なので、何もしない状態で無限ループになっている。
なぜ、イベントセットが上手くできないのか不明(知識不足)
waitOption Timeout時間を長くして動作は変わりませんでした。
ブレークポイントでuvc.cのline1643を確認しましたが、実行されていません。
PCLK等の信号波形は確認できているのに、イメージセンサの初期化に問題とは
どういう事でしょうか?
解決済! 解決策の投稿を見る。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
情報展開していただきありがとうございます。
1.
かしこまりました。お願い致します。
同様に気になるのが、イメージセンサーのフォーマットです。
NCM03-Vのドキュメントを見る限りは、4:2:2 format with 16 bits per pixel だと "Cb Y Cr Y", "Cr Y Cb Y", "Y Cb Y Cr", "Y Cr Y Cb"のいずれかのフォーマットで出力ができるようです。
NCM03-Vの0x4E Registerを変えることでフォーマットが変わるようですが、これを変えたときには変化はございますか?
VS format descriptorにおいてデフォルトはYUY2に設定されております(いただいた最新のdescriptorでもYUY2に設定されていました)ので、フォーマットは "Y Cb Y Cr (YUYV)"が設定されるべきかと存じます。
2.
承知しました。ご説明ありがとうございます。
ホストアプリケーションに依存していないことがわかりました。
3.
"USB sniffer"で検索をかけると様々なツールが見つかります。
USBTrace - USB Protocol Analyzer Software for Windows
USBlyzer - USB Protocol Analyzer and USB Traffic Sniffer for Windows
などなど...
WiresharkでUSBパケットをキャプチャする方法も、日本語の記事が多くあるのでご参照いただけます。
WiresharkでUSBメモリのパケットキャプチャしてみた! | 無線&ネットワーク完全攻略
WiresharkでUSBデータをキャプチャする方法 | しまねこ電子工房製作日記
4.
bit rateとframe sizeを以下のようにして再度試してみていただけますでしょうか?(640x480対応)
/* Class specific Uncompressed VS frame descriptor */
0x80,0x02, /* Width in pixel 640 */
0xE0,0x01, /* Height in pixel 480*/
0x00,0x00,0xCA,0x08, /* Min bit rate bits/s. 640x480x30x2x8 */
0x00,0x00,0xCA,0x08, /* Max bit rate bits/s. 640x480x30x2x8 */
0x00,0x60,0x09,0x00, /* Maximum video or still frame size in bytes(Deprecated) 640x480x2*/
以上、よろしくお願い致します。
Hirotaka Takayama
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
ログを添付いただきありがとうございます。
1フレーム終了した段階でPIPEがABORTされているようです。
以前のスレッド(cyfxuvcdscr.cの編集 )にて、Number of bits per pixel を0x08に変更されたようですが、使用されているイメージセンサの出力がYUV422であれば、1ピクセル辺りの情報量は16bitになると思われます。そのため、この値は変更せずに0x10で良いと思われますが、いかがでしょうか。
これを修正し、どのように変化するかご確認いただけますか?
FYI:
ログにおいて、IN transferで送信されたバイト数:614400 = 16368 bytes × 37回 + 8784 bytes
1ピクセル辺り16bit with 解像度640 × 480で転送されるデータサイズ (byte):614400 = 640 × 480 × 2
よろしくお願い致します。
Hirotaka Takayama
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
Number of bits per pixelは現在0x10になっていて現在の状態です。
16368 = 16380 - 12
8784 = 8796 -12
という考え方でしょうか?
12byteは何のデータでしょうか?
1フレーム 614400byteという事でしょうか?
PIPEがABORTになるまでに、数秒から数分まで色々あります。
お送りした画像も色がおかしいですが、数秒写っています。
PIPEがABORTになる要因はハード的な事でしょうか?
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
URB_FUNCTION_ABORT_PIPEがホスト側より発行されているようですが、
URB_FUNCTION_ABORT_PIPEは、パイプに対する未処理のリクエストを全て取り消す必要があることを示します。
このgeneral-purposeリクエストにより、clientは指定されたパイプに対するpending中の転送を取り消すことができます。
詳細:_URB_HEADER (usb.h) - Windows drivers | Microsoft Docs
今回、STALL_PIDがDownstreamデバイス(FX3)より発行されており、STALL_PIDは デバイスに定義されていないリクエスト または デバイスの設定に対して適切ではないリクエストがデバイスに送られた場合にリクエストエラーとしてデバイスからホストに発行されます。(USB 2.0 Spec 9.2.7 Request Errorより)
STALLとはエンドポイントが停止している(送信または受信できない状態)か、コントロールパイプリクエストがサポートされていない状態を指します。(USB 2.0 Spec 8.4.5 Handshake Packetsより)
色がおかしくなる点含め根本原因としては現状ではまだわかりません。
問題を解決していくために、4点お願いがございます。
1. AN75779の”3.1.1 GPIF II インターフェース要件”を満たしているかご確認ください。
2. UVCデバイスからのビデオ表示/キャプチャをするためのホストアプリケーションは何を使用されていますか?(VLC Media Player, AMCap, VirtualDubなど)現在使用しているホストアプリケーション以外のアプリケーションを試してみていただけますか?
3. いただいたログのテキストを元に深く原因を解析するのは難しいです。USBプロトコルアナライザがなくても、例えばWireSharkでトランザクションはキャプチャできます。デバイス動作時のUSBトランザクションをキャプチャしていただけませんか?
4. Class specific Uncompressed VS format descriptorとClass specific Uncompressed VS frame descriptorの内容だけで良いので、最新の状態を提示していただけませんか?
FYI:
640 pixel x 480 pixelのデータを送信していて、1 pixel辺り2 byte(16 bit)であれば、1フレーム辺りのデータは640 x 480 x 2 = 614400 bytes になります。desc.cのNumber of bits per pixelのサイズ設定が違っていると思ったので説明に用いただけです。混乱させてしまい申し訳ございません。最新のcyfxuvcdscr.cをいただければ幸いです。
12バイトは各USB バルク転送に追加されるヘッダーです。
以下、AN75779(日本語版)の”2.3.4 UVC ビデオ データ ヘッダー”からの抜粋です。
”UVC クラスは非圧縮ビデオ ペイロード用に12バイトヘッダーを必要とします。ヘッダーは転送されるイメージデータの特性を記述します。例えば、イメージ センサー コントローラー (FX3) がフレーム毎にトグルする「new frame」ビットを含んでいます。FX3 コードはヘッダー内でエラー ビットをセットして、現行フレームのストリームに問題が発生したことを示すこともできます。このUVC データ ヘッダーはすべてのUSB転送に必要です。”
よろしくお願い致します。
Hirotaka Takayama
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
下記回答します。
1. AN75779の”3.1.1 GPIF II インターフェース要件”を満たしているかご確認ください。
私どもが上流会社から頂いている資料では、Hsync.VsyncとDataのタイミングチャートが無く、
上流会社からメーカーへ確認して頂くようにお願いしました。
2. UVCデバイスからのビデオ表示/キャプチャをするためのホストアプリケーションは何を使用されていますか?(VLC Media Player, AMCap, VirtualDubなど)現在使用しているホストアプリケーション以外のアプリケーションを試してみていただけますか?
現在まで使用したのは、Windows10のカメラアプリ、Skypeの映像アプリ、エンドユーザーが作成されたカメラアプリです。
どのアプリでも現象は同じでした。
3. いただいたログのテキストを元に深く原因を解析するのは難しいです。USBプロトコルアナライザがなくても、例えばWireSharkでトランザクションはキャプチャできます。デバイス動作時のUSBトランザクションをキャプチャしていただけませんか?
WireSharkをインストールしてみましたが、キャプチャーインタフェースにUSB関連がでません。
何か設定があるのでしょうか?
その他のソフトはありませんでしょうか?
4. Class specific Uncompressed VS format descriptorとClass specific Uncompressed VS frame descriptorの内容だけで良いので、最新の状態を提示していただけませんか?
最新のcyfxuvcdscr.cを添付します。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
情報展開していただきありがとうございます。
1.
かしこまりました。お願い致します。
同様に気になるのが、イメージセンサーのフォーマットです。
NCM03-Vのドキュメントを見る限りは、4:2:2 format with 16 bits per pixel だと "Cb Y Cr Y", "Cr Y Cb Y", "Y Cb Y Cr", "Y Cr Y Cb"のいずれかのフォーマットで出力ができるようです。
NCM03-Vの0x4E Registerを変えることでフォーマットが変わるようですが、これを変えたときには変化はございますか?
VS format descriptorにおいてデフォルトはYUY2に設定されております(いただいた最新のdescriptorでもYUY2に設定されていました)ので、フォーマットは "Y Cb Y Cr (YUYV)"が設定されるべきかと存じます。
2.
承知しました。ご説明ありがとうございます。
ホストアプリケーションに依存していないことがわかりました。
3.
"USB sniffer"で検索をかけると様々なツールが見つかります。
USBTrace - USB Protocol Analyzer Software for Windows
USBlyzer - USB Protocol Analyzer and USB Traffic Sniffer for Windows
などなど...
WiresharkでUSBパケットをキャプチャする方法も、日本語の記事が多くあるのでご参照いただけます。
WiresharkでUSBメモリのパケットキャプチャしてみた! | 無線&ネットワーク完全攻略
WiresharkでUSBデータをキャプチャする方法 | しまねこ電子工房製作日記
4.
bit rateとframe sizeを以下のようにして再度試してみていただけますでしょうか?(640x480対応)
/* Class specific Uncompressed VS frame descriptor */
0x80,0x02, /* Width in pixel 640 */
0xE0,0x01, /* Height in pixel 480*/
0x00,0x00,0xCA,0x08, /* Min bit rate bits/s. 640x480x30x2x8 */
0x00,0x00,0xCA,0x08, /* Max bit rate bits/s. 640x480x30x2x8 */
0x00,0x60,0x09,0x00, /* Maximum video or still frame size in bytes(Deprecated) 640x480x2*/
以上、よろしくお願い致します。
Hirotaka Takayama