EZ-USB FX2(68013)Cmos摄像头研究(3)--SlaveFIFO固件_学与玩_百度空间

            感觉固件要写的东西还是比较少的,主要是SlaveFIFO的配置。使用端点2,in传输,端点描述符为: db   DSCR_ENDPNT_LEN      ;; Descriptor length
        db   DSCR_ENDPNT         ;; Descriptor type          
        db    82H                     ;; Endpoint number, and direction
        db   ET_BULK            ;; Endpoint type
        db   00H               ;; Maximun packet size (LSB)
        db   02H               ;; Max packect size (MSB)
        db   00H               ;; Polling interval

       在这里将{zd0}包设为512bytes。然后就是初始化时的SLaveFIFO配置,同步,AUTO IN,端点2,基本上是TRM中的实例,稍作修改,需要注意的是特殊寄存器连续设置时要延时SYNCDELAY,TRM中的代码有两处好像掉了,我当初照着弄的时候就有问题,后来加上就好了。设置CLKOUT输出驱动Sensor:

    CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1|bmCLKOE) ;

       其他的地方参照TRM的9.3.10的例子,代码我就不贴了.我是将端点8改为2。其他配置也采用端点2的配置,另外端点2设置为512×4倍缓冲,有个问题就是我如果设置为1024的话,会出错,不知道为什么?看网上好多设为1024的也是类似问题,貌似是cypress的驱动不支持1024.

        接下来就是sensor部分的初始化,主要是对snesor寄存器参数配置;这里就有个问题了,EZUSB提供的I2C函数,ReadI2C真不知道咋用,汗!看好多人也是这问题,读到的数都是错误的。没办法,只能操作I2C那三个寄存器了。。。郁闷,Cypress也写的不清不楚的。

        {zh1}就是Vendor命令中的处理了,在接收到上位机开始采集一帧图像的Vendor命令后,反复查询,知道VSYNC信号的到来,马上清空FIFO,然后返回,保证一帧图像的完整性。

switch (SETUPDAT[1]){

     case VX_B2:{

   ......

   While(VSYNC)

   {SYNCDELAY;
   FIFORESET = 0x80; // 使滞留的数据无效
   SYNCDELAY;
   FIFORESET = 0x02;
   SYNCDELAY;
   FIFORESET = 0x00;
      SYNCDELAY;};

   ......

}}

                                                                                                                              【谷】



郑重声明:资讯 【EZ-USB FX2(68013)Cmos摄像头研究(3)--SlaveFIFO固件_学与玩_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——