📄 csl_mcbspgethwsetup.c
字号:
/** \file csl_mcbspGetHwSetup.c
*
* \brief File for functional layer of CSL API \a CSL_mcbspGetHwSetup()
*
* Description
* - The \a CSL_mcbspGetHwSetup() function contains definition of the
* functional layer API
*
* Path: \\(CSLPATH)\\ipmodules\\mcbsp\\src
*
*/
#include <csl_mcbsp.h>
/**
* Gets the status of some or all of the setup-parameters of MCBSP.
* To get the status of complete MCBSP h/w setup, all the sub-structure
* pointers inside the main HwSetup structure, should be non-NULL.
*
* <b> Usage Constraints: </b>
* Both @a CSL_mcbspInit() and @a CSL_mcbspOpen() must be called successfully
* in that order before @a CSL_mcbspGetHwSetup() can be called.
*
* @b Example:
* @verbatim
CSL_McbspHandle hMcbsp;
CSL_Status status;
CSL_McbspGlobalSetup gblSetup;
CSL_McbspClkSetup clkSetup;
CSL_McbspEmu emuMode;
CSL_McbspHwSetup readSetup = {
&gblSetup,
NULL, // RX Data-setup structure is not required
NULL, // TX Data-setup structure is not required
&clkSetup,
NULL, // Multichannel-setup structure is not required
emuMode
};
...
status = CSL_mcbspGetHwSetup(hMcbsp, &readSetup);
@endverbatim
*
* @return Status of the operation
*
*/
#pragma CODE_SECTION (CSL_mcbspGetHwSetup, ".text:csl_section:mcbsp");
CSL_Status CSL_mcbspGetHwSetup(
/** MCBSP handle returned by successful 'open' */
CSL_McbspHandle hMcbsp,
/** Pointer to @a CSL_McbspHwSetup structure to read the setup parameters*/
CSL_McbspHwSetup *myHwSetup
)
{
CSL_Status status = CSL_SOK;
CSL_McbspRegsOvly mcbspRegs = hMcbsp->regs;
if (myHwSetup->global != NULL)
{
CSL_McbspGlobalSetup *gbl = myHwSetup->global;
gbl->dlbMode = (CSL_McbspDlbMode) CSL_FEXT(mcbspRegs->SPCR,
MCBSP_SPCR_DLB);
gbl->clkStopMode = (CSL_McbspClkStp) CSL_FEXT(mcbspRegs->SPCR,
MCBSP_SPCR_CLKSTP);
gbl->ioEnableMode = (CSL_McbspIOMode) ( CSL_FEXT(mcbspRegs->PCR,
MCBSP_PCR_RIOEN)
| (CSL_FEXT(mcbspRegs->PCR,
MCBSP_PCR_XIOEN)
<< 1)
);
}
if (myHwSetup->rxdataset != NULL)
{
CSL_McbspDataSetup *data = myHwSetup->rxdataset;
data->phaseNum = (CSL_McbspPhase) CSL_FEXT(mcbspRegs->RCR,
MCBSP_RCR_RPHASE);
data->wordLength1 = (CSL_McbspWordLen) CSL_FEXT(mcbspRegs->RCR,
MCBSP_RCR_RWDLEN1);
data->wordLength2 = (CSL_McbspWordLen) CSL_FEXT(mcbspRegs->RCR,
MCBSP_RCR_RWDLEN2);
data->frmLength1 = CSL_FEXT(mcbspRegs->RCR, MCBSP_RCR_RFRLEN1)
+ 1;
data->frmLength2 = CSL_FEXT(mcbspRegs->RCR, MCBSP_RCR_RFRLEN2)
+ 1;
data->frmSyncIgn = (CSL_McbspFrmSync) CSL_FEXT(mcbspRegs->RCR,
MCBSP_RCR_RFIG);
data->compand = (CSL_McbspCompand) CSL_FEXT(mcbspRegs->RCR,
MCBSP_RCR_RCOMPAND);
data->dataDelay = (CSL_McbspDataDelay) CSL_FEXT(mcbspRegs->RCR,
MCBSP_RCR_RDATDLY);
data->rjust_dxenable =
(CSL_McbspRjustDxena) CSL_FEXT(mcbspRegs->SPCR,
MCBSP_SPCR_RJUST);
data->IntEvent = (CSL_McbspIntMode) CSL_FEXT(mcbspRegs->SPCR,
MCBSP_SPCR_RINTM);
data->wordReverse = (CSL_McbspBitReversal)CSL_FEXT (mcbspRegs->RCR,
MCBSP_RCR_RWDREVRS);
}
if (myHwSetup->txdataset != NULL)
{
CSL_McbspDataSetup *data = myHwSetup->txdataset;
data->phaseNum = (CSL_McbspPhase) CSL_FEXT(mcbspRegs->XCR,
MCBSP_XCR_XPHASE);
data->wordLength1 = (CSL_McbspWordLen) CSL_FEXT(mcbspRegs->XCR,
MCBSP_XCR_XWDLEN1);
data->wordLength2 = (CSL_McbspWordLen) CSL_FEXT(mcbspRegs->XCR,
MCBSP_XCR_XWDLEN2);
data->frmLength1 = CSL_FEXT(mcbspRegs->XCR, MCBSP_XCR_XFRLEN1)
+ 1;
data->frmLength2 = CSL_FEXT(mcbspRegs->XCR, MCBSP_XCR_XFRLEN2)
+ 1;
data->frmSyncIgn = (CSL_McbspFrmSync) CSL_FEXT(mcbspRegs->XCR,
MCBSP_XCR_XFIG);
data->compand = (CSL_McbspCompand) CSL_FEXT(mcbspRegs->XCR,
MCBSP_XCR_XCOMPAND);
data->dataDelay = (CSL_McbspDataDelay) CSL_FEXT(mcbspRegs->XCR,
MCBSP_XCR_XDATDLY);
data->rjust_dxenable =
(CSL_McbspRjustDxena) CSL_FEXT(mcbspRegs->SPCR,
MCBSP_SPCR_DXENA);
data->IntEvent = (CSL_McbspIntMode) CSL_FEXT(mcbspRegs->SPCR,
MCBSP_SPCR_XINTM);
data->wordReverse = (CSL_McbspBitReversal)CSL_FEXT (mcbspRegs->XCR,
MCBSP_XCR_XWDREVRS);
}
if (myHwSetup->clkset != NULL)
{
CSL_McbspClkSetup *clk = myHwSetup->clkset;
clk->frmSyncRxMode = (CSL_McbspFsClkMode) CSL_FEXT(mcbspRegs->PCR,
MCBSP_PCR_FSRM);
clk->frmSyncTxMode = (CSL_McbspFsClkMode) CSL_FEXT(mcbspRegs->PCR,
MCBSP_PCR_FSXM);
clk->frmSyncRxPolarity = (CSL_McbspFsPol) CSL_FEXT(mcbspRegs->PCR,
MCBSP_PCR_FSRP);
clk->frmSyncTxPolarity = (CSL_McbspFsPol) CSL_FEXT(mcbspRegs->PCR,
MCBSP_PCR_FSXP);
clk->clkRxMode = (CSL_McbspTxRxClkMode) CSL_FEXT(mcbspRegs->PCR,
MCBSP_PCR_CLKRM);
clk->clkTxMode = (CSL_McbspTxRxClkMode) CSL_FEXT(mcbspRegs->PCR,
MCBSP_PCR_CLKXM);
clk->clkRxPolarity = (CSL_McbspClkPol) CSL_FEXT(mcbspRegs->PCR,
MCBSP_PCR_CLKRP);
clk->clkTxPolarity = (CSL_McbspClkPol) CSL_FEXT(mcbspRegs->PCR,
MCBSP_PCR_CLKXP);
clk->srgFrmPulseWidth = CSL_FEXT(mcbspRegs->SRGR, MCBSP_SRGR_FWID);
clk->srgFrmPeriod = CSL_FEXT(mcbspRegs->SRGR, MCBSP_SRGR_FPER);
clk->srgClkDivide = CSL_FEXT(mcbspRegs->SRGR, MCBSP_SRGR_CLKGDV);
clk->srgClkSync = (CSL_McbspClkgSyncMode) CSL_FEXT(mcbspRegs->SRGR,
MCBSP_SRGR_GSYNC);
clk->srgInputClkMode =
(CSL_McbspSrgClk) ( CSL_FEXT(mcbspRegs->SRGR, MCBSP_SRGR_CLKSM)
| (CSL_FEXT(mcbspRegs->PCR, MCBSP_PCR_SCLKME)
>> 0x1 )
);
clk->srgClkPolarity = (CSL_McbspClkPol) CSL_FEXT(mcbspRegs->SRGR,
MCBSP_SRGR_CLKSP);
clk->srgTxFrmSyncMode =
(CSL_McbspTxFsMode) CSL_FEXT(mcbspRegs->SRGR, MCBSP_SRGR_FSGM);
}
if (myHwSetup->mulCh != NULL)
{
CSL_McbspMulChSetup *mulch = myHwSetup->mulCh;
mulch->rxMulChSel = CSL_FEXT(mcbspRegs->MCR, MCBSP_MCR_RMCM);
mulch->txMulChSel = CSL_FEXT(mcbspRegs->MCR, MCBSP_MCR_XMCM);
mulch->rxPartition = (CSL_McbspPartMode) CSL_FEXT(mcbspRegs->MCR,
MCBSP_MCR_RMCME);
mulch->rxPartABlk = (CSL_McbspPABlk) CSL_FEXT(mcbspRegs->MCR,
MCBSP_MCR_RPABLK);
mulch->rxPartBBlk = (CSL_McbspPBBlk) CSL_FEXT(mcbspRegs->MCR,
MCBSP_MCR_RPBBLK);
mulch->txPartition = (CSL_McbspPartMode) CSL_FEXT(mcbspRegs->MCR,
MCBSP_MCR_XMCME);
mulch->txPartABlk = (CSL_McbspPABlk) CSL_FEXT(mcbspRegs->MCR,
MCBSP_MCR_XPABLK);
mulch->txPartBBlk = (CSL_McbspPBBlk) CSL_FEXT(mcbspRegs->MCR,
MCBSP_MCR_XPBBLK);
mulch->rx512channel = CSL_FEXT (mcbspRegs->MCR, MCBSP_MCR_REMODE);
mulch->tx512channel = CSL_FEXT (mcbspRegs->MCR, MCBSP_MCR_XEMODE);
}
{
Uint16 tempValue;
tempValue = CSL_FEXT( mcbspRegs->SPCR, MCBSP_SPCR_SOFT)
| (CSL_FEXT( mcbspRegs->SPCR, MCBSP_SPCR_FREE) << 1);
if (tempValue == 3) tempValue = 2;
myHwSetup->emumode = (CSL_McbspEmu) tempValue;
}
myHwSetup->dxState = (CSL_McbspDxState)CSL_FEXT( mcbspRegs->MCR,
MCBSP_MCR_DX);
myHwSetup->rxsynccount = mcbspRegs->RSYNCCNT;
myHwSetup->txsynccount = mcbspRegs->XSYNCCNT;
myHwSetup->extendSetup = NULL;
return(status);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -