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

📄 csl_mcaspaux.h

📁 Configuring External Interrupts on TMS320C672x Devices
💻 H
📖 第 1 页 / 共 5 页
字号:
 *
 *   @b  Modifies
 *   @n  GBLCTL, DLBCTL register
 *
 *   @b Example
 *   @verbatim
        Bool   loopBack;   
        
        loopBack = TRUE;
        CSL_mcaspConfigLoopBack (hMcasp, loopBack);
        
     @endverbatim
 * ============================================================================
 */
static inline
void CSL_mcaspConfigLoopBack (
    CSL_McaspHandle     hMcasp,
    Bool                loopBack
)
{
	Bool    loopBackEnable;
	Bool    orderBit;
	Uint32  serNum = 0;

	/* Reset the RSRCLR and XSRCLR registers in GBLCTL */
	CSL_FINST (hMcasp->regs->GBLCTL, MCASP_GBLCTL_RSRCLR, CLEAR);
	CSL_FINST (hMcasp->regs->GBLCTL, MCASP_GBLCTL_XSRCLR, CLEAR);

	/* Reset the RSMRST and XSMRST registers in GBLCTL */
	CSL_FINST (hMcasp->regs->GBLCTL, MCASP_GBLCTL_RSMRST, RESET);
	CSL_FINST (hMcasp->regs->GBLCTL, MCASP_GBLCTL_XSMRST, RESET);

	/* Reset the RFRST and XFRST registers in GBLCTL */
	CSL_FINST (hMcasp->regs->GBLCTL, MCASP_GBLCTL_RFRST, RESET);
	CSL_FINST (hMcasp->regs->GBLCTL, MCASP_GBLCTL_XFRST, RESET);

	/* configure loop back mode */
	CSL_FINS (hMcasp->regs->DLBCTL, MCASP_DLBCTL_DLBEN, loopBack);

	loopBackEnable = CSL_FEXT (hMcasp->regs->DLBCTL, MCASP_DLBCTL_DLBEN);

	if (loopBackEnable == TRUE) {
		CSL_FINST (hMcasp->regs->DLBCTL, MCASP_DLBCTL_MODE, XMTCLK);
	}

	orderBit = CSL_FEXT (hMcasp->regs->DLBCTL, MCASP_DLBCTL_ORD);

	if (orderBit == TRUE) {
		while (serNum < hMcasp->numOfSerializers) {
			CSL_FINST (hMcasp->regs->SRCTL0, MCASP_SRCTL0_SRMOD, XMT);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR0, OUTPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL1, MCASP_SRCTL1_SRMOD, RCV);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR1, INPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL2, MCASP_SRCTL2_SRMOD, XMT);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR2, OUTPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL3, MCASP_SRCTL3_SRMOD, RCV);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR3, INPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL4, MCASP_SRCTL4_SRMOD, XMT);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR4, OUTPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL5, MCASP_SRCTL5_SRMOD, RCV);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR5, INPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL6, MCASP_SRCTL6_SRMOD, XMT);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR6, OUTPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL7, MCASP_SRCTL7_SRMOD, RCV);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR7, INPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL8, MCASP_SRCTL8_SRMOD, XMT);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR8, OUTPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL9, MCASP_SRCTL9_SRMOD, RCV);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR9, INPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL10, MCASP_SRCTL10_SRMOD, XMT);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR10, OUTPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL11, MCASP_SRCTL11_SRMOD, RCV);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR11, INPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL12, MCASP_SRCTL12_SRMOD, XMT);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR12, OUTPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL13, MCASP_SRCTL13_SRMOD, RCV);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR13, INPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL14, MCASP_SRCTL14_SRMOD, XMT);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR14, OUTPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL15, MCASP_SRCTL15_SRMOD, RCV);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR15, INPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;
		}
	} else {
		while (serNum < hMcasp->numOfSerializers) {
			CSL_FINST (hMcasp->regs->SRCTL0, MCASP_SRCTL0_SRMOD, RCV);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR0, INPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL1, MCASP_SRCTL1_SRMOD, XMT);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR1, OUTPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL2, MCASP_SRCTL2_SRMOD, RCV);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR2, INPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL3, MCASP_SRCTL3_SRMOD, XMT);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR3, OUTPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL4, MCASP_SRCTL4_SRMOD, RCV);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR4, INPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL5, MCASP_SRCTL5_SRMOD, XMT);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR5, OUTPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL6, MCASP_SRCTL6_SRMOD, RCV);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR6, INPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL7, MCASP_SRCTL7_SRMOD, XMT);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR7, OUTPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL8, MCASP_SRCTL8_SRMOD, RCV);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR8, INPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL9, MCASP_SRCTL9_SRMOD, XMT);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR9, OUTPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL10, MCASP_SRCTL10_SRMOD, RCV);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR10, INPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL11, MCASP_SRCTL11_SRMOD, XMT);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR11, OUTPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL12, MCASP_SRCTL12_SRMOD, RCV);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR12, INPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL13, MCASP_SRCTL13_SRMOD, XMT);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR13, OUTPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL14, MCASP_SRCTL14_SRMOD, RCV);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR14, INPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;

			CSL_FINST (hMcasp->regs->SRCTL15, MCASP_SRCTL15_SRMOD, XMT);
			CSL_FINST (hMcasp->regs->PDIR, MCASP_PDIR_AXR15, OUTPUT);
			if (++serNum >= hMcasp->numOfSerializers) break;
		}
	}
}

