⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cameramagna.cpp

📁 Freescale ARM11系列CPU MX31的WINCE 5.0下的BSP
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    I2CWriteOneByte(hI2C, bySlaveAddr, 0x47, 0x10, &iResult);  
    I2CWriteOneByte(hI2C, bySlaveAddr, 0x48, 0x1f, &iResult);  
    I2CWriteOneByte(hI2C, bySlaveAddr, 0x49, 0xe3, &iResult);  
    I2CWriteOneByte(hI2C, bySlaveAddr, 0x4a, 0xf0, &iResult);  
    I2CWriteOneByte(hI2C, bySlaveAddr, 0x4b, 0x08, &iResult);  
    I2CWriteOneByte(hI2C, bySlaveAddr, 0x4c, 0x14, &iResult);  
    I2CWriteOneByte(hI2C, bySlaveAddr, 0x4d, 0xe9, &iResult);  
    I2CWriteOneByte(hI2C, bySlaveAddr, 0x4e, 0xf5, &iResult);  
    
    I2CWriteOneByte(hI2C, bySlaveAddr, 0x98, 0x8a, &iResult);  
    
    // End of setting
    I2CWriteOneByte(hI2C, bySlaveAddr, 0xfa, 0x00, &iResult);  

}


//------------------------------------------------------------------------------
//
// Function: CameraMagnaDeinit
//
// Deinitializes the Magna camera sensor.
//
// Parameters:
//      None.
//
// Returns:
//      None.
//
//------------------------------------------------------------------------------
void CameraMagnaDeinit(void)
{
    CAMERA_FUNCTION_ENTRY();

    CloseHandle(hI2C);

    CAMERA_FUNCTION_EXIT();
}

//------------------------------------------------------------------------------
//
// Function: CameraMagnaSetOutputFormat
//
// Set interface to configure camera output format.
//
// Parameters:
//      outputFormat
//          [in] structure indicating the sensor output format:
//              csiSensorOutputFormat_CCIR656 - CCIR656
//              csiSensorOutputFormat_RGB565 - RGB565
//
// Returns:
//      None.
//
//------------------------------------------------------------------------------
void CameraMagnaSetOutputFormat(cameraOutputFormat outputFormat)
{
    INT iResult;
    BYTE bySlaveAddr;

    CAMERA_FUNCTION_ENTRY();

    switch (gSensorInUse)
    {
     case csiSensorId_Magna521DA:
           bySlaveAddr = MAGNA521DA_I2C_ADDRESS;
           break;               

     default:
           DEBUGMSG(ZONE_ERROR, (TEXT("%s: We don't support this kind of sensor!\r\n"), __WFUNCTION__));
           return;
    }        
      
    switch (outputFormat)
    {
        case cameraOutputFormat_CCIR656:
                 // Setting ISP            
                 I2CWriteOneByte(hI2C, bySlaveAddr, 0xff, 0x02, &iResult); 

                 I2CWriteOneByte(hI2C, bySlaveAddr, 0x88, 0x00, &iResult); 
                 I2CWriteOneByte(hI2C, bySlaveAddr, 0x87, 0x05, &iResult); 
            
                 break;

        case cameraOutputFormat_RGB565:        
                 // Setting ISP            
                 I2CWriteOneByte(hI2C, bySlaveAddr, 0xff, 0x02, &iResult); 

                 I2CWriteOneByte(hI2C, bySlaveAddr, 0x88, 0x41, &iResult); 
                 I2CWriteOneByte(hI2C, bySlaveAddr, 0x87, 0x05, &iResult); 

                break;
    }

    CAMERA_FUNCTION_EXIT();
}



