原创 基于MT9M114+CYUSB3014的UVC摄像头开发4(亮度控制)

2020-10-3 22:31 7291 31 31 分类: FPGA/CPLD 文集: USB3开发板

1、 本文简单描述一下UVC的亮度控制机制,实际上就是测试AN75779的亮度功能。测试工具有两个,一个是关于位机出图像的E-CAM软件,另一个是监测USB3是关于e-CAM软件更改亮度的截图,如下图:

弹出的控制页面中只有亮度是可以操作的,其它是灰色的。当然,后面的文章会介绍使能对比度、色调等其它控制功能,不过是收费的。

2、 这里用BUS HOUND软件监听USB总线上的控制传输指令,数据如下:

上图是软件e-CAM发出的两条指令,第一条指令是8个字节,21 01 00 02 00 02 02 00,控制传输指令CTLUSB协议定义的指令,具体8个字节的含义用户可以自行查阅UVC标准协议。第二条指令2个字节,31 00。这个简单的控制传输指令,也可以用BUS HOUND软件完成,具体如下

图中1是选择USB传输;

图中2是选择控制传输;

图中3是输出实际的8字节控制传输指令;

图中4是输入要发送的2字节数据;

3、结合上图中的8字节控制传输指令,请直接对照UVC协议具体分析一下(UVC协议第4章,或者第86页)。

第1字节21;

第2字节01,对应bRequest;常数定义操作的类型,具体见UVC协议的第87页,常数定义如下:

 

第3、4字节00 02;对应wValue;

第5、6字节00 02;对应wIndex;

第7、8字节02 00;对应wLength;

4、亮度控制部分代码分析打开文件uvc.c文件,我们看下程序是如何处理这8个字节的控制传输指令上的,定位在第323行上,如下:

函数CyFxUVCApplnUSBSetupCB ( )的输入参数有两个,如上图标记A,两个32位变量setupdat0和setupdat1正好是8个单字节,即是8个字节的控制传输指令;上图标记B的则是从这8个字节中按UVC协议提取的5个变量,分别是bmReqType,bRequest,wValue,wIndex,和wLength。
上位机发送的CTL指令为:21 01 00 02 00 02 02 00。注意到setupdat0=0x0200_0121;setupdat1=0x0002_0200,因为CYUSB3014内核的存储器组织是小端对齐的,所以4个字节的顺序是正好相反的。经过函数CyFxUVCApplnUSBSetupCB()的处理,如上图中标记B的处理,控制传输的5个变量的值如下:
bmReqType=0x21;
bRequest =0x01;
wValue =0x0200;
wIndex =0x0200;
wLength=0x0002;
上图中标记C的代码,是识别出UVC的控制指令后,通过事件设置函数CyU3PEventSet()设置事件CY_FX_UVC_VIDEO_CONTROL_REQUEST_EVENT。
接收事件CY_FX_UVC_VIDEO_CONTROL_REQUEST_EVENT是在函数UVCAppEP0Thread_Entry()中完成的。此函数在文件uvc.c中的第1667行,如下图:

通过获取事件函数CyU3PEventGet(),上图中标记A的,获取事件CY_FX_UVC_VIDEO_CONTROL_REQUEST_EVENT。再通过上图标记B的代码,识别出
wIndex >> 8==CY_FX_UVC_PROCESSING_UNIT_ID=0x02,执行函数UVCHandleProcessingUnitRqts()。
函数UVCHandleProcessingUnitRqts()在第1215行,如下图:

上图红框中代码是设置亮度的代码,先通过函数CyU3PUsbGetEP0Data()读出OUT传输的两个字节,存入变量glEp0Buffer中,再经过变量值范围检查后执行设置亮度的函数SensorSetBrightness()。

5、亮度设置相关的还包括描述符部分,以AN75779的USB2描述符为例,如下:

上面的处理单元共有3个字节的位控制字节,最低字节的D0位代表亮度控制,这是UVC协议定义好的。
如果将上面的D0位设置为0,再编绎程序,下载到电路板中,图像正常,但亮度控制功能所属的视频属性控制页都不显示了,仅剩下照相机控制页了。

作为上面的对比,将图像属性控制的3个字节的最低字节8位全部设置为1,即FF,
* D0: Brightness;//亮度
* D1: Contrast;//对比度
* D2: Hue;//色调
* D3: Saturation;//饱合度
* D4: Sharpness;//清晰度
* D5: Gamma;//伽玛
* D6: White Balance Temperature;//白平衡
* D7: White Balance Component;//白平衡

未完,接下一章。

良子USB,20200912
专注USB3.0、FPGA、PCIE、UVC摄像头开发
QQ:1345482533

作者: 良子usb, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3903348.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
31
关闭 站长推荐上一条 /3 下一条