一、主要内容
通过UVC协议传输图像传感器的数据时,不同传感器的数据位宽、图像分辨率、帧率是不同的,需根据指定的配置参数修改FX3的固件,生成img文件,才能够匹配图像传感器数据传输的需求。
需要用到的工具:GPIF II、EZ USB Suit
本文参考了Cypress官方文档,在AN75779的FX3固件基础上进行修改。
AN75779对应的数据格式:数据位宽8bit,分辨率1280x720,图像比例16:9,帧率30fps
更改后的数据格式:数据位宽16bit,分辨率640x480,图像比例8:6,帧率30fps
其它参考内容:
UVC协议固件开发
USB3.0 Cypress FX3固件img文件定制操作
二、图像位宽修改
1.打开Cypress驱动默认安装的GPIF II Designer工具,选择File-Open Project,选择需要修改的工程目录下的fx3_uvc.cydsn/fx3_uvc.cyfx,打开该文件
2.在Interface Definition(接口定义)选项卡中选择16 Bit选项,以用于Address/Data Bus Usage(地址/数据总
线的使用情况)设置。
3.打开State Machine(状态机)选项卡。在状态机设计图中,双击WAIT_FOR_FRAME_START 状态中的 LD_DATA_COUNT 和LD_ADDR_COUNT操作。将计数器的限定值改为8183。
32bit数据对应4091,16bit对应8183,8bit对应16367
4.保存项目,编译项目。
5.将fx3_uvc.cydsn文件夹中新生成的 cyfxgpif2config.h 头文件复制到固件的项目目录中,覆盖原有的cyfxgpif2config.h 文件。
三、图像分辨率和帧率修改
1.在固件的项目目录中找到cyfxuvcdscr.c文件
2.找到图中需要修改的位置。
第一部分是图像的比例,改成0x08和0x06。
第二部分是图像分辨率,640=0x280,480=0x1E0,注意UVC协议是先发低字节再发高字节,因此将0x80和0xE0写在前面。
第三部分是帧率,1/30fps=33.33ms=333333*100ns,333333对应的十六进制是51615,低字节在前,所以是15,16,05
四、img文件生成
1.修改完上述配置之后,打开EZ USB Suit工具,路径选择固件项目所在的上一级目录
2.选择File–>Import
3.选择Existing Projects into Workspace
4.点击Brose,选择固件项目所在的目录,载入后选择Finish
5.编译
6.在Debug文件中生成了新的img镜像文件
五、测试结果
用FPGA生成一张分辨率为640x480的图片,测试FX3固件修改成功