//------------------------------------------------------------------------------
//
// Function: CameraMagnaSetOutputResolution
//
// Set interface to configure camera output resolution.
//
// Parameters:
//      outputResolution
//          [in]  Structure indicating the camera output resolution:
//              csiSensorOutputResolution outputResolution :
//              csiSensorOutputResolution_VGA - VGA 640x480
//              csiSensorOutputResolution_XGA - XGA 1280x960
//              csiSensorOutputResolution_SXGA - SXGA 1280x1024
//
// Returns:
//      None.
//
//------------------------------------------------------------------------------
void CameraMagnaSetOutputResolution(csiSensorOutputResolution outputResolution)
{
    INT iResult;
    BYTE bySlaveAddr;

    CAMERA_FUNCTION_ENTRY();

    switch (gSensorInUse)
    {
     case csiSensorId_Magna521DA:
           bySlaveAddr = MAGNA521DA_I2C_ADDRESS;
           break;               

     default:
           DEBUGMSG(ZONE_ERROR, (TEXT("%s: We don't support this kind of sensor!\r\n"), __WFUNCTION__));
           return;
    }        

    switch (outputResolution)
    {
        case csiSensorOutputResolution_SXGA:
             // Sensor configure.            
             I2CWriteOneByte(hI2C, bySlaveAddr, 0xff, 0x01, &iResult);  

             I2CWriteOneByte(hI2C, bySlaveAddr, 0x51, 0x00, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x52, 0x00, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0xda, 0x01, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x00, 0x84, &iResult);  //update the setting

             // ISP configure.            
             I2CWriteOneByte(hI2C, bySlaveAddr, 0xff, 0x02, &iResult);  

             I2CWriteOneByte(hI2C, bySlaveAddr, 0x7a, 0x71, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x7b, 0x01, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x7c, 0x00, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x7d, 0x00, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x7e, 0xa0, &iResult);  
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x7f, 0xa0, &iResult);  
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x80, 0x80, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x81, 0x80, &iResult); 
             
             break;

        case csiSensorOutputResolution_XGA:
             // Sensor configure.            
             I2CWriteOneByte(hI2C, bySlaveAddr, 0xff, 0x01, &iResult);  
             
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x51, 0x00, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x52, 0x00, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0xda, 0x03, &iResult); //it should be 0x03
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x00, 0x84, &iResult);  //update the setting

             // ISP configure.            
             I2CWriteOneByte(hI2C, bySlaveAddr, 0xff, 0x02, &iResult);  
             
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x03, 0x00, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x7a, 0x72, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x7b, 0x01, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x7c, 0x00, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x7d, 0x00, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x7e, 0xa0, &iResult);  
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x7f, 0xa0, &iResult);  
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x80, 0x78, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x81, 0x78, &iResult); 

             break;

        case csiSensorOutputResolution_VGA:
             // Sensor configure.            
             I2CWriteOneByte(hI2C, bySlaveAddr, 0xff, 0x01, &iResult);  
             
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x51, 0x00, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x52, 0x30, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0xda, 0x02, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x00, 0x8c, &iResult);  //update the setting

             // ISP configure.            
             I2CWriteOneByte(hI2C, bySlaveAddr, 0xff, 0x02, &iResult);  
             
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x7a, 0x74, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x7b, 0x01, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x7c, 0x00, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x7d, 0x00, &iResult); 
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x7e, 0x50, &iResult);  // 640/8
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x7f, 0x50, &iResult);  
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x80, 0x3c, &iResult);  // 480/8
             I2CWriteOneByte(hI2C, bySlaveAddr, 0x81, 0x3c, &iResult);  

             break;

        default:  
             DEBUGMSG(ZONE_ERROR, (TEXT("%s: We don't support this kind of resolution for the sensor!\r\n"), __WFUNCTION__));

             return;
         
    }

    CAMERA_FUNCTION_EXIT();
}


//----------------------------------------------------------------------------
//
// Function: CameraMagnaSetDigitalZoom
//
// Sets the camera digital zoom level .
//
// Parameters:
//      zoom
//          [in] Camera zoom value that will be set
//
// Returns:
//      None.
//
//------------------------------------------------------------------------------
void CameraMagnaSetDigitalZoom(csiSensorOutputResolution outputResolution,DWORD ZoomLevel)
{    
    CAMERA_FUNCTION_ENTRY();
 
       //Currently, We set Magna521DA Output as XGA 1280*960; for this resolution, magna don't support digital zoom.
       //Magna521DA digital zoom only support the ouput resolution less than SVGA.
    CAMERA_FUNCTION_EXIT();
}

//------------------------------------------------------------------------------
//
// Function: CameraMagnaSetDigitalLuminance
//
// Sets the camera digital Luminance.
//
// Parameters:
//
// Returns:
//      None.
//
//------------------------------------------------------------------------------
void CameraMagnaSetDigitalLuminance(CameraMagnaOutputLum Lum)
{
    BYTE bySlaveAddr;

    CAMERA_FUNCTION_ENTRY();

    switch (gSensorInUse)
    {
     case csiSensorId_Magna521DA:
           bySlaveAddr = MAGNA521DA_I2C_ADDRESS;
           break;               

     default:
           DEBUGMSG(ZONE_ERROR, (TEXT("%s: We don't support this kind of sensor!\r\n"), __WFUNCTION__));
           return;
    }        

    CAMERA_FUNCTION_EXIT();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -