king_dragon
驱动牛犊
驱动牛犊
  • 注册日期2004-03-17
  • 最后登录2018-05-26
  • 粉丝0
  • 关注0
  • 积分48分
  • 威望44点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:1758回复:5

使用CMOS Sensor开发过usb应用的请进

楼主#
更多 发布于:2004-11-03 11:51
希望和各位大虾讨论
QQ:149715860
Email:liukunlong@163.com

最新喜欢:

XmanXman
seedriver
驱动牛犊
驱动牛犊
  • 注册日期2004-11-04
  • 最后登录2004-11-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-04 14:07
你看我的程序有怎么问题。我要通过C口的高低来控制写数据,如果高,68013自动写51发送,否则发送Data总线上的数据。程序如下:
int i=0,contrl=0;
if(IOC&&0x10)contrl=1;
if(contrl)
{

FIFORESET = 0x80;
SYNCDELAY;
FIFORESET = 0x08;
SYNCDELAY;
FIFORESET = 0x00;

if (EP68FIFOFLGS & 0x02)   // write data to ep6fifobuf when ep6 empty
{
EP6FIFOCFG = 0x44;
for(i;i<=511;i++)
{
EP6FIFOBUF = 0x51;
      }
          }
SYNCDELAY;
EP6BCH = 0x02;
SYNCDELAY;
EP6BCL = 0x00;
contrl=0;
}
else
{
EP6FIFOCFG = 0x4C;
SYNCDELAY;
EP6AUTOINLENH = 0x02;
SYNCDELAY;
EP6AUTOINLENL = 0x00;
}
seedriver
驱动牛犊
驱动牛犊
  • 注册日期2004-11-04
  • 最后登录2004-11-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-04 14:01
我也在做个类似的东西,大家可以多多交流呀。
king_dragon
驱动牛犊
驱动牛犊
  • 注册日期2004-03-17
  • 最后登录2018-05-26
  • 粉丝0
  • 关注0
  • 积分48分
  • 威望44点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-04 13:34
帖子沉的真快!
为什么无人问津,还是同道太少,
不是我不明白,这世界变化快!
king_dragon
驱动牛犊
驱动牛犊
  • 注册日期2004-03-17
  • 最后登录2018-05-26
  • 粉丝0
  • 关注0
  • 积分48分
  • 威望44点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-03 13:14
端点配置为:
SYNCDELAY;     //
EP6CFG = 0xE0; // EP6 512 BULK AutoIN 4x

SYNCDELAY;
EP6AUTOINLENH = 0x02;       //ep6 auto commit length 512
SYNCDELAY;
EP6AUTOINLENL = 0x00;
数据采集过程:
void TD_Poll(void)
// Called repeatedly while the device is idle
{
  if (EP68FIFOFLGS & 0x02)     // if EP6 FIFO is empty
  {
    //重新配置EP6为Auto IN
    if (EP6FIFOCFG == 0x00)
    {
      SYNCDELAY;
      EP6FIFOCFG = 0x08;//AUTO IN  8-BIT BUS
      SYNCDELAY;
      EP6AUTOINLENH   = 0x02; //ep6 auto commit length 512
      SYNCDELAY;
      EP6AUTOINLENL = 0x00;
      SYNCDELAY;
    }
    //read a frmae bytes data from GPIF
    Peripheral_SetEP6GPIFTC(FRAME_TOTAL);
    Peripheral_FIFORead(2);
  }
}
VSync中断处理:
static WORD xFIFOBC_IN = 0x0000;  
void Vsync_isr(void) interrupt INT0_VECT
{
  /*强制发送长度小于0x200的包*/
  // get   EP6FIFOBCH/L value
  xFIFOBC_IN = ( ( EP6FIFOBCH << 8 ) + EP6FIFOBCL );
  while (xFIFOBC_IN >= 0x0200)         // if pkt is short,
  {
    xFIFOBC_IN = ( ( EP6FIFOBCH << 8 ) + EP6FIFOBCL );
  }
  // force a commit to the host
  if (INPKTEND > 0) INPKTEND = 0x06;                

  // 发送帧起始位
  SYNCDELAY;
  EP6FIFOCFG = 0x00;//AUTOIN = 0  8-BIT BUS
  SYNCDELAY;
  EP6FIFOBUF[0] = 0x00;
  SYNCDELAY;
  EP6BCH = MSB(1);
  SYNCDELAY;
  EP6BCL = LSB(1);
  SYNCDELAY;
}
king_dragon
驱动牛犊
驱动牛犊
  • 注册日期2004-03-17
  • 最后登录2018-05-26
  • 粉丝0
  • 关注0
  • 积分48分
  • 威望44点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-11-03 12:08
本人应用方案(usb2.0摄像头):
Hynix 7131GP Sensor(VGA),usb主ic使用68013,GPIF工作模式,(sensor)vclk连接(68013)IFCLK(24Mhz),vsync(场频)连接Int0和Rdy0,hsync(行频)连接Rdy1,GPIF在VSync、Hsync同时有效时采集数据,在VSync下降沿时触发中断,负责帧处理。
现遇到问题无法读取一帧(VGA:640×480,YUV422)完整的数据:
1、Firmware怎样处理帧起始位?
2、应用程序要怎样处理才能读出完整的图像帧?现在的表现为只能读到部分数据。
接下来我会将firmware部分代码贴出来,供大家讨论。
游客

返回顶部