/** ===========================================================================
 *   @n@b CSL_mcaspConfigRcvSlot
 *
 *   @b Description
 *   @n This function configures receive slot with value passed.
 *
 *   @b Arguments
 *   @verbatim
            hMcasp      Handle to the McASP instance

            rcvSlot     Value to be loaded into the bit filed
     @endverbatim
 *
 *   <b> Return Value </b>  None
 *
 *   <b> Pre Condition </b>
 *   @n  None
 *
 *   <b> Post Condition </b>
 *   @n  RTDM register will be loaded with the specified value
 *
 *   @b  Modifies
 *   @n  RTDM register
 *
 *   @b Example
 *   @verbatim
        Uint32  rcvSlot;
        
        rcvSlot = 0x00000034;
        CSL_mcaspConfigRcvSlot (hMcasp, rcvSlot);
        
     @endverbatim
 * ============================================================================
 */
static inline
void CSL_mcaspConfigRcvSlot (
    CSL_McaspHandle     hMcasp,
    Uint32              rcvSlot
)
{
	/* configure the RTDM register */
	hMcasp->regs->RTDM = (Uint32) rcvSlot;
}

/** ===========================================================================
 *   @n@b CSL_mcaspConfigXmtSlot
 *
 *   @b Description
 *   @n This function configures transmit slots with value passed.  
 *
 *   @b Arguments
 *   @verbatim
            hMcasp      Handle to the McASP instance

            xmtSlot     Value to be loaded into the bit filed
     @endverbatim
 *
 *   <b> Return Value </b>  None
 *
 *   <b> Pre Condition </b>
 *   @n  None
 *
 *   <b> Post Condition </b>
 *   @n  XTDM register will be loaded with the specified value
 *
 *   @b  Modifies
 *   @n  XTDM register
 *
 *   @b Example
 *   @verbatim
        Uint32  xmtSlot;
        
        xmtSlot = 0x00000034;
        CSL_mcaspConfigXmtSlot (hMcasp, xmtSlot);
        
     @endverbatim
 * ============================================================================
 */
static inline
void CSL_mcaspConfigXmtSlot (
    CSL_McaspHandle     hMcasp,
    Uint32              xmtSlot
)
{
	/* configure the XTDM register */
	hMcasp->regs->XTDM = (Uint32) xmtSlot;
}

/** ===========================================================================
 *   @n@b CSL_mcaspConfigRcvInt
 *
 *   @b Description
 *   @n This function configures the receiver interrupt control register with
 *      specified value.
 *
 *   @b Arguments
 *   @verbatim
            hMcasp      Handle to the McASP instance

            rcvInt      Value to be loaded into the RINTCTL register
     @endverbatim
 *
 *   <b> Return Value </b>  None
 *
 *   <b> Pre Condition </b>
 *   @n  None
 *
 *   <b> Post Condition </b>
 *   @n  RINTCTL register will be loaded with the specified value
 *
 *   @b  Modifies
 *   @n  RINTCTL register
 *
 *   @b Example
 *   @verbatim
        Uint32  rcvInt;
        
        rcvInt = 0x00001234;
        CSL_mcaspConfigRcvInt (hMcasp, rcvInt);
        
     @endverbatim
 * ============================================================================
 */
static inline
void CSL_mcaspConfigRcvInt (
    CSL_McaspHandle     hMcasp,
    Uint32              rcvInt
)
{
	/* configure the RINTCTL register */
	hMcasp->regs->RINTCTL = (Uint32) rcvInt;
}

