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

📄 tmbsl10023.c

📁 三星一体化数字高频头DNQS221PH261A驱动程序
💻 C
📖 第 1 页 / 共 5 页
字号:
            g10023Instance[demodUnit].sConfig.bPolaPWM1         = OM57XX_POLAPWM1_DEF;
            g10023Instance[demodUnit].sConfig.bPolaPWM2         = OM57XX_POLAPWM2_DEF;
//            g10023Instance[demodUnit].sConfig.bBERdepth         = OM57XX_BERDEPTH_MCNS_DEF;
            g10023Instance[demodUnit].sConfig.bClkOffsetRange   = OM57XX_CLKOFFSETRANGE_DEF;
            g10023Instance[demodUnit].sConfig.bTUN_IQSwap       = OM57XX_IQSWAP_DEF;
//            g10023Instance[demodUnit].sConfig.uTUN_IF           = OM57XX_IF_MCNS_DEF;
            g10023Instance[demodUnit].sConfig.bOUT_OClk1        = OM57XX_OCLK1_DEF;
            g10023Instance[demodUnit].sConfig.bOUT_bParaSer1    = OM57XX_PARASER1_DEF;
            g10023Instance[demodUnit].sConfig.bOUT_bMSBFirst1   = OM57XX_MSBFIRST1_DEF;
            g10023Instance[demodUnit].sConfig.bOUT_ModeABC1     = OM57XX_MODEABC1_DEF;
            g10023Instance[demodUnit].sConfig.bOUT_ParaDiv1     = OM57XX_PARADIV1_DEF;
            g10023Instance[demodUnit].sConfig.bOUT_OClk2        = OM57XX_OCLK2_DEF;
            g10023Instance[demodUnit].sConfig.bOUT_bMSBFirst2   = OM57XX_MSBFIRST2_DEF;
            g10023Instance[demodUnit].sConfig.bSwDyn            = OM57XX_SWDYN_DEF;
            g10023Instance[demodUnit].sConfig.bSwStep           = OM57XX_SWSTEP_DEF;

            // specific soft config
            /*switch (uValue & 0x000000ff)
            {
            case 0x00:
                break;
            case 0x01:
                break;
            case 0x02:
                break;
            default:
                return TM_ERR_NOT_SUPPORTED;
            }*/

            // specific board config
            switch (uValue & 0xffff0000)
            {
            case OM5755_BOARD_DEF: // 0x57550000
                // sub-board
                switch(uValue & 0xff00)
                {
                case 0x0000: // DVB  PAL NTSC ? 
                    g10023Instance[demodUnit].sConfig.bModeDvbMcns  = OM57XX_MODE_DVB_DEF;
                    g10023Instance[demodUnit].sConfig.uTUN_IF       = OM57XX_IF_DVB_DEF;
                    g10023Instance[demodUnit].sConfig.bPLL_M_Factor = OM57XX_PLLMFACTOR_DVB_DEF;
                    g10023Instance[demodUnit].sConfig.bPLL_N_Factor = OM57XX_PLLNFACTOR_DVB_DEF;
                    g10023Instance[demodUnit].sConfig.bPLL_P_Factor = OM57XX_PLLPFACTOR_DVB_DEF;
                    g10023Instance[demodUnit].sConfig.bBERdepth     = OM57XX_BERDEPTH_DVB_DEF;
                    g10023Instance[demodUnit].sConfig.bFsampling    = OM57XX_FSAMPLING_DEF;
					printf("DVB ");
					//					getch();
	
                    break;

                case 0x0100:
                    g10023Instance[demodUnit].sConfig.bModeDvbMcns  = OM57XX_MODE_MCNS_DEF;
                    g10023Instance[demodUnit].sConfig.uTUN_IF       = OM57XX_IF_MCNS_DEF;
                    g10023Instance[demodUnit].sConfig.bPLL_M_Factor = OM57XX_PLLMFACTOR_MCNS_DEF;
                    g10023Instance[demodUnit].sConfig.bPLL_N_Factor = OM57XX_PLLNFACTOR_MCNS_DEF;
                    g10023Instance[demodUnit].sConfig.bPLL_P_Factor = OM57XX_PLLPFACTOR_MCNS_DEF;
                    g10023Instance[demodUnit].sConfig.bBERdepth     = OM57XX_BERDEPTH_MCNS_DEF;
                    g10023Instance[demodUnit].sConfig.bFsampling    = OM57XX_FSAMPLING_DEF;
					printf("MCNS");
					getch();
                    break;

                default:
                    // board not supported
                    return TM_ERR_NOT_SUPPORTED;
                }
               break;

            case OM5763_BOARD_DEF: // 0x57630000
                // sub-board
                switch(uValue & 0xff00)
                {
                case 0x0000: //Annex B
                    g10023Instance[demodUnit].sConfig.bModeDvbMcns  = OM57XX_MODE_MCNS_DEF;
                    g10023Instance[demodUnit].sConfig.uTUN_IF       = OM5763_IF_MCNS_DEF;
                    g10023Instance[demodUnit].sConfig.bPLL_M_Factor = OM57XX_PLLMFACTOR_MCNS_DEF;
                    g10023Instance[demodUnit].sConfig.bPLL_N_Factor = OM57XX_PLLNFACTOR_MCNS_DEF;
                    g10023Instance[demodUnit].sConfig.bPLL_P_Factor = OM57XX_PLLPFACTOR_MCNS_DEF;
                    g10023Instance[demodUnit].sConfig.bBERdepth     = OM57XX_BERDEPTH_MCNS_DEF;
                    g10023Instance[demodUnit].sConfig.bFsampling    = OM5763_FSAMPLING_DEF;
                    break;

                case 0x0100: //Annex AC
                    g10023Instance[demodUnit].sConfig.bModeDvbMcns  = OM57XX_MODE_DVB_DEF;
                    g10023Instance[demodUnit].sConfig.uTUN_IF       = OM5763_IF_DVB_DEF;
                    g10023Instance[demodUnit].sConfig.bPLL_M_Factor = OM57XX_PLLMFACTOR_DVB_DEF;
                    g10023Instance[demodUnit].sConfig.bPLL_N_Factor = OM57XX_PLLNFACTOR_DVB_DEF;
                    g10023Instance[demodUnit].sConfig.bPLL_P_Factor = OM57XX_PLLPFACTOR_DVB_DEF;
                    g10023Instance[demodUnit].sConfig.bBERdepth     = OM57XX_BERDEPTH_DVB_DEF;
                    g10023Instance[demodUnit].sConfig.bFsampling    = OM5763_FSAMPLING_DEF;
                    break;

                default:
                    // board not supported
                    return TM_ERR_NOT_SUPPORTED;
                }
               break;


            case CUSTOM_BOARD_DEF:
                // do nothing more than setting the default values
                break;

            default:
                // board not supported
                return TM_ERR_NOT_SUPPORTED;
            }

            // store board if the config has been updated
            g10023Instance[demodUnit].sConfig.uBoard = uValue;
            break;

        case DVBMCNS:
            g10023Instance[demodUnit].sConfig.bModeDvbMcns = (UInt8)uValue;
            if(g10023Instance[demodUnit].sConfig.bModeDvbMcns)
            {
                // MCNS mode
                g10023Instance[demodUnit].sConfig.bPLL_M_Factor = OM57XX_PLLMFACTOR_MCNS_DEF;
                g10023Instance[demodUnit].sConfig.bPLL_N_Factor = OM57XX_PLLNFACTOR_MCNS_DEF;
                g10023Instance[demodUnit].sConfig.bPLL_P_Factor = OM57XX_PLLPFACTOR_MCNS_DEF;
                g10023Instance[demodUnit].sConfig.bBERdepth     = OM57XX_BERDEPTH_MCNS_DEF;

                if((g10023Instance[demodUnit].sConfig.uBoard & 0xffff0000) == OM5755_BOARD_DEF)
                {
                    g10023Instance[demodUnit].sConfig.uTUN_IF       = OM57XX_IF_MCNS_DEF;
                }
                else
                {
                    g10023Instance[demodUnit].sConfig.uTUN_IF       = OM5763_IF_MCNS_DEF;
                }

                // set the tuner Low pass filter width selection
	            g10023Instance[demodUnit].tunerFunc.setCfgFunc(
                    g10023Instance[demodUnit].eTunerUnit,
                    tmhalFETunerBandwidth , 7000000);
            }
            else
            {
                // DVB mode
                g10023Instance[demodUnit].sConfig.bPLL_M_Factor = OM57XX_PLLMFACTOR_DVB_DEF;
                g10023Instance[demodUnit].sConfig.bPLL_N_Factor = OM57XX_PLLNFACTOR_DVB_DEF;
                g10023Instance[demodUnit].sConfig.bPLL_P_Factor = OM57XX_PLLPFACTOR_DVB_DEF;
                g10023Instance[demodUnit].sConfig.bBERdepth     = OM57XX_BERDEPTH_DVB_DEF;

                if((g10023Instance[demodUnit].sConfig.uBoard & 0xffff0000) == OM5755_BOARD_DEF)
                {
                    g10023Instance[demodUnit].sConfig.uTUN_IF       = OM57XX_IF_DVB_DEF;
                }
                else
                {
                    g10023Instance[demodUnit].sConfig.uTUN_IF       = OM5763_IF_DVB_DEF;
                }

                // set the tuner Low pass filter width selection
	            g10023Instance[demodUnit].tunerFunc.setCfgFunc(
                    g10023Instance[demodUnit].eTunerUnit,
                    tmhalFETunerBandwidth , 9000000);
            }
            break;
        case XTALL:
            g10023Instance[demodUnit].sConfig.uXtalFreq = uValue;
            break;
        case PLLMFACTOR:
            g10023Instance[demodUnit].sConfig.bPLL_M_Factor = (UInt8)uValue;
            break;
        case PLLNFACTOR:
            g10023Instance[demodUnit].sConfig.bPLL_N_Factor = (UInt8)uValue;
            break;
        case PLLPFACTOR:
            g10023Instance[demodUnit].sConfig.bPLL_P_Factor = (UInt8)uValue;
            break;
        case FSAMPLING:
            g10023Instance[demodUnit].sConfig.bFsampling = (UInt8)uValue;
            break;
        case IFMAX:
            g10023Instance[demodUnit].sConfig.bIFMax = (UInt8)uValue;
            break;
        case IFMIN:
            g10023Instance[demodUnit].sConfig.bIFMin = (UInt8)uValue;
            break;
        case TUNMAX:
            g10023Instance[demodUnit].sConfig.bTUNMax = (UInt8)uValue;
            break;
        case TUNMIN:
            g10023Instance[demodUnit].sConfig.bTUNMin = (UInt8)uValue;
            break;
        case AGCTRESHOLD:
            g10023Instance[demodUnit].sConfig.bAGCtreshold = (UInt8)uValue;
            break;
        case EQUALTYPE:
            g10023Instance[demodUnit].sConfig.bEqualType = (UInt8)uValue;
            break;
        case POLAPWM1:
            g10023Instance[demodUnit].sConfig.bPolaPWM1 = (UInt8)uValue;
            break;
        case POLAPWM2:
            g10023Instance[demodUnit].sConfig.bPolaPWM2 = (UInt8)uValue;
            break;
        case BERDEPTH:
            g10023Instance[demodUnit].sConfig.bBERdepth = (UInt8)uValue;
            break;
        case BERWINDOW:
            g10023Instance[demodUnit].sConfig.uBERwindow = uValue;
            break;
        case CLKOFFSETRANGE:
            g10023Instance[demodUnit].sConfig.bClkOffsetRange = (UInt8)uValue;
            break;
        case IQSWAP:
            g10023Instance[demodUnit].sConfig.bTUN_IQSwap = (UInt8)uValue;
            break;
        case IF:
            g10023Instance[demodUnit].sConfig.uTUN_IF = uValue;
            break;
        case OCLK1:
            g10023Instance[demodUnit].sConfig.bOUT_OClk1 = (UInt8)uValue;
            break;
        case PARASER1:
            g10023Instance[demodUnit].sConfig.bOUT_bParaSer1 = (UInt8)uValue;
            break;
        case MSBFIRST1:
            g10023Instance[demodUnit].sConfig.bOUT_bMSBFirst1 = (UInt8)uValue;
            break;
        case MODEABC1:
            g10023Instance[demodUnit].sConfig.bOUT_ModeABC1 = (UInt8)uValue;
            break;
        case PARADIV1:
            g10023Instance[demodUnit].sConfig.bOUT_ParaDiv1 = (UInt8)uValue;
            break;
        case OCLK2:
            g10023Instance[demodUnit].sConfig.bOUT_OClk2 = (UInt8)uValue;
            break;
        case MSBFIRST2:
            g10023Instance[demodUnit].sConfig.bOUT_bMSBFirst2 = (UInt8)uValue;
            break;
        case SWDYN:
            g10023Instance[demodUnit].sConfig.bSwDyn = (UInt8)uValue;
            break;
        case SWSTEP:
            g10023Instance[demodUnit].sConfig.bSwStep = (UInt8)uValue;
            break;

        // backdoor functions
        case FEINIT:
            // init
            Tda10023WriteInit(&g10023Instance[demodUnit]);
            break;

        case SWITCH:
            if (uValue)
                // tuner is accessible
                g10023Instance[demodUnit].systemFunc.SY_WriteBit(
                    g10023Instance[demodUnit].uDemodHwAdd, 
                    TDA10023_TEST_IND, TDA10023_TEST_BYPIIC_BIT, 
                    TDA10023_TEST_BYPIIC_BIT);
            else
            {
                // tuner is disconnected from the I2C bus
                g10023Instance[demodUnit].systemFunc.SY_WriteBit(
                    g10023Instance[demodUnit].uDemodHwAdd, 
                    TDA10023_TEST_IND, TDA10023_TEST_BYPIIC_BIT, 0);
            }
            break;

        case JQAMMODE:
            g10023Instance[demodUnit].systemFunc.SY_WriteBit(
                g10023Instance[demodUnit].uDemodHwAdd | TDA10023_JQAMFILTER_ADDR_OFFSET,
                TDA10023_JQAM_MODE_IND, TDA10023_JQAM_MODE_JQAM_MODE_MSK, uValue);
            break;

        case JQAMREQTS:
            puBytes[0] = (UInt8)(uValue >> 8);
            puBytes[1] = (UInt8)(uValue);
            g10023Instance[demodUnit].systemFunc.SY_Write(
                g10023Instance[demodUnit].uDemodHwAdd | TDA10023_JQAMFILTER_ADDR_OFFSET,
                TDA10023_REQ_TS_IDH_IND, 2, puBytes);
            break;

        case JQAMREQON:
            puBytes[0] = (UInt8)(uValue >> 8);
            puBytes[1] = (UInt8)(uValue);
            g10023Instance[demodUnit].systemFunc.SY_Write(
                g10023Instance[demodUnit].uDemodHwAdd | TDA10023_JQAMFILTER_ADDR_OFFSET,
                TDA10023_REQ_ON_IDH_IND, 2, puBytes);
            break;

        default:
            return TM_ERR_BAD_PARAMETER;
    }

    // start algo
    g10023Instance[demodUnit].sApiFlags.iStartAlgo = True;

    return TM_OK;
}

