csl_dpllaux.h

来自「dsp在音频处理中的运用」· C头文件 代码 · 共 91 行

H
91
字号
#ifndef _CSL_DPLLAUX_H
#define _CSL_DPLLAUX_H

#ifdef __cplusplus
extern "C" {
#endif

/* Set the PLL Mode */

static inline
CSL_Status
	CSL_dpllSetMode (
		CSL_DpllHandle	hDpll,
		CSL_DpllMode 	mode
)
{
	CSL_Status status = CSL_SOK;

	if(mode == CSL_DPLL_MODE_BYPASS)
		CSL_FINS(hDpll->regs->CTL,DPLL_CTL_PLL_ENABLE,0x0);
	else if(mode == CSL_DPLL_MODE_LOCK)
		CSL_FINS(hDpll->regs->CTL,DPLL_CTL_PLL_ENABLE,0x1);
	else
		status = CSL_ESYS_FAIL;/* If none of the above, then return error */

	return status;
}

/* Based on the mode, set the clock multiplier and divider.	 */
static inline
void
	CSL_dpllSetFrequency (
		CSL_DpllHandle	hDpll,
		CSL_DpllHwSetup *	hwsetup
)
{
	if(CSL_FEXT(hDpll->regs->CTL,DPLL_CTL_PLL_ENABLE) ) { /* IF LOCK Mode */
		/* pll multiplier */
		CSL_FINS(hDpll->regs->CTL,DPLL_CTL_PLL_MULT,hwsetup->pllmult);
		/* pll divider    */
		CSL_FINS(hDpll->regs->CTL,DPLL_CTL_PLL_DIV, hwsetup->plldiv);
	} else
		/* bypass divider */
		CSL_FINS(hDpll->regs->CTL,DPLL_CTL_BYPASS_DIV,hwsetup->bypassdiv);
}

/* Get the PLL mode */
static inline
CSL_DpllMode
	CSL_dpllGetMode (
		CSL_DpllHandle	hDpll
)
{
  volatile CSL_DpllMode pllMode;

  pllMode = (CSL_DpllMode)CSL_FEXT(hDpll->regs->CTL,DPLL_CTL_PLL_ENABLE);
	return (pllMode);
}

/* Get the LOCK status */
static inline
CSL_DpllLock
	CSL_dpllGetLockStatus (
		CSL_DpllHandle	hDpll
)
{
  volatile CSL_DpllLock lockStatus;
  lockStatus = (CSL_DpllLock)CSL_FEXT(hDpll->regs->CTL,DPLL_CTL_LOCK); 
	return (lockStatus);
}

/* Get the break status */
static inline
CSL_DpllLine
	CSL_dpllGetBreakStatus (
		CSL_DpllHandle	hDpll
)
{
   volatile CSL_DpllLine brkStatus;
   brkStatus = (CSL_DpllLine)CSL_FEXT(hDpll->regs->CTL,DPLL_CTL_BREAKLN);
	return (brkStatus);
}


#ifdef __cplusplus
}
#endif


#endif

⌨️ 快捷键说明

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