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

📄 main.c

📁 汤姆逊公司的高频头872x系列的驱动 C语言编写
💻 C
📖 第 1 页 / 共 5 页
字号:
#define  F0297_EXTADCLK_EN                   128
#define  F0297_ITLOCKSEL                     129
#define  F0297_ITPWMSEL                      130
#define  F0297_LOCKSCE                       131
#define  F0297_TWB_ACT                       132
#define  F0297_SOURCESEL					 133
#define  F0297_PRGCLKDIV					 134
#define  F0297_AUXCLKSEL                     135
#define  F0297_ITLOCK_OD                     136
#define  F0297_ITPWM_OD                      137
#define  F0297_AGC12SEL						 138
#define  F0297_AGC12B_EN				     139
#define  F0297_SIGMA_INV_1					 140
#define  F0297_SIGMA_INV_2					 141
#define  F0297_AUTOQAMMODE_SEL				 142
#define  F0297_AUTOCONSTEL_TIMER			 143
#define  F0297_AUTOSTOP_CONSTEL				 144
#define  F0297_AUTOCONSTEL_ON				 145
#define  F0297_DI_UNLOCK					 146
#define  F0297_DI_FREEZE					 147
#define  F0297_MISMATCH						 148
#define  F0297_ACQ_MODE						 149
#define  F0297_TRKMODE						 150
#define  F0297_SYNLOST						 151
#define  F0297_BERT_ON						 152
#define  F0297_ERR_SOURCE					 153
#define  F0297_ERR_MODE						 154
#define  F0297_NBYTE						 155
#define  F0297_ERRCOUNT_LO					 156
#define  F0297_ERRCOUNT_HI                   157
#define  F0297_USEINT                        158
#define  F0297_DAVIC					     159
#define  F0297_M    					     160
#define  F0297_DEPTH					     161
#define  F0297_REFRESH47					 162
#define  F0297_BE_BYPASS                     163
#define  F0297_CKOUTPAR						 164
#define  F0297_CT_NBST                       165
#define  F0297_S_NP							 166
#define  F0297_TEI_ENA						 167
#define  F0297_DS_ENA                        168
#define  F0297_SYNC_STRIP					 169
#define  F0297_CI_EN						 170
#define  F0297_CICLK_POL					 171
#define  F0297_CICLK_BASE					 172
#define  F0297_CI_DIVRANGE                   173
#define  F0297_BK_CT_LO        				 174
#define  F0297_BK_CT_HI        				 175
#define  F0297_CORR_CT_LO      				 176
#define  F0297_CORR_CT_HI       			 177
#define  F0297_UNCORR_CT_HI         		 178
#define  F0297_UNCORR_CT_LO        			 179
#define  F0297_DIS_UNLOCK					 180
#define  F0297_MODE							 181
#define  F0297_CT_CLEAR						 182
#define  F0297_CT_HOLD						 183
#define  F0297_RS_NOCORR					 184
#define  F0297_SYNCSTATE 					 185
#define  F0297_EN_CORNER_DET				 186
#define  F0297_TEST_SEL     				 187



#if 1
typedef unsigned char U8;
typedef unsigned int  U32;
typedef unsigned short U16;
typedef   int  BOOL;   
 BOOL   true=1;   
 BOOL   false=0;  
#endif
/*
 *  Copyright 2005 by Spectrum Digital Incorporated.
 *  All rights reserved. Property of Spectrum Digital Incorporated.
 *
 *  Not for distribution.
 */

/*
 *  I2C implementation
 *
 */



/* ------------------------------------------------------------------------ *
 *                                                                          *
 *  DAVINCIEVM_I2C_init( )                                                  *
 *                                                                          *
 *      Enable and initalize the I2C module                                 *
 *                                                                          *
 *      The I2C clk is set to run at 20 KHz                                 *
 *                                                                          *
 * ------------------------------------------------------------------------ */
Int16 DAVINCIEVM_I2C_init1( )
{
    I2C_ICMDR   = 0;                    // Reset I2C
    I2C_ICPSC   = 13;                   // Config prescaler for 27MHz
    I2C_ICCLKL  = 5;                    // Config clk LOW for 50kHz
    I2C_ICCLKH  = 5;                    // Config clk HIGH for 50kHz
    I2C_ICMDR  |= ICMDR_IRS;            // Release I2C from reset
    return 0;
}

/* ------------------------------------------------------------------------ *
 *                                                                          *
 *  DAVINCIEVM_I2C_close( )                                                 *
 *                                                                          *
 * ------------------------------------------------------------------------ */
Int16 DAVINCIEVM_I2C_close1( )
{
    I2C_ICMDR = 0;                      // Reset I2C
    return 0;
}

/* ------------------------------------------------------------------------ *
 *                                                                          *
 *  DAVINCIEVM_I2C_reset( )                                                 *
 *                                                                          *
 *                                                                          *
 *                                                                          *
 * ------------------------------------------------------------------------ */
Int16 DAVINCIEVM_I2C_reset1( )
{
    DAVINCIEVM_I2C_close1( );
    DAVINCIEVM_I2C_init1( );
    return 0;
}

/* ------------------------------------------------------------------------ *
 *                                                                          *
 *  DAVINCIEVM_I2C_write( i2caddr, data, len )                              *
 *                                                                          *
 *      I2C write in Master mode                                            *
 *                                                                          *
 *      i2caddr <- I2C slave address                                        *
 *      data    <- I2C data ptr                                             *
 *      len     <- # of bytes to write                                      *
 *                                                                          *
 * ------------------------------------------------------------------------ */