//-----------------------------------------------------------------------------
// FUNCTION:    tmbsl10023GetConfig:
//
// DESCRIPTION: Get the config of the 10023
//
// RETURN:      TMBSL_ERR_DEMOD_BAD_UNIT_NUMBER
//              TMBSL_ERR_DEMOD_NOT_INITIALIZED
//              TM_ERR_BAD_PARAMETER
//              TM_OK
//
// NOTES:       This function can be removed if needed
//-----------------------------------------------------------------------------
//
tmErrorCode_t
tmbsl10023GetConfig(
    tmUnitSelect_t   demodUnit,   //  I: Demod unit number
    UInt32           uItemId,     //  I: Identifier of the item to modify
    UInt32*          puValue      //  O: Value to set for the config item
    )
{
    UInt32 uByte;
    UInt32 puBytes[4];
    int i;

    SEND_TRACEFCT2(DEBUG_GETCONFIG_ID, 0);

    //----------------------
    // test input parameters
    //----------------------
    // test the instance number
    if (demodUnit > TDA10023_MAX_UNITS)
        return TMBSL_ERR_DEMOD_BAD_UNIT_NUMBER;

    // test the object
    if (g10023Instance[demodUnit].sApiFlags.iInit == False)
        return TMBSL_ERR_DEMOD_NOT_INITIALIZED;

    //----------------------
    // Implementation
    //----------------------
    // get the value
    switch((tm10023cfgIndex_t)uItemId)
    {
        // Board config
        case BOARD:
            *puValue = g10023Instance[demodUnit].sConfig.uBoard;
            break;
        case STANDARD:
            *puValue = tmhalFEStandardDVBC;
            break;
        case DVBMCNS:
            *puValue = g10023Instance[demodUnit].sConfig.bModeDvbMcns;
            break;
        case XTALL:
            *puValue = g10023Instance[demodUnit].sConfig.uXtalFreq;
            break;
        case PLLMFACTOR:
            *puValue = g10023Instance[demodUnit].sConfig.bPLL_M_Factor;
            break;
        case PLLNFACTOR:
            *puValue = g10023Instance[demodUnit].sConfig.bPLL_N_Factor;
            break;
        case PLLPFACTOR:
            *puValue = g10023Instance[demodUnit].sConfig.bPLL_P_Factor;
            break;
        case FSAMPLING:
            *puValue = g10023Instance[demodUnit].sConfig.bFsampling;
            break;
        case IFMAX:
            *puValue = g10023Instance[demodUnit].sConfig.bIFMax;
            break;

⌨️ 快捷键说明

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