wince中通过ov9650捕获视频

snailsun   2009-7-17 11:06 楼主
手上有一个从天嵌买的ov9650摄像头,天嵌也提供驱动了,程序可以调用的驱动函数如下:
CIS_Close
        CIS_Deinit
        CIS_Init
        CIS_IOControl
        CIS_Open
        CIS_PowerDown
        CIS_PowerUp
        CIS_Read
        CIS_Seek
        CIS_Write
但是,看了下驱动源代码,这几个函数的实现如下:
DWORD CIS_Open(DWORD hDeviceContext, DWORD AccessCode, DWORD ShareMode)
{
        RETAILMSG(1,(TEXT("CAMERA: CIS_Open\r\n")));

      RETAILMSG(1,(TEXT("CAMERA: CIS_Open---------\r\n")));
          RETAILMSG(1,(TEXT("CAMERA: CIS_Open----------\r\n")));
          RETAILMSG(1,(TEXT("CAMERA: CIS_Open-----------\r\n")));
          
        DRIVER_PREVIEW_ENABLE = 2;

        return TRUE;
}

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
BOOL CIS_Close(DWORD hOpenContext)
{
        RETAILMSG(1,(TEXT("CAMERA: CIS_Close\r\n")));
        return TRUE;
}

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void CIS_PowerDown(DWORD hDeviceContext)
{
        RETAILMSG(1,(TEXT("CAMERA: CIS_PowerDown\r\n")));

        m_Dx = (_CEDEVICE_POWER_STATE)D4;

        Camif_Capture(CAPTURE_OFF, CAPTURE_OFF);

        CamClockOn(FALSE);

        //RETAILMSG(1,(TEXT("CAMERA: CIS_PowerDown, m_Dx = D%u, init %d \r\n"), m_Dx, mInitialized));
}

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void CIS_PowerUp(DWORD hDeviceContext)
{
        RETAILMSG(1,(TEXT("CAMERA: CIS_PowerUp\r\n")));
       
        m_Dx = (_CEDEVICE_POWER_STATE)D0;
       
    //
    // 1. Camera IO setup
    //
        CamGpioInit();

        //
    // 2. Camera Clock setup
    //
        CamClockOn(TRUE);

        // 3. Camera i/f reset
    CAM_IF_Reset();

        if (image_size == 1)
                CamInit(QCIF_XSIZE, QCIF_YSIZE, QCIF_XSIZE, QCIF_YSIZE, 112, 20, COPIFRAMEBUFFER_B, COPIFRAMEBUFFER_A);
        else if (image_size == 2)
                CamInit(CIF_XSIZE, CIF_YSIZE, QCIF_XSIZE, QCIF_YSIZE, 112, 20, COPIFRAMEBUFFER_B, COPIFRAMEBUFFER_A);
       
        RETAILMSG(1,(TEXT("CAMERA: CIS_PowerUp, m_Dx = D%u\r\n"), m_Dx));
}

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
DWORD CIS_Read(DWORD hOpenContext, LPVOID pBuffer, DWORD Count)
{
        RETAILMSG(1,(TEXT("CAMERA: CIS_Read\r\n")));
        return TRUE;
}

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
DWORD CIS_Seek(DWORD hOpenContext, long Amount, DWORD Type)
{
        RETAILMSG(1,(TEXT("CAMERA: CIS_Seek\r\n")));
        return 0;
}

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
DWORD CIS_Write(DWORD hOpenContext, LPCVOID pSourceBytes, DWORD NumberOfBytes)
{
        RETAILMSG(1,(TEXT("CAMERA: CIS_Write\r\n")));
        return 0;
}
这几个函数实际根本没对camera做实际操作,不知道大家用过ov9650吗,能不能给提供点资料

回复评论 (11)

你的问题是什么?程序可以正常工作吗?
点赞  2009-7-17 11:12
捕获不到视频
点赞  2009-7-17 11:23
自己顶
点赞  2009-7-20 10:44
uping
点赞  2009-7-20 10:54
uping
点赞  2009-7-20 10:55
我现在就在弄这个,它是在CIS_IOControl里面有一个

                case IOCTL_CAM_CONT :
                        RETAILMSG(1,(TEXT("CAMERA:IOCTL_CAM_CONT\r\n")));
                        // Charlie.MSG_EN_1 Play
                        //DisplayEnable = 1;

                        // Enable camera interrupt
                        s2450INT->INTMSK1 &= ~BIT_CAM;
                        s2450INT->INTSUBMSK &= ~(BIT_SUB_CAM_P|BIT_SUB_CAM_C);


                        Camif_Capture(CAPTURE_ON, CAPTURE_ON);

                        //DisplayTime = DISPLAY_SCHEDULE;                                // polling mode
                        //SetEvent(CameraEvent);
