第二章 UVC协议固件开发

本章说明:

本章在cypress官方文档说明的基础上,对如何修改固件做出直接、详细的说明,以降低开发难度。固件修改部分包括:

1、修改图像分辨率、图像帧率;

2、修改UVC传输数据格式;

3、修改UVC传输数据位宽。

 

一:修改图像分辨率、图像帧率

1、cypress官方驱动安装完成后,默认安装有EZ USB Suite工具,在开始目录打开。新建空白文件目录UVC_test。初次打开时需要选择工作目录,选择UVC_test目录,进入软件界面。选择file->Import,点击General->Existing Projects into Workspace->Next。

 

CYPRESS fx3 cypressfx3固件_数据格式

CYPRESS fx3 cypressfx3固件_帧率_02

2、如果工作目录已经存在一个工程,则不能再创建工程,这时需要Switch Workspace->Other重新选择一个可用的工程目录。

 

CYPRESS fx3 cypressfx3固件_固件_03

CYPRESS fx3 cypressfx3固件_CYPRESS fx3_04

3、选择UVC_AN75779目录,勾选Copy projects into workspace,Finish。这时会在UVC_test目录下新创建一个工程,整个的编辑都在这个新工程下进行。

 

CYPRESS fx3 cypressfx3固件_固件_05

CYPRESS fx3 cypressfx3固件_固件_06

4、打开cyfxuvcdscrc.c,寻找CyFxUSBSSConfigDscr函数,此函数对应USB3.0的开发,USB2.0需更改与其对应的函数。寻找程序中如下图部分。黄线为横纵轴的比例,蓝线为横纵轴的分辨率,红线为每帧耗时,对应帧率。

 

CYPRESS fx3 cypressfx3固件_数据格式_07

 

 

 

以修改为640*480@50fps为列。640/480=8/6,黄线部分对应填入0x08、0x06;640=0x280,480=0x1E0,蓝线部分对应填入0x80,0x02和0xE0,0x01(注意高低位顺序);1/50fps=20ms=200000*100ns,200000=0x30D40,红线部分对应填入0x40,0x0D,0x03,0x00。可见下图。

二:修改图像数据格式

源固件默认为YUY2数据格式,Windows下还支持大量其他数据格式,并为每种格式都分配了固定的GUID,图中只显示其中一部分,详情参考UVC_GUID

 

CYPRESS fx3 cypressfx3固件_帧率_08

 

 

 

将原有代码注释,以RGB32格式修改为例,修改如下。

 

CYPRESS fx3 cypressfx3固件_帧率_09

 

 

 

二:修改图像数据位宽

不同的数据格式要求不同的数据位宽,如YUY2-8bit,RGB565-16bit,RGB32-32bit。

高数据位宽可向下兼容低数据位宽。源码中默认为8bit,对其进行更改为32bit。

 

1、打开cypress驱动默认安装的GPIF II Designer工具。选择File->Open Project,选择正在编辑的工程目录下的fx3_uvc.cydsn\fx3_uvc.cyfx,打开工程。

2、在Interface Definition目录下修改Data bus witdh为32Bit,点击State machine。

 

CYPRESS fx3 cypressfx3固件_数据格式_10

CYPRESS fx3 cypressfx3固件_数据格式_11

CYPRESS fx3 cypressfx3固件_数据格式_11

CYPRESS fx3 cypressfx3固件_数据格式_13

2、分别点击LD_DATA_COUNT、LD_ADDR_COUNT,将数据长度改为4091(16bit对应8183,8bit对应16367)。保存、编译。

 

3、原fx3_uvc.cydsn目录下会新生成cyfxgpif2config.h文件,用其替代原工程相同名称文件。

 

CYPRESS fx3 cypressfx3固件_数据格式_11

CYPRESS fx3 cypressfx3固件_数据格式_15

 

 

 

4、将CyFxUSBSSConfigDscr函数中Number of bits per pixel行改为0x20,对应32bit(默认为0x10)。

 

CYPRESS fx3 cypressfx3固件_CYPRESS fx3_16

 

 

 

5、32bit情况下,打开uvc.c文件,确保最后部分按下图红线处设置。

 

CYPRESS fx3 cypressfx3固件_数据格式_17

6、保存更改,在工程名上右键,点击Build Project,生成固件镜像文件。

 

CYPRESS fx3 cypressfx3固件_固件_18

7、固件修改完成,用cypress驱动Control Center工具烧录。给入图像数据后,打开VirtualDub工具,选择File->Capture AVI,等待几秒钟,即可显示图像。选择Video-Capture pin可查看固件支持的图像数据格式。

CYPRESS fx3 cypressfx3固件_数据格式_19

CYPRESS fx3 cypressfx3固件_数据格式_20

CYPRESS fx3 cypressfx3固件_数据格式_21