📄 ad9884a.c
字号:
return (PhaseReg.phase);
} /* AD9884A_GetPhase */
/******************************************************************************/
/******************************************************************************/
/*
* Copyright (c) 1999-2000 Oplus Technologies INC. All Rights resreved.
*
* AD9884A_SetPLL- Set PLL parameters
*
*
* description:
* ------------
* Set the PLL parameters to correspond with the desired operating frequency
* (incoming pixel rate).
* Max(Clockrate) = 140Mhz
* Min(Clockrate) = ?
* Min(HFreq) = 30.0 Khz
* Max(HFreq) = 110.0 Khz
* if (HInterlaceMode == non-interlaced)
* PixelRate = ClockRate
* else
* PixelRate = 2 * ClockRate
* Set VCORNGE and Current parameters according to Pixelrate and table in
* data sheet.
* PLLDIV = ClockRate / HFreq.
*
*
* Protoype:
* ----------
* TA2D_Result AD9884A_SetPLL(TBYTE RefreshRate,
* unsigned long HFreq,
* TDataResolution Resolution)
* Where:
* HFreq - HSync frequency in Hz units
* RefreshRate - Input clock rate in Hz
* Resolution - Required resolution
* Returns:
* A2D_OK/A2D_ERROR
*
* history:
*
* who when what
* --- ---------- ----
* Avi 21/02/2000 creation
*
*/
TA2D_Result AD9884A_SetPLL(TBYTE RefreshRate, /* In Hz units */
TWORD HorTotalTime,
TDataResolution Resolution
)
{
TA2D_Result rc = A2D_OK;
//unsigned long PixelRate; /* in KHz */
TBYTE Current, VcoRange;
// TWORD iplldiv;
union {
TAD9884A_VcoCurrent bits;
TBYTE byte;
} RegVal;
TBYTE Phase;
/* Set VCORNGE and Current parameters according to Resolution & refreshrate */
/* and table VII in the data sheet. */
switch (Resolution)
{
case dir640x350:
if (RefreshRate <= 50)
{
VcoRange = 0;
Current = 5;
// PixelRate = 25175;
Phase = 13;
}
else if (RefreshRate <= 60)
{
VcoRange = 0;
Current = 5;
// PixelRate = 25175;
Phase = 13;
}
else if (RefreshRate <= 70)
{
VcoRange = 0;
Current = 5;
// PixelRate = 25175;
Phase = 13;
}
else if (RefreshRate <= 84)
{
VcoRange = 0;
Current = 5;
// PixelRate = 25175;
Phase = 13;
}
else if (RefreshRate <= 85)
{
VcoRange = 0;
Current = 5;
// PixelRate = 25175;
Phase = 13;
}
break;
case dir640x400:
if (RefreshRate <= 50)
{
VcoRange = 0;
Current = 5;
// PixelRate = 25175;
Phase = 13;
}
else if (RefreshRate <= 56)
{
VcoRange = 0;
Current = 5;
// PixelRate = 25175;
Phase = 13;
}
else if (RefreshRate <= 60)
{
VcoRange = 0;
Current = 5;
// PixelRate = 25175;
Phase = 13;
}
else if (RefreshRate <= 70)
{
VcoRange = 0;
Current = 5;
// PixelRate = 25175;
Phase = 13;
}
else if (RefreshRate <= 84)
{
VcoRange = 0;
Current = 5;
// PixelRate = 25175;
Phase = 13;
}
else if (RefreshRate <= 85)
{
VcoRange = 0;
Current = 5;
// PixelRate = 25175;
Phase = 13;
}
break;
case dir640x480:
if (RefreshRate <= 60)
{
VcoRange = 0;
Current = 0;
// PixelRate = 25175;
Phase = 12;
}
else if (RefreshRate <= 66)
{
VcoRange = 0;
Current = 0;
// PixelRate = 31500;
Phase = 8;
}
else if (RefreshRate <= 70)
{
VcoRange = 0;
Current = 0;
// PixelRate = 31500;
Phase = 8;
}
else if (RefreshRate <= 72)
{
VcoRange = 0;
Current = 0;
// PixelRate = 31500;
Phase = 8;
}
else if (RefreshRate <= 75)
{
VcoRange = 0;
Current = 0;
//PixelRate = 31500;
Phase = 8;
}
else if (RefreshRate <= 85)
{
VcoRange = 0;
Current = 1;
//PixelRate = 36000l;
Phase = 8;
}
else if (RefreshRate <= 90)
{
VcoRange = 0;
Current = 0;
// PixelRate = 31500;
Phase = 8;
}
else if (RefreshRate <= 100)
{
VcoRange = 0;
Current = 0;
// PixelRate = 31500;
Phase = 8;
}
else if (RefreshRate <= 120)
{
VcoRange = 0;
Current = 0;
// PixelRate = 31500;
Phase = 8;
}
break;
case dir800x600:
if (RefreshRate <= 56)
{
VcoRange = 0;
Current = 1;
//PixelRate = 36000l;
Phase = 18;
}
else if (RefreshRate <= 60)
{
VcoRange = 0;
Current = 1;
//PixelRate = 40000l;
Phase = 8;
}
else if (RefreshRate <= 72)
{
VcoRange = 0;
Current = 2;
//PixelRate = 50000l;
Phase = 8;
}
else if (RefreshRate <= 75)
{
VcoRange = 0;
Current = 1;
//PixelRate = 49500l;
Phase = 8;
}
else if (RefreshRate <= 85)
{
VcoRange = 1;
Current = 2;
//PixelRate = 56250l;
Phase = 0;
}
else if (RefreshRate <= 90)
{
VcoRange = 1;
Current = 2;
//PixelRate = 56250l;
Phase = 0;
}
else if (RefreshRate <= 100)
{
VcoRange = 1;
Current = 2;
//PixelRate = 56250l;
Phase = 0;
}
break;
case dir832x624:
if (RefreshRate <= 75)
{
VcoRange = 1;
Current = 6;
//PixelRate = 65000l;
Phase = 8;
}
break;
case dir1024x768:
if (RefreshRate <= 60)
{
VcoRange = 1;
Current = 2;
//PixelRate = 65000l;
Phase = 3;
}
else if (RefreshRate <= 70)
{
VcoRange = 1;
Current = 3;
//PixelRate = 75000l;
Phase = 25;
}
else if (RefreshRate <= 75)
{
VcoRange = 1;
Current = 3;
//PixelRate = 78750l;
Phase = 3;
}
else if (RefreshRate <= 80)
{
VcoRange = 2;
Current = 3;
//PixelRate = 85500l;
Phase = 3;
}
else if (RefreshRate <= 85)
{
VcoRange = 2;
Current = 3;
//PixelRate = 94500l;
Phase = 18;
}
break;
case dir1152x864:
if (RefreshRate <= 60)
{
VcoRange = 2;
Current = 6;
//PixelRate = 108000l;
Phase = 10;
}
else if (RefreshRate <= 70)
{
VcoRange = 2;
Current = 6;
//PixelRate = 135000l;
Phase = 10;
}
else if (RefreshRate <= 75)
{
VcoRange = 2;
Current = 6;
//PixelRate = 135000l;
Phase = 10;
}
else if (RefreshRate <= 85)
{
VcoRange = 2;
Current = 6;
//PixelRate = 135000l;
Phase = 10;
}
break;
case dir1280x720:
if (RefreshRate <= 61)
{
VcoRange = 2;
Current = 6;
//PixelRate = 108000l;
Phase = 10;
}
else if (RefreshRate <= 73)
{
VcoRange = 2;
Current = 6;
//PixelRate = 135000l;
Phase = 10;
}
break;
case dir1280x960:
if (RefreshRate <= 60)
{
VcoRange = 2;
Current = 6;
//PixelRate = 108000l;
Phase = 10;
}
else if (RefreshRate <= 75)
{
VcoRange = 2;
Current = 6;
//PixelRate = 135000l;
Phase = 10;
}
else if (RefreshRate <= 85)
{
VcoRange = 2;
Current = 6;
//PixelRate = 135000l;
Phase = 10;
}
break;
case dir1280x1024:
if (RefreshRate <= 60)
{
VcoRange = 2;
Current = 3;
//PixelRate = 108000l;
Phase = 10;
}
else if (RefreshRate <= 75)
{
VcoRange = 3;
Current = 4;
//PixelRate = 135000l;
Phase = 10;
}
else if (RefreshRate <= 85)
{
VcoRange = 1;
Current = 4;
//PixelRate = 157500l;
Phase = 10;
}
break;
case dir1600x1200:
HorTotalTime = HorTotalTime/2;
if (RefreshRate <= 60)
{
VcoRange = 1;
Current = 4;
//PixelRate = 162000l;
Phase = 8;
}
else if (RefreshRate <= 65)
{
VcoRange = 2;
Current = 4;
//PixelRate = 175500l;
Phase = 8;
}
else if (RefreshRate <= 70)
{
VcoRange = 2;
Current = 5;
//PixelRate = 189000l;
Phase = 8;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -