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

📄 scaler.c

📁 车载 液晶显示器的主控程序(主要使用芯片为 MYSON MTV512 单片机、RealTek 2323 Scare 芯片、TVP5147(视频解码)。配Sharp 8寸液晶显示器 )。
💻 C
📖 第 1 页 / 共 2 页
字号:
//----------------------------------------------------------------------------------------------------
// ID Code      : Scaler.c No.0002
// Update Note  : 
//
//----------------------------------------------------------------------------------------------------

#define __SCALER__

#include "..\Header\Include.h"

/*
//--------------------------------------------------
// Description  : Initial settings for scaler
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CScalerInitial(void)	
{
    // Software reset for scaler
    CScalerSetBit(_HOST_CTRL_01, ~_BIT0, _BIT0);
    CTimerDelayXms(20);
    CScalerSetBit(_HOST_CTRL_01, ~_BIT0, 0x00);

    CScalerReset();

    if(!GET_POWERSTATUS())
    {
        CPowerDPLLOff();
        CScalerSetByte(_HOST_CTRL_01, 0x02);
        CScalerDisableDisplayOutput();
    }
}
*/

// version 200D
//--------------------------------------------------
// Description  : Initial settings for scaler
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CScalerInitial(void)
{
    // Software reset for scaler
    CScalerSetBit(_HOST_CTRL_01, ~_BIT0, _BIT0);
    CTimerDelayXms(20);
    CScalerSetBit(_HOST_CTRL_01, ~_BIT0, 0x00);

    CScalerReset();
}


//#if((_SCALER_TYPE == _RTD2023L) || (_SCALER_TYPE == _RTD2023S))
//versoion 200D
#if((_SCALER_TYPE == _RTD2023L) || (_SCALER_TYPE == _RTD2023S) || (_SCALER_TYPE == _RTD2023L_SHRINK))
/*
//--------------------------------------------------
// Description  : Initial settings for RTD2023L/S scaler
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CScalerInitialForRTD2023(void)
{
    BYTE temp = 0;

    do
    {
        CScalerSetByte(0xcf, 0xf0);
        CTimerDelayXms(3);
        CScalerRead(_ID_REG_00, 1, &temp, _NON_AUTOINC);
    }
    while(temp != 0x11);
}
*/
//version 200D
//--------------------------------------------------
// Description  : Initial settings for RTD2023L/S scaler
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CScalerInitialForRTD2023(void)
{
    BYTE temp = 0;

    do
    {
        CScalerSetByte(0xcf, 0xf0);
        CTimerDelayXms(3);
        CScalerRead(_ID_REG_00, 1, &temp, _NON_AUTOINC);
    }

#if(_SCALER_TYPE == _RTD2023L_SHRINK)
    while(temp != 0x19);
#else
    while(temp != 0x11);
#endif

}

#endif

#if(_SCALER_TYPE == _RTD2023S)
//--------------------------------------------------
// Description  : Initial settings for RTD2023L/S scaler
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CScalerResetInForRTD2023(void)
{
    bSCALERRESET    = _LOW;
    CTimerDelayXms(10);
    bSCALERRESET    = _HIGH;
    CTimerDelayXms(10);

    bSCALERRESET    = _LOW;
    CTimerDelayXms(5);
}
#endif

//--------------------------------------------------
// Description  : Reset scaler process
// Input Value  : None
// Output Value : None
//--------------------------------------------------
/*
void CScalerReset(void)
{
    // Wake scaler up
    CScalerSetByte(_HOST_CTRL_01, 0x00);

    CScalerCodeW(tSCALER_POWERUP_INITIAL);

    CMiscSetPinShare();

    CAdjustDisableWatchDog(_WD_ALL);

    CMiscClearStatusRegister();

    CScalerInitialDisplayInterface();

    CScalerInitialDisplayOutput();

    CModeSetFreeRun();
	//CAdjustBackgroundColor(_BGND_COLOR_R, _BGND_COLOR_G, _BGND_COLOR_B);	//x.hu

    CScalerEnableDisplayOutput();

    // OSD power up initial
    CScalerCodeW(tOSD_POWERUP_INITIAL);

    CAdjustTMDSErrorCorrectionOn();
    CAdjustColorPalette(tPALETTE_0);
    CAdjustSRGB();
    CAdjustGamma(_COMPACT_GAMMA_NORMAL_TABLE, tGAMMA_COMPACT1, tGAMMA_COMPACT1, tGAMMA_COMPACT1);

    if((Panel.PanelConfig & _BIT7) == _DISP_18_BIT)
        CAdjustDither(tDITHER_SEQ_TABLE_0, tDITHER_TABLE_10_TO_6);
    else if((Panel.PanelConfig & _BIT7) == _DISP_24_BIT)
        CAdjustDither(tDITHER_SEQ_TABLE_0, tDITHER_TABLE_10_TO_8);

    CScalerSetBit(_IPH_ACT_WID_H_0B, ~(_BIT6 | _BIT5 | _BIT4), ((_ADC_INPUT_SWAP_RG << 6) | (_ADC_INPUT_SWAP_RB << 5)| (_ADC_INPUT_SWAP_GB << 4)));

    CAdjustBrightness();
    CAdjustContrast();
    //CAdjustHDCP();

}
*/

