📄 vp.c
字号:
.................................... */
YUV_SetBrightness(tsEYD.bBrightness);
YUV_SetContrast(tsEYD.bContrast);
YUV_SetSaturation(tsEYD.bSaturation);
YUV_SetHue(tsEYD.bHue);
YUV_SetSharpness(tsEYD.bSharpness);
/* ....................................
Video Processor
.................................... */
VP_SetBlackLevel(tsEGD.bBlackLevel);
VP_SetBrightness(tsEGD.bBrightness);
VP_SetContrast(tsEGD.bContrast);
// To adjust VP
VP_SetImageFilter(tsEGD.bImage_Filter);
// To restore VP TCON mode !
VP_SetTCON_Mode(tsEGD.bTCON_Mode);
} // VP_SetColorStandard
#endif
#if (VP_SET_BRIGHTNESS)
/* -------------------------------------------------------------------
Name: VP_SetBrightness -
Purpose: This function sets the VP Brightness.
Passed: 0x00..0xFF
Returns: None.
Notes: [1]63
------------------------------------------------------------------- */
void VP_SetBrightness (UB8 bBrightness)
{
BITEK_TxByte(VP_MAD, VP_07C_BRIGHTNESS_R, bBrightness);
BITEK_TxByte(VP_MAD, VP_07D_BRIGHTNESS_G, bBrightness);
BITEK_TxByte(VP_MAD, VP_07E_BRIGHTNESS_B, bBrightness);
} // VP_SetBrightness
#endif
#if (VP_SET_CONTRAST)
/* -------------------------------------------------------------------
Name: VP_SetContrast -
Purpose: This function sets the VP Contrast.
Passed: 0x00..0xFF
Returns: None.
Notes: [1]63
------------------------------------------------------------------- */
void VP_SetContrast (UB8 bContrast)
{
BITEK_TxByte(VP_MAD, VP_07F_CONTRAST_R, bContrast);
BITEK_TxByte(VP_MAD, VP_080_CONTRAST_G, bContrast);
BITEK_TxByte(VP_MAD, VP_081_CONTRAST_B, bContrast);
} // VP_SetContrast
#endif
#if (VP_SET_IMAGE_FILTER)
/* -------------------------------------------------------------------
Name: VP_SetImageFilter -
Purpose: To set Image Filter.
Passed:
0..8 (High smoothness..Low smoothness, Bypass, Low sharpness,..High sharpness)
0..3 = Smoothness
4 = Bypass
5..8 = Sharpness
Returns:
Notes: [1]67
------------------------------------------------------------------- */
void VP_SetImageFilter (UB8 bImageFilter)
{
UB8 bData;
if (bImageFilter == IMAGE_FILTER_NORMAL)
{
// Bypass
// 0xxx xxxx
bData = BITEK_RxByte(VP_MAD, VP_08B_IMAGE_ATTR) & ~VP_MASK_FILTER_EN;
}
else
{
bData = BITEK_RxByte(VP_MAD, VP_08B_IMAGE_ATTR) & ~VP_MASK_FILTER_TYPE;
bData |= VP_MASK_FILTER_EN;
if (bImageFilter < IMAGE_FILTER_NORMAL)
{
// Smothness
// 1000 xxxx
// 1011 xxxx
bData = bData | ((3 - bImageFilter) << 4);
}
else if (bImageFilter > IMAGE_FILTER_NORMAL)
{
// Sharpness
// 1100 xxxx
// 1111 xxxx
bData = bData | ((bImageFilter - 1) << 4);
}
}
BITEK_TxByte(VP_MAD, VP_08B_IMAGE_ATTR, bData);
} /* VP_SetImageFilter */
#endif
#if (VP_SET_PWM_DUTY)
/* -------------------------------------------------------------------
Name: VP_SetPWM_DUTY -
Purpose: This function sets the VP PWM Duty.
Passed:
Returns: None.
Notes: [1]74
------------------------------------------------------------------- */
void VP_SetPWM_DUTY (
UB8 bPWM, // 1..4
UW16 wDUTY // 0..511
)
{
switch (bPWM)
{
case 1:
BITEK_TxWord(VP_MAD, VP_0E20E3_PWM1_DUTY, wDUTY);
break;
case 2:
BITEK_TxWord(VP_MAD, VP_0E80E9_PWM2_DUTY, wDUTY);
break;
case 3:
BITEK_TxByte(VP_MAD, VP_0EC_PWM3_DUTY, wDUTY);
break;
case 4:
BITEK_TxByte(VP_MAD, VP_0EE_PWM4_DUTY, wDUTY);
break;
} // switch
} // VP_SetPWM_DUTY
#endif
#if (VP_SET_PWM_FREQ)
/* -------------------------------------------------------------------
Name: VP_SetPWM_FREQ -
Purpose: This function sets the VP PWM Frequency.
Passed:
Returns: None.
Notes: [1]74
------------------------------------------------------------------- */
void VP_SetPWM_FREQ (
UB8 bPWM, // 1..4
UW16 wFREQ // 0..511
)
{
UB8 bData;
switch (bPWM)
{
case 1:
BITEK_TxByte(VP_MAD, VP_0E00E1_PWM1_FREQ, wFREQ);
bData = BITEK_RxByte(VP_MAD, VP_0E1_PWM1_ATTR) & ~VP_MASK_PWM1_FREQ_MSB;
wFREQ >>= 4; // 8 -> 4
wFREQ &= VP_MASK_PWM1_FREQ_MSB;
BITEK_TxByte(VP_MAD, VP_0E1_PWM1_ATTR, bData | wFREQ);
break;
case 2:
BITEK_TxByte(VP_MAD, VP_0E50E7_PWM2_FREQ, wFREQ);
bData = BITEK_RxByte(VP_MAD, VP_0E7_PWM2_ATTR) & ~VP_MASK_PWM2_FREQ_MSB;
wFREQ >>= 4; // 8 -> 4
wFREQ &= VP_MASK_PWM2_FREQ_MSB;
BITEK_TxByte(VP_MAD, VP_0E7_PWM2_ATTR, bData | wFREQ);
break;
case 3:
BITEK_TxByte(VP_MAD, VP_0EB_PWM3_FREQ, wFREQ);
break;
case 4:
BITEK_TxByte(VP_MAD, VP_0ED_PWM4_FREQ, wFREQ);
break;
} // switch
} // VP_SetPWM_FREQ
#endif
#if (VP_SET_PWM_REF)
/* -------------------------------------------------------------------
Name: VP_SetPWM_REF -
Purpose: This function sets the VP PWM REF.
Passed:
Returns: None.
Notes: [1]86
------------------------------------------------------------------- */
void VP_SetPWM_REF (
UB8 bPWM, // 1..2
UW16 wREF // 0..1023
)
{
UB8 bData;
switch (bPWM)
{
case 1:
// LSB
BITEK_TxByte(VP_MAD, VP_0DF0E1_PWM1_REF, wREF);
bData = BITEK_RxByte(VP_MAD, VP_0E1_PWM1_ATTR) & ~VP_MASK_PWM1_REF_MSB;
wREF >>= 8; // 8 -> 0
wREF &= VP_MASK_PWM1_REF_MSB;
BITEK_TxByte(VP_MAD, VP_0E1_PWM1_ATTR, bData | wREF);
break;
case 2:
BITEK_TxByte(VP_MAD, VP_0E40E7_PWM2_REF, wREF);
bData = BITEK_RxByte(VP_MAD, VP_0E7_PWM2_ATTR) & ~VP_MASK_PWM2_REF_MSB;
wREF >>= 8; // 8 -> 0
wREF &= VP_MASK_PWM2_REF_MSB;
BITEK_TxByte(VP_MAD, VP_0E7_PWM2_ATTR, bData | wREF);
break;
} // switch
} // VP_SetPWM_REF
#endif
#if (VP_SET_TCON_MODE)
/* -------------------------------------------------------------------
Name: VP_SetTCON_Mode -
Purpose: To set the video processor TCON Mode.
Passed:
UB8 bTCON_Mode TCON_MODE_RU or
TCON_MODE_LU or
TCON_MODE_LD or
TCON_MODE_RD
Returns: None.
Notes:
------------------------------------------------------------------- */
void VP_SetTCON_Mode (UB8 bTCON_Mode)
{
UB8 b24;
b24 = BITEK_RxByte(VP_MAD, VP_024_OUTPUT_DATAPATH) & VP_MASK_ACTIVE_TOTAL;
switch (bTCON_Mode)
{
case TCON_MODE_RU:
BITEK_TxByte(VP_MAD, VP_024_OUTPUT_DATAPATH, b24 | 0x0F);
BITEK_TxByte(VP_MAD, VP_07B_RGBOUT_DLYO, 0x05);
SPI_TxByte(0x05, 0x13);
break;
case TCON_MODE_LU:
BITEK_TxByte(VP_MAD, VP_024_OUTPUT_DATAPATH, b24 | 0x8B);
BITEK_TxByte(VP_MAD, VP_07B_RGBOUT_DLYO, 0x15);
SPI_TxByte(0x05, 0x12);
break;
case TCON_MODE_LD:
BITEK_TxByte(VP_MAD, VP_024_OUTPUT_DATAPATH, b24 | 0x53);
BITEK_TxByte(VP_MAD, VP_07B_RGBOUT_DLYO, 0x15);
SPI_TxByte(0x05, 0x10);
break;
case TCON_MODE_RD:
BITEK_TxByte(VP_MAD, VP_024_OUTPUT_DATAPATH, b24 | 0xC3);
BITEK_TxByte(VP_MAD, VP_07B_RGBOUT_DLYO, 0x15);
SPI_TxByte(0x05, 0x11);
break;
} // switch
} // VP_SetTCON_Mode
#endif
#if (VP_SET_TESTPATTERN)
/* -------------------------------------------------------------------
Name: VP_SetTestPattern -
Purpose: VP Background and Test Pattern.
Passed:
Returns: None
Notes: [1]40
------------------------------------------------------------------- */
void VP_SetTestPattern (
UB8 bColorR,
UB8 bColorG,
UB8 bColorB,
UB8 bPatternType, // Pattern Type
UB8 bMode // Freerun/Background
)
{
UB8 b40;
b40 = BITEK_RxByte(VP_MAD, VP_040_TESTPAT_ATTR) & (VP_MASK_PATTERN_HV | VP_MASK_PATTERN_DIR);
BITEK_TxByte(VP_MAD, VP_03C_TESTPAT_R, bColorR);
BITEK_TxByte(VP_MAD, VP_03D_TESTPAT_G, bColorG);
BITEK_TxByte(VP_MAD, VP_03E_TESTPAT_B, bColorB);
BITEK_TxByte(VP_MAD, VP_040_TESTPAT_ATTR, b40 | bMode | bPatternType);
} /* VP_SetTestPattern */
#endif
/* **********************************************************************
Description:
********************************************************************** */
/* %% End Of File %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -