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

📄 ad9884a.c

📁 此为ADI公司AD9884A型号芯片的控制及设备,多应用于TV.PVR等产品
💻 C
📖 第 1 页 / 共 3 页
字号:

	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 + -