tag 标签: mt9p001

相关博文
  • 热度 22
    2015-5-2 19:45
    1639 次阅读|
    0 个评论
           良子USB2.0摄像头开发板上使用的芯片是CYPRESS公司的CY7C68013A,是用途最为广泛的高速USB2.0芯片,如果用户要了解更多关于此芯片的开发板,请查看我的店铺。在测试CY7C68013A芯片之前,用户需要先安装配套的USB开发包,并且用户要清楚的知道,如何安装USB固件对应的驱动程序(用户可以参考配套开发板的用户开发手册)。 1、如何下载USB芯片的固件程序。        安装完USB芯片的开发包后,里面有一个USB Control Center程序(以下简称控制台程序),用户主要应用这个控制台程序,完成USB固件程序的下载,调试等工作。固件程序可以下载到CY7C68013A芯片内部的SRAM中,也可以下载到CY7C68013A芯片外部的EEPROM中。这里先对第一种下载方式做详细说明,后面会介绍如何下载固件程序到EEPROM中。       打开控制台程序(以WIN7,64位为例),单击桌面左下角的开始按钮,找到控制台程序组,如下图,        打开控制台程序如下,插入开发板(为了学习方便,需要拔掉开发板上的EEPROM),        此时USB显示的设备名称是Cypress EZ-USB FX2LP No EEPROM,这个名称是默认的名称,如果CY7C68013A加载了具体的固件程序,名字可能就变化了,不是这个默认的名字了。窗口中还显示了其它一些USB设备,如键盘、鼠标等,由于和CY7C68013A无关,这里不做说明。 接下来开始下载固件程序到片内SRAM中。单击控制台程序菜单栏中的“Program FX2”,按下图操作,   弹出对话框如下,       找到电脑中的配套例程bulkloop.hex文件,最后点“打开”按钮,就可以将固件程序下载到CY7C68013A芯片内部了。 下载完固件后,在控制台窗口中的USB设备名称会发生变化,变成了如下所示的样子(在固件重新枚举的过程中,可能会需要重新安装新的固件对应的驱动程序,这个过程请参考前面的驱动程序安装一节),        如上图,USB设备名称已经变成了“Cypress EZ-USB Example Device”了,并且固件程序包含有4个大端点,分别是2、4、6、8。前两个是OUT端点,后两个是IN端点。 3、 测试bulkloop固件。       下载完固件后,可以进行数据传输,具体的过程是:上位机一次向OUT端点发送2048个数据,固件程序再将OUT端点收到的数据转发到IN端点,再返回到上位机。CY7C68013A内部的FIFO固件配置成4X512=2048字节,所以上位机一次最多可以发送2048个字节(上位机没有从USB芯片中读走数据)。按如下进行操作,向OUT端点发送2K的数据A,       固件bulkloop共含有4个大端点,需要成对使用,OUT端点2是和IN端点6配对的;OUT端点4是和IN端点8配对使用的。操作时,1先选择OUT端点0x02,2是输入要发送的数据A,3是要发送数据的数量,4是命令执行按钮,5是实际发送的数据。在操作时,记得要选择Data Transfers选项。 接收数据和上面的发送过程相似,按下图进行操作,       操作时1是要选择IN端点6,2是输入要读取的数量,3是命令执行按钮,4是实际读取的内容。可以看出,读出的数据和之前写入的数据是完全一样的。     (另公布一群号178338109,CYUSB3014开发专业讨论区)   淘宝店铺: http://liangziusb.taobao.com 良子.2015年    承接USB开发工程   QQ:2687652834
  • 热度 26
    2015-4-17 22:15
    3136 次阅读|
    0 个评论
           这里介绍一下摄像头开发板上的USB2.0芯片部分。CY7C68013A是一款支持USB2.0 HIGH SPEED的芯片,传输速度可以达到40M字节每秒,是应用最为广泛的芯片。CY7C68013A工作在SLAVE FIFO模式,从控制的角度可以看做是普通的FIFO,控制起来非常简单。电路图如下:       上面的原理图是标准的,应用在我的多个USB2.0项目上。56引脚的CY7C68012只有三个8组GPIO,其中两个8组共计16位IO用来做16位SLAVE FIFO模式的数据总线,仅剩下1组8位控制线,略微有些少。这8位控制线除了SLAVE FIFO必须的SLOE#、FIFOADDR1、FIFOFADDR0、PKTEND#、SLCS#这5个信号后,最后只剩下3根用户可以用的GPIO。当然这些硬件上的缺点可以通过其它方式弥补。       CY7C68013A这三组GPIO都与FPGA相连,受FPGA控制,电路板工作在SLAVE FIFO模式。这种工作模式能简化USB协议的复杂性,降低开发难度。实际上在固件中设置68013A为AUTO IN模式后,可以将USB芯片看作是一片普通的FIFO,控制起来很简单。   未完,待续,,,,,,。   (另公布一群号178338109,USB3.0开发专业讨论区)     淘宝店铺: http://liangziusb.taobao.com 良子.2015年    承接USB开发工程   QQ:2687652834
  • 热度 21
    2015-3-5 21:56
    1440 次阅读|
    0 个评论
          接上一篇,测试USB芯片的控制传输功能。      USB的 控制传输功能,主要用来传输一些数量较小的指令,一般几个字节,到64个字节都可以,当然,大于64字节的命令,可以发起多个控制指令,如摄像头的配置数据。摄像头的配置数据都是通过I2C接口,用控制传输功能实现的。作为开发板的测试例程,可以用I2C接口测试一下板子上的EEPROM芯片。       还是用前面介绍的固件程序,用命令0xb1来向24LC64的地址0x0230,写入值0xa5(这些值可以任意改变)。操作是否成功,可以通过示波器或者逻辑分析仪查看波形确认。先通过控制台程序,执行0xb1命令,如下:       在位置1处输入命令0xb1,在位置2处指定数据传输的方向为OUT,3是要单击控制传输按钮,4是显示的信息。下图是用逻辑分析测得的数据波形,      上图中1是24LC64的器件地址162(16进制是0xA2),2是固件程序设定寄存器地址0x0230,3为寄存器的内容165(16进制是0xA5)。仔细看一下,和固件程序中设置的是一样的,所以操作是成功的。       如果将EEPROM换成SENSOR,那么就是对摄像头进行寄存器配置了,开发过程序也是一样的。       (另公布一群号178338109,CYUSB3014开发专业讨论区)   淘宝店铺: http://liangziusb.taobao.com 良子.2015年    承接USB开发工程   QQ:2687652834
  • 热度 21
    2015-3-4 21:17
    2609 次阅读|
    0 个评论
           CMOS摄像头芯片都有用于配置功能的I2C接口,现在通用的接法有两种,一种是用FPGA来驱动CMOS的I2C接口;另一种是用68013的I2C模块驱动CMOS的I2C接口。用FPGA驱动I2C接口,上位机需要将配置数据先发到68013芯片内,68013芯片再将配置数据发送给FPGA,FPGA再发给CMOS;用68013驱动I2C,则在信号流中省去了FPGA,比较方便,这也是现在比较通用的做法。        68016芯片提供了对I2C的支持,配套有相应的软件函数。在开发包的目录C:\Program Files\Cypress\CY3684-FX2LP DVK\Target\Lib\LP下,有文件i2c_rw.c,定义了I2C读写的两个函数EZUSB_ReadI2C( )和EZUSB_WriteI2C( )。在文件i2c.c里,定义了I2C的初始化函数EZUSB_InitI2C(void)。用户可以使用这些函数,不需要自己重新编写寄存器一级的I2C驱动函数。以下简单介绍了在固件程序中增加I2C功能的过程。 1、在函数TD_Init(void)中增加I2C的初始化函数。 EZUSB_InitI2C();// Initialize I2C Bus 2、两个库函数,一个为读,一个为写。对I2C进行写操作的函数为EZUSB_WriteI2C(BYTE addr,BYTE length,BYTE xdata*dat),其中addr用于指定I2C设备地址;length为传送数据长度;*dat为发送数据缓冲区的起始地址。 3、 在FW.C文件前部增加两个控制传输指令的宏定义,如下: #define I2C_READ       0xb0 // #define I2C_WRITE      0xb1 // 在同一个文件的函数SetupCommand()中增加对这两个命令的具体执行部分,如下:  case I2C_READ://Liangzi   0xb0 //I2CTL |= bm400KHZ; EP0BUF = 0x0F; EP0BUF = 0xF0; EP0BCH = 0; EP0BCL = 2; EP0CS |= bmHSNAK; // Acknowledge handshake phase of device request break;    case I2C_WRITE://Liangzi   0xb1 i2c_str =0x09; i2c_str =0x02; i2c_str =0x84; EZUSB_WriteI2C(0xBA,3,i2c_str); //EP0BCH = 0; //EP0BCL = 0; break;       以上部分用控制台程序发送b0、b1这两个自定义命令。命令I2C_READ实现的是IN传输,向位机返回两个字节,如下,测试是成功的。(按照前一节介绍的下载固件程序到芯片内SRAM的方法下载固件)。       上图中1是要选择控制端点;2是选择数据传输的方向为IN ;3是自定义命令;4是自定义命令为0xb0;5是单击”Transfer Data“命令按钮后采集到的数据是0x0F,0xF0,这和KEIL程序中的设定是完全一致的。       上面只测试了一个命令0xb0,程序中还有一个命令0xb1,是对EEPROM进行写操作的,具体的操作见下一篇文章。   (另公布一群号178338109,CYUSB3014开发专业讨论区)   淘宝店铺: http://liangziusb.taobao.com 良子.2015年    承接USB开发工程   QQ:2687652834
  • 热度 18
    2015-2-26 21:57
    2490 次阅读|
    0 个评论
          年前设计了一款基于USB2.0的摄像头开发板,样板已经测试完毕,现正在加工正式板(修正了样板的一些BUG),15年3月份会正式发布。配套的摄像头是APTINA的130万像素的MT9M001,其它高像素的摄像头配套在另外两款USB3.0摄像头开发板上。 (基于EP4CE30+2DDR2+USB3.0的摄像头开发板,可以参考地址: http://bbs.ednchina.com/BLOG_ARTICLE_3023101.HTM ; 基于SPARTAN6+2DDR2+USB3.0的摄像头开发板,可以参考地址: http://bbs.ednchina.com/BLOG_ARTICLE_3021533.HTM )        这款USB2.0的摄像头开发板,视频信号流分成两部分,一路视频经过USB上传到电脑,经过专用的上位机程序成像;另一路视频直接通过VGA接口,在液晶显示器上直接成像。电路板外观如下:        开发板硬件上不是很复杂,主要是由FPGA+2SDRAM+USB2.0组成的,分述如下: 1、FPGA芯片,用的是EP4CE10,BGA封装,资源足够用来驱动摄像头。 2和3、SDRAM芯片,单片容量是32M字节,两片就是64M字节,示例程序只用到其中的一片,另外一片可以供用户做图像处理之用。 4、USB2.0芯片,56引脚的CY7C68013A,大量应用在我的其它USB开发板上。 5、视频DAC芯片,ANALOG公司的ADV7123,可以直接点亮液晶显示器。 6、EEPROM芯片,用来保存USB的固件程序。 7、电源芯片,提供电路板所用的3.3V、2.5V和1.2V电压。 8、电平偏移电路,这部分芯片是专门支持摄像头的,不管摄像头的数字信号电压是多大的,都可以调整到FPGA的3.3V。 9、4个LED,方便调试之用,如指示摄像头的场同步信号。 10、VGA接口,直接接液晶显示器。 11、USB2.0接口,直接接电脑。 12、并行摄像头接口,26针,含有一个电源和一个地,两个I2C引脚,其余全为数字信号,经过电平偏移电路连接到FPGA。 13、FPGA的JTAG接口,电路板上没有烧写EPCS存储器的AS接口。          针对摄像头开发板,专门配套了相应的例程,用来测试电路板上的硬件模块,主要例程如下(每一个例程都会有一篇文章单独介绍): 1、跑马灯程序。 这个例程是用来测试4个LED的,LED由FPGA驱动,固件程序存储在EPCS16存储器中,开发板一上电,就会运行这个跑马灯程序。 2、测试EPCS16的程序。 良子USB2.0摄像头开发板 上只有一个JTAG接口,并没有烧写EPCS的AS接口。这个例程示例如何使用JTAG接口来烧写EPCS16存储器。 3、烧写EEPROM例程。 USB芯片的固件程序是保存在EEPROM芯片中的。在测试时,可以每次上电手动将固件程序加载到CY7C68013A的内部SRAM中,并不需要烧写到EEPROM中;如果做成产品,则固件程序是应该烧写到EEPROM中去的。 4、8位彩条生成程序。 这个例程是测试视频DAC ADV7123的,FPGA生成8位数字彩条信号,再送给ADV7123,最后通过VGA接口驱动液晶显示器。 5、USB2.0测试程序。 主要测试CY7C68013A芯片,上位机会发送512字节数据到 CY7C68013芯片,CY7C68013A芯片再将收到的数据返回上位机。这个例程不需要FPGA参与。 6、FPGA及USB2.0测试程序。 这个例程需要FPGA参与,FPGA做主控,CY7C68013A芯片当做FIFO,工作在SLAVE FIFO模式。具体是FPGA产生递增的数据,将递增的数据传送给CY7C68013A芯片,再由CY7C68013A芯片传输到上位机。 7、SDRAM测试程序(TOP)。 开发板上有两片SDRAM,容量都是32M,方便用户缓存摄像头数据或者用来做图像处理。SDRAM需要由FPGA控制,FPGA产生递增的数据写进SDRAM,写满后再从SDRAM读出来,看数据是否一致。 8、SDRAM测试程序(BOTTOM)。 同上一个例程,测试另外一片SDRAM。 9、I2C测试程序。 摄像头芯片都有I2C接口,通过这个接口输入各种配置指令。I2C接口 可以由FPGA产生,也可以由CY7C68013A芯片产生。良子USB2.0摄像头开发板支持这两种模式(连接不同的电阻实现)。良子建议用户用CY7C68013A芯片的I2C外设来实现这个功能。CYPRESS也提供了配套的库函数,用户直接调用就可以,方便输入不同的控制指令。 10、130万像素摄像头MT9M001介绍。 良子USB2.0摄像头开发板 配套的摄像头是MT9M001,其它的摄像头也可以使用这块开发板,但FPGA程序要稍做修改。我的另外两款基于USB3.0的摄像头开发板可以驱动任意一款摄像头芯片,FPGA程序是万能的,不需要做任何修改。 11、最后一个例程,驱动摄像头的例程。 这个例程比较复杂,需要FPGA、一片SDRAM、USB芯片全部参与。 12、上位机程序。 程序是用C#平台下的C++开发的,程序也不是很简单,但提供了源代码,用户可以自行分析,良子在这里也仅是简单说明。       以上这些技术都应用在我的USB3.0的摄像头开发板上了,并且都经过了验证,提供给了几个厂家。当然,这些技术都是基本的,其它的如可编程时钟、可编程电压、开短路测试、电流测试、MIPI信号转换、HISPI信号转换、CYUSB3065等,都远比以上的技术复杂,有兴趣的用户可以查看我的别的文章。   (另公布一群号178338109,CYUSB3014开发专业讨论区)     淘宝店铺: http://liangziusb.taobao.com 良子.2015年    承接USB开发工程   QQ:2687652834
相关资源
  • 所需E币: 3
    时间: 2020-1-16 13:31
    大小: 1023KB
    上传者: 978461154_qq
    MI5100_MT9P001_5megMicronConfidentialandProprietaryAdvanceMT9P001-1/2.5-Inch5-MegapixelDigitalImageSensorFeatures1/2.5-Inch5-MegapixelCMOSDigitalImageSensorMT9P001I12STCForthelatestdatasheet,refertoMicron’sWebsite:www.micron.com/imagingFeaturesDigitalClarityimagingtechnologyHighframerateSuperiorlow-lightperformanceLowdarkcurrentGlobalresetrelease,whichstartstheexposureofallrowssimultaneouslyBulbexposuremode,forarbitraryexposuretimesSnapshotmodetotakeframesondemandHorizontalandverticalmirrorimageColumnandrowskipmodestoreduceimagesizewithoutreducingfield-of-viewColumnandrowbinningmodestoimproveimagequalitywhenresizingSimpletwo-wireserialinterfaceProgrammablecontrols:gain,framerate,framesiz……