AN75779のサンプルデザインのフレームレートについて

Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
TeMa_2997106
Level 6
Level 6
Distributor - TED (Japan)
10 likes received 10 solutions authored 250 replies posted

AN75779のデザインを用いてUVCのイメージセンサインタフェースを構築しようとしていますが、

現在、センサからの出力がPC側で表示できておりません。

アプリケーション上(VirtualDubやAmCap)を開くと、デバイスの選択はFX3と表示されますが、

画像としてはまったく表示されず、Blankのままです。

このデザインにおいては、USB3.0でのインタフェース時、フレームレートは30fps固定でしょうか。

いま使用しているセンサの出力が22fps固定なのですが、フレームレートの問題でNGとなっている

のであればFirmを見合う形で変更したいのですが、可能なのでしょうか。

それとも、ISP側でフレームレート変換が必要でしょうか。

0 件の賞賛
1 解決策
lock attach
Attachments are accessible only for community members.
HirotakaT_91
Moderator
Moderator
Moderator
500 replies posted 250 replies posted 100 replies posted

FX3でのインタフェース時、フレームレートはUVCディスクリプタで設定が可能です。

cyfxuvcdscr.c 内でConfiguration Descriptor がCyFxUSBSSConfigDscr (USB3.0の場合)として定義されており、 "Class specific Uncompressed VS frame descriptor" にて、AN75779のデフォルトですと30 fpsで設定されています。

line 849に書かれた

0x15, 0x16, 0x05, 0x00,        /* 30fps */

がDefaultのフレームレートを30fpsにする、という設定です。値はフレームのインターバルが書かれています。

例として、VGAで22fpsを表示する "Class specific Uncompressed VS frame descriptor" を以下に記載します。

/* Class specific Uncompressed VS Frame descriptor for VGA*/

         0x1E,                           /* Descriptor size */

         0x24,                           /* Descriptor type*/

         0x05,                           /* Subtype: uncompressed frame I/F */

         0x01,                           /* Frame Descriptor Index */

         0x01,                           /* Still image capture method 1 supported */

         0x80,0x02,                      /* Width in pixel: 640-VGA */

         0xE0,0x01,                      /* Height in pixel 480-VGA */

         0x00,0x00,0x65,0x04,            /* Min bit rate bits/s. 640x480x15x16 (bitrate = width x height x frame rate x 16bit/pixel) */

         0x00,0x00,0x94,0x11,            /* Max bit rate bits/s. 640x480x60x16 */

         0x00,0x60,0x09,0x00,            /* Maximum video or still frame size in bytes(Deprecated) 640x480x2 bytes */

         0x91,0xEF,0x06,0x00,            /* Default Frame Interval 22 fps*/

         0x01,                           /* Frame interval(Frame Rate) types: Only one frame interval supported */

         0x91,0xEF,0x06,0x00,            /* Minimum Frame Interval 22 fps */

フレームインターバルの早見表を以下に示します:

Frame interval setting reference table

15 fps = 666666 ns (frame interval) = 0x2A,0x2C,0x0A,0x00

22 fps = 454545 ns (frame interval) = 0x91,0xEF,0x06,0x00

30 fps = 333333 ns (frame interval) = 0x15,0x16,0x05,0x00

60 fps = 166666 ns (frame interval) = 0x0A,0x8B,0x02,0x00

120 fps = 83333 ns (frame interval) = 0x85,0x45,0x01,0x00

Class specific VS frame descriptorの設定については、必要に応じて添付のVideo Device Examplesの"2.3.5.1.4 Class-specific VS Frame Descriptor"もご参照いただければと思います。本添付資料はUSB-IFよりダウンロード可能です。

よろしくお願い致します。

Hirotaka Takayama

元の投稿で解決策を見る

0 件の賞賛
4 返答(返信)
lock attach
Attachments are accessible only for community members.
HirotakaT_91
Moderator
Moderator
Moderator
500 replies posted 250 replies posted 100 replies posted

FX3でのインタフェース時、フレームレートはUVCディスクリプタで設定が可能です。

