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

📄 csl_mcaspaux.h

📁 基于ti tms320c672x下音频开发例子程式
💻 H
📖 第 1 页 / 共 5 页
字号:

/** ===========================================================================
 *   @n@b CSL_mcaspResetRcvFSRst
 *
 *   @b Description
 *   @n This function resets the receive frame sync generator reset enable bit
 *      of receive global control register
 *
 *   @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  RGBLCTL register will be loaded with the specified value
 *
 *   @b  Modifies
 *   @n  RGBLCTL register
 *
 *   @b Example
 *   @verbatim
        CSL_mcaspResetRcvFSRst (hMcasp);
        
     @endverbatim
 * ============================================================================
 */
static inline
void CSL_mcaspResetRcvFSRst (
    CSL_McaspHandle     hMcasp
)
{
    CSL_FINST (hMcasp->regs->RGBLCTL, MCASP_RGBLCTL_RFRST, RESET);
}

/** ===========================================================================
 *   @n@b CSL_mcaspConfigAudioMute
 *
 *   @b Description
 *   @n This function configures the AMUTE register with specified values
 *
 *   @b Arguments
 *   @verbatim
            hMcasp          Handle to the McASP instance

            audioMute       Value to be loaded to the register
     @endverbatim
 *
 *   <b> Return Value </b>  None
 *
 *   <b> Pre Condition </b>
 *   @n  None
 *
 *   <b> Post Condition </b>
 *   @n  AMUTE register will be loaded with the specified value
 *
 *   @b  Modifies
 *   @n  AMUTE register
 *
 *   @b Example
 *   @verbatim
        Uint32  audioMute;
        
        audioMute = 0x00000010;
        CSL_mcaspConfigAudioMute (hMcasp, audioMute);
        
     @endverbatim
 * ============================================================================
 */
static inline
void CSL_mcaspConfigAudioMute (
    CSL_McaspHandle     hMcasp,
    Uint32              audioMute
)
{
    /* Configure AMUTE register */
    hMcasp->regs->AMUTE = (Uint16) audioMute;
}

/** ===========================================================================
 *   @n@b CSL_mcaspConfigLoopBack
 *
 *   @b Description
 *   @n This function sets the digital loopback mode
 *
 *   @b Arguments
 *   @verbatim
            hMcasp          Handle to the McASP instance

            loopBack        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  GBLCTL and DLBCTL register will be loaded with the specified value
 *
 *   @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
 *

⌨️ 快捷键说明

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