📄 cameramagna.cpp
字号:
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 + -