原创 USB3.0芯片终于出来了(63)_官方摄像头开发例程AN75779简单介绍3

2015-6-23 20:39 2182 24 24 分类: MCU/ 嵌入式 文集: USB3.0芯片终于出来了

      接上一篇。

      除了前面介绍的8位数据线、行有效LV和场有效FV、像素时钟PCLK、复位信号RESET外,还有几根线要特别注意,1是I2C的两根线SDA和SCK,先看摄像头的接口电路,如下:

liangziusb_an75779_20150617_1.jpg

       上面的第1、2脚SCK和SCL要和USB3.0的对应引脚相连。25脚是输入给摄像头的时钟,频率是48M,这个时钟信号需要摄像头子板提供。24脚是掉电控制引脚,之前此引脚是由FPGA直接控制,这里需要将这个引脚直接接高电平,不起作用。最后一个是11引脚电源引脚,需要由USB3.0开发板提供给摄像头子板。上面接口中,17脚不用、22脚和26脚不用。

      另外要说明的是,MT9M001的分辨率为12位,这个测试只取高8位信号,低4位放弃不用。高8位信号在现在的阶段也不需要连接到USB3.0开发板上,以方便我们测试。

      硬线连接好后,我们可以给开发板上电,用示波器测量LV、FV和PCLK信号,均有正常的波形输出。

      接下来我们测试用USB3.0的I2C总线控制摄像头。文件sensor.c都是一些控制SENSOR的操作指令,都是通过I2C总线的,如单字节读写、双字节读写等。在测试I2C之前,最好对摄像头进行初始化。USB3.0初始化的引脚是GPIO22,可以看下面的下定义:

/* GPIO 22 on FX3 is used to reset the Image sensor. */
#define SENSOR_RESET_GPIO 22

         实现初始化的操作是先将GPIO22设置成低电平,10mS延时,再将GPIO22恢复为高电平,完成初始化操作。代码如下:

 

/* Drive the GPIO low to reset the sensor. */
apiRetStatus = CyU3PGpioSetValue(SENSOR_RESET_GPIO, CyFalse);
 
/* Wait for some time to allow proper reset. */
CyU3PThreadSleep(10);
 
/* Drive the GPIO high to bring the sensor out of reset. */
apiRetStatus = CyU3PGpioSetValue(SENSOR_RESET_GPIO, CyTrue);

     以上内容被封装成一个函数void SensorReset(void),在文件SENSOR.C文件中。这个函数只被调用了一次,是在UVC初始化函数中调用的,在文件UVC.C中。由于这个摄像头复位操作不受我们控制,我们不能随意操作这个函数。接下来,我们创建一个单独的命令(控制传输指令),来控制复位这个函数。

     在继续移植前,我们先看一下AN75779下载到USB3.0开发板后是什么样子的。下载完固件后,需要重新安装驱动(此处以后会详述),以便在Control Center中能够查看到两个调试用的端点,如下:

liangziusb_an75779_20150623_1.jpg

       上图中红色框中的就是两个调试用的端点,一个是OUT,一个是IN。另外,下载完固件后,设备管理器中有两个设备,如下:

liangziusb_an75779_20150623_2.jpg

       未完,待续,接下一篇文章。

 

(另公布一群号178338109,CYUSB3014开发专业讨论区)

 

 

淘宝店铺:http://liangziusb.taobao.com

良子.2015年    承接USB开发工程 

QQ:2687652834

文章评论0条评论)

登录后参与讨论
我要评论
0
24
关闭 站长推荐上一条 /2 下一条