cyfxuvcdscr.c 内でConfiguration Descriptor がCyFxUSBSSConfigDscr (USB3.0の場合)として定義されており、 "Class specific Uncompressed VS frame descriptor" にて、AN75779のデフォルトですと30 fpsで設定されています。

line 849に書かれた

0x15, 0x16, 0x05, 0x00,        /* 30fps */

がDefaultのフレームレートを30fpsにする、という設定です。値はフレームのインターバルが書かれています。

例として、VGAで22fpsを表示する "Class specific Uncompressed VS frame descriptor" を以下に記載します。

/* Class specific Uncompressed VS Frame descriptor for VGA*/

         0x1E,                           /* Descriptor size */

         0x24,                           /* Descriptor type*/

         0x05,                           /* Subtype: uncompressed frame I/F */

         0x01,                           /* Frame Descriptor Index */

         0x01,                           /* Still image capture method 1 supported */

         0x80,0x02,                      /* Width in pixel: 640-VGA */

         0xE0,0x01,                      /* Height in pixel 480-VGA */

         0x00,0x00,0x65,0x04,            /* Min bit rate bits/s. 640x480x15x16 (bitrate = width x height x frame rate x 16bit/pixel) */

         0x00,0x00,0x94,0x11,            /* Max bit rate bits/s. 640x480x60x16 */

         0x00,0x60,0x09,0x00,            /* Maximum video or still frame size in bytes(Deprecated) 640x480x2 bytes */

         0x91,0xEF,0x06,0x00,            /* Default Frame Interval 22 fps*/

         0x01,                           /* Frame interval(Frame Rate) types: Only one frame interval supported */

         0x91,0xEF,0x06,0x00,            /* Minimum Frame Interval 22 fps */

フレームインターバルの早見表を以下に示します:

Frame interval setting reference table

15 fps = 666666 ns (frame interval) = 0x2A,0x2C,0x0A,0x00

22 fps = 454545 ns (frame interval) = 0x91,0xEF,0x06,0x00

30 fps = 333333 ns (frame interval) = 0x15,0x16,0x05,0x00

60 fps = 166666 ns (frame interval) = 0x0A,0x8B,0x02,0x00

120 fps = 83333 ns (frame interval) = 0x85,0x45,0x01,0x00

Class specific VS frame descriptorの設定については、必要に応じて添付のVideo Device Examplesの"2.3.5.1.4 Class-specific VS Frame Descriptor"もご参照いただければと思います。本添付資料はUSB-IFよりダウンロード可能です。

よろしくお願い致します。

Hirotaka Takayama

0 件の賞賛
TeMa_2997106
Level 6
Level 6
Distributor - TED (Japan)
10 likes received 10 solutions authored 250 replies posted

迅速なご回答ありがとうございます。

フレームレートの設定ですが、DefaultとShortestと2つあり、例えば上記の60fpsの設定ですと15~60fpsの信号であれば受けられる、とも読み取れますが、実際はDefaultの値の固定値なのでしょうか。

30fpsの設定で22fpsが受けられない(つまり画像が出ないのはここのフレームレートの設定が間違っている)のか否かの確認をしたい次第です。

以上です。

0 件の賞賛

前述の回答に記述したVS Frame Descriptorの例を、22fpsで表示する用に変更しました。

ISP側も22fpsで、FX3のUVCディスクリプタでも22fpsであれば、フレームレートによる問題は発生しないと考えられます。

また、確認した限り、Minimum Frame Intervalの設定に依存するように見えます。そのため、Minimum Frame Intervalが22fpsならば22fpsで送られます。Minimum Frame IntervalとDefault Frame Intervalを同じ値に合わせてご利用いただくのが良いかと存じます。

よろしくお願い致します。

Hirotaka Takayama

0 件の賞賛
TeMa_2997106
Level 6
Level 6
Distributor - TED (Japan)
10 likes received 10 solutions authored 250 replies posted

コメントありがとうございます。

了解しました。

0 件の賞賛