/** ===========================================================================
 *   @n@b CSL_mcaspConfigXmtInt
 *
 *   @b Description
 *   @n This function configures the transmitter interrupt control register
 *      with specified value.
 *
 *   @b Arguments
 *   @verbatim
            hMcasp      Handle to the McASP instance

            xmtInt      Value to be loaded into the XINTCTL register
     @endverbatim
 *
 *   <b> Return Value </b>  None
 *
 *   <b> Pre Condition </b>
 *   @n  None
 *
 *   <b> Post Condition </b>
 *   @n  XINTCTL register will be loaded with the specified value
 *
 *   @b  Modifies
 *   @n  XINTCTL register
 *
 *   @b Example
 *   @verbatim
        Uint32  xmtInt;
        
        xmtInt = 0x00001234;
        CSL_mcaspConfigXmtInt (hMcasp, xmtInt);
        
     @endverbatim
 * ============================================================================
 */
static inline
void CSL_mcaspConfigXmtInt (
    CSL_McaspHandle     hMcasp,
    Uint32              xmtInt             
)
{
	/* configure the XINTCTL register */
	hMcasp->regs->XINTCTL = (Uint32) xmtInt;
}

/** ===========================================================================
 *   @n@b CSL_mcaspResetRcvClk
 *
 *   @b Description
 *   @n This function resets the receive clock circuitry
 *
 *   @b Arguments
 *   @verbatim
            hMcasp          Handle to the McASP instance
     @endverbatim
 *
 *   <b> Return Value </b>  None
 *
 *   <b> Pre Condition </b>
 *   @n  None
 *
 *   <b> Post Condition </b>
 *   @n  RHCLKRST and RCLKRST bits will be reset in GBLCTL.
 *
 *   @b  Modifies
 *   @n  GBLCTL register.
 *
 *   @b Example
 *   @verbatim
                
        CSL_mcaspResetRcvClk (hMcasp);
        
     @endverbatim
 * ============================================================================
 */
static inline
void CSL_mcaspResetRcvClk (
    CSL_McaspHandle hMcasp
)
{
	/* Reset AHCLKRCTL */
	CSL_FINST (hMcasp->regs->AHCLKRCTL, MCASP_GBLCTL_RHCLKRST, RESET);
	/* Reset ACLKRCTL */
	CSL_FINST (hMcasp->regs->ACLKRCTL, MCASP_GBLCTL_RCLKRST, RESET);
}

/** ===========================================================================
 *   @n@b CSL_mcaspResetXmtClk
 *
 *   @b Description
 *   @n This function resets the transmit clock circuitry
 *
 *   @b Arguments
 *   @verbatim
            hMcasp          Handle to the McASP instance
     @endverbatim
 *
 *   <b> Return Value </b>  None
 *
 *   <b> Pre Condition </b>
 *   @n  None
 *
 *   <b> Post Condition </b>
 *   @n  XHCLKRST and XCLKRST bits in GBLCTL will be reset.
 *
 *   @b  Modifies
 *   @n  GBLCTL register.
 *
 *   @b Example
 *   @verbatim
                
        CSL_mcaspResetXmtClk (hMcasp);
        
     @endverbatim
 * ============================================================================
 */
static inline
void CSL_mcaspResetXmtClk (
    CSL_McaspHandle         hMcasp
)
{
	/* Reset AHCLKXCTL */
	CSL_FINST (hMcasp->regs->AHCLKXCTL, MCASP_GBLCTL_XHCLKRST, RESET);
	/* Reset ACLKXCTL */
	CSL_FINST (hMcasp->regs->ACLKXCTL, MCASP_GBLCTL_XCLKRST, RESET);
}

/** ===========================================================================
 *   @n@b CSL_mcaspSetRcvClk
 *
 *   @b Description
 *   @n This function configures the receive clock circuitry with specified
 *      values
 *
 *   @b Arguments
 *   @verbatim
            hMcasp          Handle to the McASP instance
            
            rcvClkSet       value to be loaded into receive clock circuitry
     @endverbatim
 *
 *   <b> Return Value </b>  None
 *
 *   <b> Pre Condition </b>
 *   @n  None
 *
 *   <b> Post Condition </b>
 *   @n  ACLKRCTL, AHCLKRCTL, RCLKCHK register will be loaded with the
 *       specified values.
 *
 *   @b  Modifies
 *   @n  GBLCTL, ACLKRCTL, AHCLKRCTL, RCLKCHK registers
 *
 *   @b Example
 *   @verbatim

⌨️ 快捷键说明

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