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

📄 audcodec.c

📁 M3355的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
        iecfs = iecfs | 0x05;
        break;

        /*  /8 */
    case C_128K:
        M3323AudioMemWrite(APRC_DSP, DMX, APRC_PlayTime_Adr	, 16000);
        M3323AudioMemWrite(APRC_DSP, DMX, APRC_Fs_Adr			, 0x0000);
        dacmclksel = 1;
        dacdspll = 0;
        HighDec = TRUE;
        DVDA192KEN  = FALSE;
        iecfs = iecfs | 0x0C;
        break;
    case C_176K:
        M3323AudioMemWrite(APRC_DSP, DMX, APRC_PlayTime_Adr	, 22050);
        M3323AudioMemWrite(APRC_DSP, DMX, APRC_Fs_Adr			, 0x0001);
        dacmclksel = 1;
        dacdspll = 0;
        HighDec = TRUE;
        DVDA192KEN  = FALSE;
        iecfs = iecfs | 0x03;
        break;
    case C_192K:
        M3323AudioMemWrite(APRC_DSP, DMX, APRC_PlayTime_Adr	, 24000);
        M3323AudioMemWrite(APRC_DSP, DMX, APRC_Fs_Adr			, 0x0002);
        dacmclksel = 1;
        dacdspll = 0;
        HighDec = TRUE;
        DVDA192KEN  = TRUE;
        iecfs = iecfs | 0x07;
        break;
    default:
        /* 30218-61ho : Add Default Audio DAC Setting Fot the default mode */
        M3323AudioMemWrite(APRC_DSP, DMX, APRC_PlayTime_Adr	, 24000);
        M3323AudioMemWrite(APRC_DSP, DMX, APRC_Fs_Adr			, 0x0001);
        dacdspll = 1;
        HighDec = FALSE;
        DVDA192KEN  = FALSE;
        iecfs = iecfs | 0x04;
#ifdef _DEBUG_PRINTF_

        //PRINTF("AUDIO: Invalid DAC Sampling Frequency End.\n");
#endif

        break;
    }

    adcextsel = 0;
    adcintfsel = 0;
    adcintfsel = 1;

#define _ADC_HIGH_SAMP_FREQ_

#ifdef _ADC_HIGH_SAMP_FREQ_

    /* ADC Fs = 48K => M3351 */
    adcdspll = 3;
#else

    adcdspll = 1;
#endif

    /* 30316-04ho : Separate IEC Setting From ADC and DAC Setting */
    param1 = (daclrclk << 14) + (dacbclk << 13) + ( daclradv << 12) + (firbit << 7);
    param2 = (xclksel << 14) + (dacmclksel << 13) + (dacdspll << 10) + (dacstsel << 8) +
             (adcdspll << 3) + (adcextsel << 2) + (adcintfsel << 1) + 1; //Welkin: Not Reset ClkGen
    SetM3323WORD(0x1E0, param1);       /* Config DAC */
    SetM3323WORD(0x1E2, param2);
    SetM3323BYTE(0x1EF, iecfs);
    /* 30316-04ho : Separate IEC Setting From ADC and DAC Setting */
	// 31218-hope : Mark this part and move this function to ConfigAudioPLL()
//    ConfigIECOutput(); 

    // For CS4391
    if ( DVDA192KEN == TRUE )
    {
//31204-hope : Add For DAC Programming Flag to avoid double-config DAC    
    	if ( DAC192OK == FALSE )
    	{
	        SetCS4391QuadSpeedMode();
	#if (CS4360_DAC_ENABLE == 1)

    	    SetCS4360QuadSpeedMode();
	#endif
		}
		DAC192OK = TRUE;
		DAC96OK = FALSE;
		DAC48OK = FALSE;

    }
    else if ( HighDec == TRUE )
    {
//31204-hope : Add For DAC Programming Flag to avoid double-config DAC    
		if ( DAC96OK == FALSE )
		{
	        SetCS4391DoubleSpeedMode();
	#if (CS4360_DAC_ENABLE == 1)

	        SetCS4360DoubleSpeedMode();
	#endif
		}
		DAC192OK = FALSE;
		DAC96OK = TRUE;
		DAC48OK = FALSE;

    }
    else
    {
//31204-hope : Add For DAC Programming Flag to avoid double-config DAC
    	if ( DAC48OK == FALSE )
    	{
	        SetCS4391SingleSpeedMode(fs);
	#if (CS4360_DAC_ENABLE == 1)

	        SetCS4360SingleSpeedMode(fs);
	#endif
		}
		
		DAC192OK = FALSE;
		DAC96OK = FALSE;
		DAC48OK = TRUE;

    }

#ifdef _DEBUG_PRINTF_

    //PRINTF("AUDIO: ConfigACLKGEN() End.\n");
#endif

    return (OK);
}
/* 30121-18ho : (END) Add ConfigACLKGEN() */

/* 30316-04ho : Separate IEC Setting From ADC and DAC Setting */
/*------------------------------------------------------------------------
 * Func. Name : ConfigIECOutput()
 * Description  : config hardware according to the Setup Menu
 * Arguments  : none
 * Return Value : none
 *------------------------------------------------------------------------*/