Int16 DAVINCIEVM_I2C_write1( Uint16 i2caddr, Uint8* data, Uint16 len )
{
    Uint16 i;
    Int32 timeout   = 0x20000;
    Int32 timecount = 0;

    I2C_ICCNT = len;                    // Set len
    I2C_ICSAR = i2caddr;                // Set I2C slave address
    I2C_ICMDR = ICMDR_STT               // Config for master write
              | ICMDR_TRX
              | ICMDR_MST
              | ICMDR_IRS
              | ICMDR_FREE
              ;

    DAVINCIEVM_wait( 10 );              // Short delay

    for ( i = 0 ; i < len ; i++ )
    {
        I2C_ICDXR = data[i];            // Write

        timecount = 0;
        do
        {
            timecount++;
            if ( timecount >= timeout )
            {
                DAVINCIEVM_I2C_reset1( );
                return 1000;
            }
        } while ( ( I2C_ICSTR & ICSTR_ICXRDY ) == 0 );// Wait for Tx Ready
    }

    I2C_ICMDR |= ICMDR_STP;             // Generate STOP
    return 0;
}

/* ------------------------------------------------------------------------ *
 *                                                                          *
 *  DAVINCIEVM_I2C_read( i2caddr, data, len )                               *
 *                                                                          *
 *      I2C read in Master mode                                             *
 *                                                                          *
 *      i2caddr <- I2C slave address                                        *
 *      data    <- I2C data ptr                                             *
 *      len     <- # of bytes to write                                      *
 *                                                                          *
 * ------------------------------------------------------------------------ */
Int16 DAVINCIEVM_I2C_read1( Uint16 i2caddr, Uint8* data, Uint16 len )
{
    Uint16 i;
    Int32 timeout   = 0x20000;
    Int32 timecount = 0;

    I2C_ICCNT = len;                    // Set len
    I2C_ICSAR = i2caddr;                // Set I2C slave address
    I2C_ICMDR = ICMDR_STT               // Config for master read
              | ICMDR_MST
              | ICMDR_IRS
              | ICMDR_FREE
              ;

    for ( i = 0 ; i < len ; i++ )
    {
        timecount = 0;
        do
        {
            timecount++;
            if ( timecount >= timeout )
            {
                DAVINCIEVM_I2C_reset1( );
                return 1000;
            }
        } while ( ( I2C_ICSTR & ICSTR_ICRRDY ) == 0 );// Wait for Rx Ready
        data[i] = I2C_ICDRR;            // Read
    }

    I2C_ICMDR |= ICMDR_STP;             // Generate STOP
    return 0;
}

typedef enum STTUNER_TSOutputMode_e
  {
	  STTUNER_TS_MODE_DEFAULT,	  /* TS output not changeable */
	  STTUNER_TS_MODE_SERIAL,	  /* TS output serial */
	  STTUNER_TS_MODE_PARALLEL,   /* TS output parallel */
	  STTUNER_TS_MODE_DVBCI 	  /* TS output DVB-CI */
  }
  STTUNER_TSOutputMode_t;

typedef struct
 {
	 U8 Address;	 /* Address 			U32  */
	 U8 ResetValue; /* Default (reset) value U32 */
	 U8 Value; 	 /* Current value	 U32	  */
 }
 STTUNER_IOREG_Registerb_t;

 typedef struct
    {
        U8 Reg;  /* Register index	  int  */
        U8 Pos;  /* Bit position	U32    */
        U8 Bits; /* Bit width	     U32    */
        U8 Type; /* Signed or unsigned U32  */
        U8 Mask; /* Mask compute with width and position	U32 */
    }
    STTUNER_IOREG_Fieldb_t;

 

typedef struct
 {
	
	 U8						  Registers;	   /* number of registers, e.g. 65	for stv0299  U32 */
	 U8						  Fields;		   /* number of register fields, e.g. 113 for stv0299  U32 */
	 STTUNER_IOREG_Registerb_t	 *RegMap;		   /* register map list */
	 STTUNER_IOREG_Fieldb_t		 *FieldMap; 	   /* register field list */	
	
 }
 STTUNER_IOREG_DeviceMapb_t;

typedef enum STTUNER_Modulation_e
   {
	   STTUNER_MOD_NONE   = 0x00,  /* Modulation unknown */
	   STTUNER_MOD_ALL	  = 0x3FF, /* Logical OR of all MODs */
	   STTUNER_MOD_QPSK   = 1,
	   STTUNER_MOD_8PSK   = (1 << 1),
	   STTUNER_MOD_QAM	  = (1 << 2),
	   STTUNER_MOD_4QAM   = (1 << 3),
	   STTUNER_MOD_16QAM  = (1 << 4),
	   STTUNER_MOD_32QAM  = (1 << 5),
	   STTUNER_MOD_64QAM  = (1 << 6),
	   STTUNER_MOD_128QAM = (1 << 7),
	   STTUNER_MOD_256QAM = (1 << 8),
	   STTUNER_MOD_BPSK   = (1 << 9)
   }
   STTUNER_Modulation_t;
   typedef enum STTUNER_Spectrum_e
	{
        STTUNER_INVERSION_NONE = 0,
        STTUNER_INVERSION      = 1,
        STTUNER_INVERSION_AUTO = 2
    }
    STTUNER_Spectrum_t;
	
 typedef enum
	{
		E297_NOCARRIER=0,
		E297_CARRIEROK,
	
		E297_NOAGC,
		E297_AGCOK,
		E297_AGCMAX,
	
		E297_NOEQUALIZER,
		E297_EQUALIZEROK,
	
		E297_NODATA,
		E297_DATAOK,
	
		E297_LOCKOK
	} 
	D0297_SignalType_t;

typedef enum STTUNER_J83_e
    {
        STTUNER_J83_NONE   = 0x00,

⌨️ 快捷键说明

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