//#ifndef YL_2440_SUPPORT
        //                s2450IOP->GPGCON &= ~(0x3<<24);
                //        s2450IOP->GPGCON |= (0x1<<24);                // EINT20
//#endif
                        frame_count = 0;                // for MPEG4
                        break;





这个需要通过应用程序来调用,调用完就会显示图像
点赞  2009-7-20 14:16
板子上自带cameratest.exe程序也不能显示图像,是程序还是摄像头有问题呢?
点赞  2009-7-20 17:19
都有可能,实在不行,你自己写一个打开的程序 就知道哪的问题了
点赞  2009-7-21 17:09
在IOcontrol函数打开camera中断,然后在中断IST调用显示函数的。
楼主多加打印信息,并且确定你的camera初始化寄存器正确,比较好弄的。
点赞  2009-7-21 17:20
请问,模拟sccb总线时,为什么在发送完一个字节的8位数据后,还要主机发送一位(第9位)“don't care”?“don't care”不应该是从机发给主机的吗?

void __inline ov7620_sccb_writechar(unsigned char data)
{
        int i = 0;

        /* data */
        for (i = 0; i < 8; i++ ) {
                ov7620_sccb_write_bit(data & 0x80);
                data <<= 1;
        }

        /* 9th bit - Don't care */
        ov7620_sccb_write_bit(1);
}
点赞  2009-7-22 10:13
==============
以下是厂家给的配置:共有三个VGA,CIF,SXVGA,输出都是YUV模式,如是时钟是24M,帧率是15fps,我只验证了VGA模式的,效果还可以!
;09032004
;OV9650
;VGA YUV
;15fps when 24MHz input clock
;Device Address(Hex)/Register(Hex)/Value(Hex)
;
60 12 80
60 11 81
60 6b 0a
60 6a 3e
60 3b 09
60 13 e0
60 01 80
60 02 80
60 00 00
60 10 00
60 13 e5
;
60 39 43 ;50 for 30fps
60 38 12 ;92 for 30fps
60 37 00
60 35 91 ;81 for 30fps
60 0e 20
60 1e 04
;
60 A8 80
60 12 40
60 04 00
60 0c 04
60 0d 80
60 18 c6
60 17 26
60 32 ad
60 03 00
60 1a 3d
60 19 01
60 3f a6
60 14 2e
60 15 02
60 41 02
60 42 08
;
60 1b 00
60 16 06
60 33 e2 ;c0 for internal regulator
60 34 bf
60 96 04
60 3a 00
60 8e 00
;
60 3c 77
60 8B 06
60 94 88
60 95 88
60 40 c1
60 29 3f ;2f for internal regulator
60 0f 42
;
60 3d 92
60 69 40
60 5C b9
60 5D 96
60 5E 10
60 59 c0
60 5A af
60 5B 55
60 43 f0
60 44 10
60 45 68
60 46 96
60 47 60
60 48 80
60 5F e0
60 60 8c ;0c for advanced AWB (related to lens)
60 61 20
60 a5 d9
60 a4 74
60 8d 02
60 13 e7
;
60 4f 3a
60 50 3d
60 51 03
60 52 12
60 53 26
60 54 38
60 55 40
60 56 40
60 57 40
60 58 0d
;
60 8C 23
60 3E 02
60 a9 b8
60 aa 92
60 ab 0a
;
60 8f df
60 90 00
60 91 00
60 9f 00
60 a0 00
60 3A 01
;
60 24 70
60 25 64
60 26 c3
;
60 2a 00 ;10 for 50Hz
60 2b 00 ;40 for 50Hz
;
;gamma
60 6c 40
60 6d 30
60 6e 4b
60 6f 60
60 70 70
60 71 70
60 72 70
60 73 70
60 74 60
60 75 60
60 76 50
60 77 48
60 78 3a
60 79 2e
60 7a 28
60 7b 22
60 7c 04
60 7d 07
60 7e 10
60 7f 28
60 80 36
60 81 44
60 82 52
60 83 60
60 84 6c
60 85 78
60 86 8c
60 87 9e
60 88 bb
60 89 d2
60 8a e6
;

