- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
AN75779のデザインを用いてUVCのイメージセンサインタフェースを構築しようとしています。
現在、センサからの出力がPC側で表示できておりません。
アプリケーション上(VirtualDubやAmCap)を開くと、デバイスの選択はFX3と表示されますが、
画像としてはまったく表示されず、Blankのままです。
センサの出力はISPを介してFX3に渡されています。FX3はそれをUSB3.0経由でPCと接続し
取り込もうとしています。
(Sensor) - (ISP) - (FX3) - [USB3.0] - (PC)
という接続です。
FirmwareはAN75779のcyfx_uvc_an75779.imgをそのまま使用しています。
以上が前提です。
この構成において、画像が出ない原因を探りたいと考えています。
1) ISPからGPIF側の取り込みをFX3内部で取りこぼしているのか、
2) GPIF2では取れているが、FX3から出力するところでUVCフォーマットに則していないのか、
大きく2つが考えられると推測しています。
GPIF2のステートマシンはAN75779のp.19に記載があるのでこれを前提にしようかと思うのですが、
ステートの値を外に引き出す際に、基板上で空いているピンがPMODEの3ピンしかありません。
ただ、PMODEピンはGPIF2で選択することができません。
PMODEピンしか空きピンが無い場合、内部信号を出すことはできない、という認識で
間違いないでしょうか(他にステートマシンの挙動を見る手立てはありませんでしょうか)
2.のFX3→UVCフォーマットの変換でNGとなっている可能性があるとしたら、
どこか確認できるステータス信号やレジスタはありますでしょうか。
それとも、ここは規格ものなのでNGになる可能性が低く、今回の現象については
ここの問題が考えにくいので無視してもよい、というレベルなのでしょうか。
解決済! 解決策の投稿を見る。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
1. ステートマシンがどのステートにあるのかを見るには、下記コードを活用し、UARTで表示できます。
uint8_t curState_p; CyU3PGpifGetSMState(&curState_p); CyU3PDebugPrint (4, "Current status = %d\r\n", curState_p); |
ステートマシンを見ることも役立つ情報が得られるかと思いますが、他にもっと見ていただきたい点がございます。
AN75779のGPIFプロジェクトは、"3.1.1 GPIF II Interface Requirements"に示す信号がFX3(GPIF-II)に送られてくることを想定しています。そのため、まずは"Figure 8. Image Sensor Interface Timing Diagram "のように、FV, LV, PCLKが送られてきており、かつ、FVとLVはActive High, そしてPCLKの立ち下がりで動作することをご確認ください。出力の設定はISP側のお話なので、ISPの設定をご確認ください。
(ISP側ではなく、GPIF-IIの設定を変えることも可能ですので、ISP側の変更ができない場合はGPIF-IIの設定をご変更ください。)
ISP - FX3(GPIF-II) 間のデータバス幅はいくつでしょうか?8ビット、16ビット、32ビットでそれぞれGPIF-IIのステートマシンにて設定するカウンタ値が異なります。ご確認をお願いします。(3.5 GPIF II State Machine に書かれています)
2. UVCディスクリプタの設定によりNGになる可能性はあります。
例えばフレームレートの設定、ビデオフォーマットの設定など。
ISPの設定とUVCディスクリプタの設定をどちらもチェックしていかなければなりません。
UVCディスクリプタ(VS Format/Frame Descriptor)のデフォルト設定は"2.3.1.2 Video Streaming Interface"に書かれています。
よろしくお願い致します。
Hirotaka Takayama
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
1. ステートマシンがどのステートにあるのかを見るには、下記コードを活用し、UARTで表示できます。
uint8_t curState_p; CyU3PGpifGetSMState(&curState_p); CyU3PDebugPrint (4, "Current status = %d\r\n", curState_p); |
ステートマシンを見ることも役立つ情報が得られるかと思いますが、他にもっと見ていただきたい点がございます。
AN75779のGPIFプロジェクトは、"3.1.1 GPIF II Interface Requirements"に示す信号がFX3(GPIF-II)に送られてくることを想定しています。そのため、まずは"Figure 8. Image Sensor Interface Timing Diagram "のように、FV, LV, PCLKが送られてきており、かつ、FVとLVはActive High, そしてPCLKの立ち下がりで動作することをご確認ください。出力の設定はISP側のお話なので、ISPの設定をご確認ください。
(ISP側ではなく、GPIF-IIの設定を変えることも可能ですので、ISP側の変更ができない場合はGPIF-IIの設定をご変更ください。)
ISP - FX3(GPIF-II) 間のデータバス幅はいくつでしょうか?8ビット、16ビット、32ビットでそれぞれGPIF-IIのステートマシンにて設定するカウンタ値が異なります。ご確認をお願いします。(3.5 GPIF II State Machine に書かれています)
2. UVCディスクリプタの設定によりNGになる可能性はあります。
例えばフレームレートの設定、ビデオフォーマットの設定など。
ISPの設定とUVCディスクリプタの設定をどちらもチェックしていかなければなりません。
UVCディスクリプタ(VS Format/Frame Descriptor)のデフォルト設定は"2.3.1.2 Video Streaming Interface"に書かれています。
よろしくお願い致します。
Hirotaka Takayama
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
コメントありがとうございます。
ステートマシンですが、UART経由ではなく別のGPIO経由で出力して挙動としては問題ない(意図しないステートには入っていないと思われる)ことを確認できました。
次に、ご指摘いただいた確認点ですが、
- GPIF II Interface Requirementsに則した信号はFX3に入力されています。
- データ幅は8bitで、カウンタの設定は変更していないものの、デフォルトで16367となっていたので相違は無いと考えます。
- フレームレートはセンサの出力と同じ22fpsの設定にフレームディスクリプタを変更しました。
この上で再度試したところ、USB出力(PCからは入力)としてはパケットが確認できたものの、アプリケーションから画像の出力には至らないままでした。2.3.1.2 Video Streaming Interfaceを見る限りでは、設定が大きく逸脱している箇所は無いように見受けられるのですが、その他注意すべき点やよく引っかかる箇所のなど、見るべき箇所がありましたらご教示ください。
参考までに、PC側でVirtualDubによる画像表示中のUSB受信パケットのデータを添付します。
8bitデータラインを3.3Vに接続した時にはFF(データ値255)、GNDに接続した時には00(データ値0)が
入力として確認できているため、入力された画像データをUSBに正しく出力している、と判断できると考えています。
USBのパケット内に、入力された画像データが出力出来ていることから、
UVCのディスクリプタを含め、設定系の問題ではないかと想定しています。
以上です。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
他スレッドでいただいたご質問及び回答で、問題は解消致しましたか?
AN75779のサンプルデザインのデータフォーマットについて
もし解決されていないようでしたら、WireSharkのUSBPCapでUSBパケットを取得いただき、添付いただけないでしょうか。
解決されておりましたら、データフォーマット、フレームレート以外の変更点について書ける範囲で記述いただけますと幸いです。
よろしくお願い致します。
Hirotaka Takayama
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
コメントありがとうございます。
画像についてですが、CYUSB3KIT-003と違い出力(PC入力)側がType-Cのレセクタプルだったため、信号接続の問題の可能性がありました。
(Type-CなためSS信号が表裏2ペアあったのですが、そこが共通になっていたところを外しました)
接続を再度見直し、USB3.0でリンクし、画像表示できたことは確認できました。その他ボード上の別の問題などは残っていますが、当スレッドでの質問としてはすべてクリアになりましたので、これを持って解決としたいと考えています。
(別問題が解決しない場合は、別スレッドにて質問致します)
以上です。