//version 200D
void CScalerReset(void)
{
    // Wake scaler up
    CScalerSetByte(_HOST_CTRL_01, 0x00);

    CScalerCodeW(tSCALER_POWERUP_INITIAL);
 
    CMiscSetPinShare();

    CAdjustDisableWatchDog(_WD_ALL);

    CMiscClearStatusRegister();

    CScalerInitialDisplayInterface();

    CScalerInitialDisplayOutput();

    CModeSetFreeRun();

    if(GET_POWERSTATUS())
    {
        CScalerEnableDisplayOutput();

        // OSD power up initial
        CScalerCodeW(tOSD_POWERUP_INITIAL);

        CAdjustTMDSErrorCorrectionOn();
        CAdjustColorPalette(tPALETTE_0);
        CAdjustSRGB();
        CAdjustGamma(_COMPACT_GAMMA_NORMAL_TABLE, tGAMMA_COMPACT1, tGAMMA_COMPACT1, tGAMMA_COMPACT1);

        if((Panel.PanelConfig & _BIT7) == _DISP_18_BIT)
            CAdjustDither(tDITHER_SEQ_TABLE_0, tDITHER_TABLE_10_TO_6);
        else if((Panel.PanelConfig & _BIT7) == _DISP_24_BIT)
            CAdjustDither(tDITHER_SEQ_TABLE_0, tDITHER_TABLE_10_TO_8);

        CScalerSetBit(_IPH_ACT_WID_H_0B, ~(_BIT6 | _BIT5 | _BIT4), ((_ADC_INPUT_SWAP_RG << 6) | (_ADC_INPUT_SWAP_RB << 5)| (_ADC_INPUT_SWAP_GB << 4)));

        CAdjustBrightness();
        CAdjustContrast();
        //CAdjustHDCP();
    }
    else
    {
        CPowerDPLLOff();
        CScalerSetByte(_HOST_CTRL_01, 0x02);
        CScalerDisableDisplayOutput();
    }
}

//--------------------------------------------------
// Description  : Initial display interface for TTL, LVDS and RSDS
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CScalerInitialDisplayInterface(void)
{
    switch(Panel.PanelStyle)
    {
	case _PANEL_TCON:
		CScalerCodeW(tLVDS_INITIAL);	// add by cooriee 050521 for TCON
            CScalerCodeW(tTCON_INITIAL);
            break;
	
        case _PANEL_TTL:
		CScalerCodeW(tLVDS_INITIAL);	// add by cooriee 050521 for TTL
            CScalerCodeW(tTTL_INITIAL);
            break;

        case _PANEL_LVDS:
            CScalerCodeW(tLVDS_INITIAL);
            break;

        case _PANEL_RSDS:
            CScalerCodeW(tLVDS_INITIAL);
            CScalerCodeW(tRSDS_INITIAL);
            CScalerSetByte(_TCON_ADDR_PORT_8B, 0x02);
            CScalerSetByte(_TCON_DATA_PORT_8C, Panel.PanelConfig & (_BIT2 | _BIT1 | _BIT0));
            break;
    }
}