==============
;09032004
;OV9650
;CIF YUV
;15fps when 24MHz input clock
;Device Address(Hex)/Register(Hex)/Value(Hex)
;
60 12 80
60 11 83
60 6b 0a
60 6a 30
60 3b 09
60 13 e0
60 01 80
60 02 80
60 00 00
60 10 00
60 13 e5
;
60 39 43
60 38 12
60 37 00
60 35 91
60 0e a0
60 1e 04
;
60 A8 80
60 12 20
60 04 00
60 0c 04
60 0d 80
60 18 7e
60 17 26
60 32 24
60 03 36
60 1a 24
60 19 00
60 14 2e
60 15 02
60 3f a6
60 41 02
60 42 08
;
60 1b 00
60 16 06
60 33 e2 ;c0 for internal regulator
60 34 bf
60 96 04
60 3a 00
60 8e 00
;
60 3c 77
60 8B 06
60 94 88
60 95 88
60 40 c1
60 29 3f ;2f for internal regulator
60 0f 42
;
60 3d 92
60 69 40
60 5C b9
60 5D 96
60 5E 10
60 59 c0
60 5A af
60 5B 55
60 43 f0
60 44 10
60 45 68
60 46 96
60 47 60
60 48 80
60 5F e0
60 60 8c ;0c for advanced AWB (related to lens)
60 61 20
60 a5 d9
60 a4 74
60 8d 02
60 13 e7
;
60 4f 3a
60 50 3d
60 51 03
60 52 12
60 53 26
60 54 38
60 55 40
60 56 40
60 57 40
60 58 0d
;
60 8C 23
60 3E 02
60 a9 b8
60 aa 92
60 ab 0a
;
60 8f df
60 90 00
60 91 00
60 9f 00
60 a0 00
60 3A 01
;
60 24 70
60 25 64
60 26 c3
;
60 2a 00 ;00 for 50Hz
60 2b 00 ;D2 for 50Hz
;
;gamma
60 6c 40
60 6d 30
60 6e 4b
60 6f 60
60 70 70
60 71 70
60 72 70
60 73 70
60 74 60
60 75 60
60 76 50
60 77 48
60 78 3a
60 79 2e
60 7a 28
60 7b 22
60 7c 04
60 7d 07
60 7e 10
60 7f 28
60 80 36
60 81 44
60 82 52
60 83 60
60 84 6c
60 85 78
60 86 8c
60 87 9e
60 88 bb
60 89 d2
60 8a e6
;

=================
;09032004
;OV9650
;SXGA YUV
;7.5fps when 24MHz input clock
;Device Address(Hex)/Register(Hex)/Value(Hex)
;
60 12 80
60 11 80
60 6b 0a
60 6a 41
60 3b 09
60 13 e0
60 01 80
60 02 80
60 00 00
60 10 00
60 13 e5
;
60 39 43 ;50 for 15fps
60 38 12 ;93 for 15fps
60 37 00
60 35 91 ;81 for 15fps
60 0e 20
60 1e 04
;
60 A8 80
60 12 00
60 04 00
60 0c 00
60 0d 00
60 18 bd
60 17 1d
60 32 ad
60 03 12
60 1a 81
60 19 01
60 14 2e
60 15 00
60 3f a6
60 41 02
60 42 08
;
60 1b 00
60 16 06
60 33 e2 ;c0 for internal regulator
60 34 bf
60 96 04
60 3a 00
60 8e 00
;
60 3c 77
60 8B 06
60 94 88
60 95 88
60 40 c1
60 29 3f ;2f for internal regulator
60 0f 42
;
60 3d 92
60 69 40
60 5C b9
60 5D 96
60 5E 10
60 59 c0
60 5A af
60 5B 55
60 43 f0
60 44 10
60 45 68
60 46 96
60 47 60
60 48 80
60 5F e0
60 60 8C ;0c for advanced AWB (Related to lens)
60 61 20
60 a5 d9
60 a4 74
60 8d 02
60 13 e7
;
60 4f 3a
60 50 3d
60 51 03
60 52 12
60 53 26
60 54 38
60 55 40
60 56 40
60 57 40
60 58 0d
;
60 8C 23
60 3E 02
60 a9 b8
60 aa 92
60 ab 0a
;
60 8f df
60 90 00
60 91 00
60 9f 00
60 a0 00
60 3A 01
;
60 24 70
60 25 64
60 26 c3
;
60 2a 00 ;10 for 50Hz
60 2b 00 ;34 for 50Hz
;
;gamma
60 6c 40
60 6d 30
60 6e 4b
60 6f 60
60 70 70
60 71 70
60 72 70
60 73 70
60 74 60
60 75 60
60 76 50
60 77 48
60 78 3a
60 79 2e
60 7a 28
60 7b 22
60 7c 04
60 7d 07
60 7e 10
60 7f 28
60 80 36
60 81 44
60 82 52
60 83 60
60 84 6c
60 85 78
60 86 8c
60 87 9e
60 88 bb
60 89 d2
60 8a e6
点赞  2010-3-3 13:31
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复