tEndCondition ConfigIECOutput(void)
{
    WORD param1;
    WORD iecdspll;
    //40202-hope :: fix IEC 96K Setting for CSS Disk
    BOOL IEC96KTMP;

	//40202-hope :: fix IEC 96K Setting for CSS Disk
    if ( (IEC96KEN == TRUE) && (CSSDisk == TRUE) )
    {
    	IEC96KTMP = FALSE;
    }
    else
    {
    	IEC96KTMP = IEC96KEN;
    }

    PRINTF("DVDA192KEN = %d IEC96KEN = %d HighDec = %d\n",DVDA192KEN, IEC96KEN, HighDec);
    iecdspll = iectable[DVDA192KEN][IEC96KTMP][HighDec];

    /*    if ( IEC96KEN == TRUE)
        {
            if ( HighDec == TRUE )
            {
                iecdspll = 2;
                PRINTF("IEC96K and SRC96K\n");
            }
            else
            {
                iecdspll = 1;
                PRINTF("IEC96K and SRC48K\n");
            }
        }
        else
        {
            if ( HighDec == TRUE )
            {
                iecdspll = 1;
                PRINTF("IEC48K and SRC96K\n");
            }
            else
            {
                iecdspll = 1 ;
                PRINTF("IEC48K and SRC48K\n");
            }
        }
    */
    /* 30501-01hope : Fix IEC Fs Seetting Error */

    param1 = (GetM3323WORD(0x1E2)& 0xff3f) | (iecdspll << 6);
    SetM3323WORD(0x1E2, param1);

    return (OK);
}

/*------------------------------------------------------------------------
 * Func. Name   : GetAudioFsOut()
 * Description  : Get Output Frequency
 * Arguments    : none
 * Return Value : none
 *------------------------------------------------------------------------*/
tSampFreq GetAudioFsOut(tSampFreq fs_src)
{
    tSampFreq fs_out;
#ifdef _DEBUG_PRINTF_

    PRINTF("AUDIO: GetAudioFsOut() Begin.\n");
#endif

    switch (fs_src)
    {
    case C_8K:
#if C_8K_YES

        fs_out = C_8K;
        break;

#elif  C_16K_YES

        fs_out = C_16K;
        break;

#elif C_32K_YES

        fs_out = C_32K;
        break;

#elif C_64K_YES

        fs_out = C_64K;
        break;

#elif C_128K_YES

        fs_out = C_128K;
        break;

#elif C_12K_YES

        fs_out = C_12K;
        break;

#elif C_24K_YES

        fs_out = C_24K;
        break;

#elif C_48K_YES

        fs_out = C_48K;
        break;
#elif C_96K_YES

        fs_out = C_96K;
        break;
#elif C_192K_YES

        fs_out = C_192K;
        break;
#else

        fs_out = C_8K;
        break;
#endif

    case C_16K:
#if C_16K_YES

        fs_out = C_16K;
        break;
#elif C_32K_YES

        fs_out = C_32K;
        break;
#elif C_64K_YES

        fs_out = C_64K;
        break;
#elif C_128K_YES

        fs_out = C_128K;
        break;
#elif C_24K_YES

        fs_out = C_24K;
        break;
#elif C_48K_YES

        fs_out = C_48K;
        break;
#elif C_96K_YES

        fs_out = C_96K;
        break;
#elif C_192K_YES

        fs_out = C_192K;
        break;
#else

        fs_out = C_16K;
        break;
#endif


    case C_32K:
#if C_32K_YES

        fs_out = C_32K;
        break;
#elif C_64K_YES

        fs_out = C_64K;
        break;
#elif C_128K_YES

        fs_out = C_128K;
        break;
#elif C_48K_YES

        fs_out = C_48K;
        break;
#elif C_96K_YES

        fs_out = C_96K;
        break;
#elif C_192K_YES

        fs_out = C_192K;
        break;
#else

        fs_out = C_32K;
        break;
#endif


    case C_64K:
#if C_64K_YES

        fs_out = C_64K;
        break;
#elif C_128K_YES

        fs_out = C_128K;
        break;
#elif C_96K_YES

        fs_out = C_96K;
        break;
#elif C_192K_YES

        fs_out = C_192K;
        break;
#else

        fs_out = C_64K;
        break;
#endif


    case C_128K:
#if C_128K_YES

        fs_out = C_128K;
        break;
#elif C_192K_YES

        fs_out = C_192K;
        break;
#else

        fs_out = C_128K;
        break;
#endif

    case C_12K:
#if C_12K_YES

        fs_out = C_12K;
        break;
#elif C_24K_YES

        fs_out = C_24K;
        break;
#elif C_48K_YES

        fs_out = C_48K;
        break;
#elif C_96K_YES

        fs_out = C_96K;
        break;
#elif C_192K_YES

        fs_out = C_192K;
        break;
#else

        fs_out = C_12K;
        break;
#endif

    case C_24K:
#if C_24K_YES

        fs_out = C_24K;
        break;
#elif C_48K_YES

        fs_out = C_48K;
        break;
#elif C_96K_YES

        fs_out = C_96K;
        break;
#elif C_192K_YES

        fs_out = C_192K;
        break;
#else

        fs_out = C_24K;
        break;
#endif

    case C_48K:
#if C_48K_YES

        fs_out = C_48K;
        break;
#elif C_96K_YES

        fs_out = C_96K;
        break;
#elif C_192K_YES

        fs_out = C_192K;
        break;
#else

        fs_out = C_48K;
        break;
#endif

    case C_96K:
#if C_96K_YES

        fs_out = C_96K;
        break;
#elif C_192K_YES

        fs_out = C_192K;
        break;
#else

        fs_out = C_96K;
        break;
#endif

    case C_192K:
        fs_out = C_192K;
        break;
    case C_11K:
#if C_11K_YES

        fs_out = C_11K;
        break;
#elif C_22K_YES

⌨️ 快捷键说明

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