//--------------------------------------------------
// Description  : Initial display output from Panel.h settings
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CScalerInitialDisplayOutput(void)
{
    // Display signal control settings
    CScalerSetBit(_VDISP_CTRL_28, ~(_BIT4 | _BIT2), ((Panel.PanelConfig & _BIT7) >> 3) | ((Panel.PanelConfig & _BIT3) >> 1));
    CScalerSetByte(_VDISP_SIGINV_29, _DISPLAY_CTRL | (Panel.PanelConfig & (_BIT6 | _BIT5 | _BIT4)));

	// EVAN 050514 SET DCLK DELAY
#if(_PCB_TYPE == _PCB_PTX23A21)
#if(_PANEL_TYPE == _CPT_CLAA150XG08)
	CScalerSetByte(_DISP_TIMING_46, 0x11);			//0x31// maybe change next
#endif
#endif
}

//--------------------------------------------------
// Description  : Enable display output
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CScalerEnableDisplayOutput(void)
{
    CScalerSetBit(_VDISP_CTRL_28, ~(_BIT6 | _BIT1), _BIT1);
    CScalerSetBit(_VDISP_CTRL_28, ~_BIT0, _BIT0);

    CScalerSetBit(_VDISP_CTRL_28, ~_BIT7, _BIT7);
    CScalerSetBit(_VDISP_CTRL_28, ~_BIT7, 0x00);
}

//--------------------------------------------------
// Description  : Disable display output
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CScalerDisableDisplayOutput(void)
{
    if(Panel.PanelStyle == _PANEL_TTL)
    {
        CScalerSetBit(_VDISP_SIGINV_29, ~(_BIT2 | _BIT1 | _BIT0), 0x00);
    }

    CScalerSetBit(_VDISP_CTRL_28, ~(_BIT6 | _BIT1), _BIT6);
    CScalerSetBit(_VDISP_CTRL_28, ~_BIT0, 0x00);
}

//----------------------------------------------------------------------------------------------------
// Scaler communication basic function
//----------------------------------------------------------------------------------------------------
void CScalerSendReadStop(void)
{
#if(_HOST_INTERFACE == _PARALLEL_PORT)

    SETSCALERSCSB();
    SETSCALERSCLK();

#elif(_HOST_INTERFACE == _SERIAL_PORT)

    SETSCALERSCLK();
    SETSCALERSCSB();

#endif
}

void CScalerSendWriteStop(void)
{
#if(_HOST_INTERFACE == _PARALLEL_PORT)

    SETSCALERSCLK();
    SETSCALERSCSB();

#elif(_HOST_INTERFACE == _SERIAL_PORT)

    CLRSCALERSCLK();
    SETSCALERSCLK();

    SETSCALERSCLK();
    SETSCALERSCSB();

#endif
}

void CScalerSendAddr(BYTE ucAddr, bit bReadWrite, bit bAutoInc)
{
#if(_HOST_INTERFACE == _PARALLEL_PORT)

    CLRSCALERSCSB();

    SETSCALERSDIO0((bit)(ucAddr & 0x01));
    SETSCALERSDIO1((bit)(ucAddr & 0x02));
    SETSCALERSDIO2((bit)(ucAddr & 0x04));
    SETSCALERSDIO3((bit)(ucAddr & 0x08));
    CLRSCALERSCLK();

    SETSCALERSDIO0((bit)(ucAddr & 0x10));
    SETSCALERSDIO1((bit)(ucAddr & 0x20));
    SETSCALERSDIO2((bit)(ucAddr & 0x40));
    SETSCALERSDIO3((bit)(ucAddr & 0x80));
    SETSCALERSCLK();
    
    SETSCALERSDIO0(bReadWrite);
    SETSCALERSDIO1(bAutoInc);
    CLRSCALERSCLK();

    SETSCALERSDIO0(_HIGH);
    SETSCALERSDIO1(_HIGH);
    SETSCALERSDIO2(_HIGH);
    SETSCALERSDIO3(_HIGH);

#elif(_HOST_INTERFACE == _SERIAL_PORT)

    CLRSCALERSCSB();

    CScalerSendByte(ucAddr);

    SETSCALERSDIO3(bReadWrite);
    CLRSCALERSCLK();
    SETSCALERSDIO3(bAutoInc);
    SETSCALERSCLK();

    SETSCALERSDIO3(_HIGH);

#endif
}

void CScalerSendByte(BYTE ucValue)
{
#if(_HOST_INTERFACE == _PARALLEL_PORT)

⌨️ 快捷键说明

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