1、 本文简单描述一下UVC的亮度控制机制,实际上就是测试AN75779的亮度功能。测试工具有两个,一个是关于位机出图像的E-CAM软件,另一个是监测USB3 是关于 e-CAM 软件更改亮度的截图,如下图: 弹出的控制页面中只有亮度是可以操作的,其它是灰色的。当然,后面的文章会介绍使能对比度、色调等其它控制功能,不过是收费的。 2、 这里用 BUS HOUND 软件监听 USB 总线上的控制传输指令,数据如下: 上图是软件 e-CAM 发出的两条指令,第一条指令是 8 个字节, 21 01 00 02 00 02 02 00 ,控制传输指令 CTL 是 USB 协议定义的指令,具体 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的代码,识别出 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