📄 ddc.c
字号:
//----------------------------------------------------------------------------------------------------
// ID Code : Ddc.c No.0000
// Update Note :
//
//----------------------------------------------------------------------------------------------------
#define __DDC__
#include "Header\Include.h"
#if(_DDC_TYPE != _DDC_NONE)
//----------------------------------------------------------------
void DDCInit()
{
#if(_DDC_TYPE == _DDC_RTD_CODE)
#if(_VGA_SUPPORT)
LoadCodeDDCToRTD(tEDID_TABLE_VGA,_DDC_ENABLE_FA); //Load VGA DDC
#endif
#if(_TMDS_SUPPORT)
LoadCodeDDCToRTD(tEDID_TABLE_DVI,_DDC_DVI_ENABLE_FD); //Load DVI DDC
#endif
#endif // #if(DDC_TYPE == DDC_RTD_CODE)
#if(_DDC_TYPE == _DCC_RTD_EEPROM)
#if(_VGA_SUPPORT)
LoadEEDDCToRTD(_EDID0_ADDRESS,_DDC_ENABLE_FA);
#endif
#if(_TMDS_SUPPORT)
LoadEEDDCToRTD(_EDID1_ADDRESS,_DDC_DVI_ENABLE_FD);
#endif
#endif // #if(DDC_TYPE == DCC_RTD_EEPROM)
#if(_DDC_TYPE == _DDC_MTV512_CODE)
InitMTV512CodeDDC();
LoadCodeDDCToMTV512(tEDID_TABLE_VGA,MCU_DDCRAM_0);
LoadCodeDDCToMTV512(tEDID_TABLE_DVI,MCU_DDCRAM_1);
#endif // #if(DDC_TYPE == DDC_MTV512)
}
//----------------------------------------------------------------
void DDCProc()
{
#if(_DDC_TYPE == _DCC_RTD_EEPROM)
RTDDDCProc();
#endif // #if(DDC_TYPE == DCC_RTD_EEPROM)
#if(_DDC_TYPE == _DDC_MTV512_CODE)
// Not Ready
#endif // #if(DDC_TYPE == DDC_MTV512)
}
//----------------------------------------------------------------
#if(_DDC_TYPE == _DDC_RTD_CODE)
void LoadCodeDDCToRTD(unsigned char code *tVGADDC,unsigned char ucRTDAddr)
{
unsigned char i;
CScalerSetByte(ucRTDAddr, 0x00); // Disable DVI DDC
CScalerSetByte(ucRTDAddr + 1, 0x00); // Set DDC Index
// Write 128 Byte DDC Infomation
CScalerSendAddr(ucRTDAddr + 2, _WRITE, _NON_AUTOINC);
for(i=0;i<128;i++)
{
CScalerSendByte(tVGADDC[i]);
}
CScalerSendWriteStop();
CScalerSetByte(ucRTDAddr, 0x05); // Enable DVI DDC
}
#endif
//--------------------------------------------------------
#if(_DDC_TYPE == _DDC_MTV512_CODE)
void InitMTV512CodeDDC()
{
MCU_IICCTR_F00 = 0xc0; // Enable IIC Interface and define ddc2 active at HSDA/HSCL
MCU_INTEN_F04 = 0x00; // Detect WslvA1 IIC Stop Condition
MCU_INTFLG_F03 = 0x00; // Clear IIC Interrupt register
MCU_CTRSLVB_F0A = 0x00; // Define IIC Protocal Slave Address Bit
MCU_DDCCTRA1_F06 = 0x10; // Enable DDC1 and DDCRAM 128 Access
MCU_SLVA1ADR_F07 = 0x80 | (0xa0 >> 1); // DDC Slave A1 address
MCU_DDCCTRA2_F86 = 0x10; // Enable DDC1 and DDCRAM 128 Access
MCU_SLVA2ADR_F87 = 0x80 | (0xa0 >> 1); // DDC Slave A2 address
MCU_PADMODE_F52 = MCU_PADMODE_F52_DEF | _BIT7 | _BIT5; // SET PIN "HSCL1/P3.0/RX" IS HSDA1
CScalerSetByte(_DDC_ENABLE_FA, 0x00); // Disable DDC
CScalerSetByte(_DDC_DVI_ENABLE_FD, 0x00); // Disable DDC
}
//--------------------------------------------------------
void LoadCodeDDCToMTV512(unsigned char code *tDDC,unsigned char xdata * ucMTV512Addr)
{
unsigned char i;
for(i=0;i<128;i++)
{
*ucMTV512Addr = tDDC[i];
ucMTV512Addr++;
}
}
#endif // #if(DDC_TYPE == _DDC_MTV512_CODE)
//--------------------------------------------------------
#endif // #if(DDC_TYPE != DDC_NONE)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -