This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Mcbsp两次发送数据间隔时间较长



大家好!

目前在调试Mcbsp接口,使用中发现连续调用例程中的函数mcbspSubmitChan发送数据,两次间隔时间较长,达到100ms左右。请问是否有方法改进其间隔时间,使其达到3ms内?

具体配置如下:

#define NUM_BUFS 1 /* Max of 2 outstanding requests */
#define BUFSIZE 2048 /* 1K of data transceive */
#define NUM_OF_CHANNELS 1//8 /* Number of slots to be used */

Mcbsp_srgConfig mcbspSrgCfg =
{
FALSE, /* No gsync to be used as input is not CLKS */
Mcbsp_ClkSPol_RISING_EDGE, /* Dont care as input clock is not clks */
Mcbsp_SrgClk_CLKCPU, /* McBSP internal clock to be used */
166666667, /* Mcbsp internal clock frequency(PLL-SYSCLK6) */
0 /* frame sync pulse width (val+1) is used */
};
//
///**
// * \brief Mcbsp device creation default parameters.
// *
// */
const Mcbsp_Params Mcbsp_PARAMS =
{
Mcbsp_DevMode_McBSP, /* Use the device as MCBSP */
Mcbsp_OpMode_DMAINTERRUPT, /* Use DMA mode of operation */
TRUE, /* cache coherency taken care of by driver */
Mcbsp_EmuMode_SOFT_STOP, /* Soft mode is to be enabled */
Mcbsp_Loopback_DISABLE, /* Loop back mode disabled */
&mcbspSrgCfg, /* sample rate generator configuration */
NULL, /* TX pending buffer queue from application */
NULL, /* TX floating buffer queue in DMA */
NULL, /* RX pending buffer queue from application */
NULL /* RX floating buffer queue in DMA */
};
//
#pragma DATA_ALIGN(loopJob, MCBSP_MAX_CACHE_ALIGN)
static Int32 loopJob[16] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
};
//
///**< settings to configure the TX or RX hardware sections */
Mcbsp_DataConfig mcbspChanConfig =
{
Mcbsp_Phase_SINGLE,
Mcbsp_WordLength_32,
Mcbsp_WordLength_32, /* Dont care for single phase*/
NUM_OF_CHANNELS,
NUM_OF_CHANNELS, // Only using single phase, hence num channels is 0
Mcbsp_FrmSync_DETECT,
Mcbsp_DataDelay_0_BIT,//Mcbsp_DataDelay_1_BIT,
Mcbsp_Compand_OFF_MSB_FIRST,
Mcbsp_BitReversal_DISABLE,
Mcbsp_IntMode_ON_SYNCERR,
Mcbsp_RxJust_RZF, /* Dont care for TX */
Mcbsp_DxEna_OFF
};
//
/**< clock setup for the TX section */
Mcbsp_ClkSetup mcbspClkConfigTx =
{
Mcbsp_FsClkMode_INTERNAL,
1000000, /* 96KHz */
Mcbsp_TxRxClkMode_INTERNAL,
Mcbsp_FsPol_ACTIVE_HIGH,
Mcbsp_ClkPol_FALLING_EDGE
};

/**< clock setup for the RX section */
Mcbsp_ClkSetup mcbspClkConfigRx =
{
Mcbsp_FsClkMode_EXTERNAL,
1000000, /* 96KHz */
Mcbsp_TxRxClkMode_EXTERNAL,
Mcbsp_FsPol_ACTIVE_HIGH,
Mcbsp_ClkPol_RISING_EDGE
};

/**< Multi channel setup */
Mcbsp_McrSetup mcbspMultiChanCtrl =
{
Mcbsp_McmMode_ALL_CHAN_ENABLED_UNMASKED,
Mcbsp_PartitionMode_CHAN_0_15,
Mcbsp_PartitionMode_CHAN_16_31,
Mcbsp_PartitionMode_2
};

Mcbsp_ChanParams mcbspChanparamTx =
{
Mcbsp_WordLength_32, /* wordlength configured */
&loopJob[0], /* loop job buffer internal */
8, /* user loopjob length */
NULL, /* global error callback */
NULL, /* edma Handle */
1, /* EDMA event queue */
8, /* hwi number */
Mcbsp_BufferFormat_1SLOT,//Mcbsp_BufferFormat_MULTISLOT_NON_INTERLEAVED,
TRUE, /* FIFO mode enabled */
&mcbspChanConfig, /* channel configuration */
&mcbspClkConfigTx, /* clock configuration */
&mcbspMultiChanCtrl, /* multi channel control */
0x00,
0x00,
0x00,
0x00
};

Mcbsp_ChanParams mcbspChanparamRx =
{
Mcbsp_WordLength_32, /* wordlength configured */
&loopJob[0], /* loop job buffer internal */
8, /* user loopjob length */
NULL, /* global error callback */
NULL, /* edma Handle */
2, /* EDMA event queue */
8, /* hwi number */
Mcbsp_BufferFormat_1SLOT,//Mcbsp_BufferFormat_MULTISLOT_NON_INTERLEAVED,
TRUE, /* FIFO mode enabled */
&mcbspChanConfig, /* channel configuration */
&mcbspClkConfigRx, /* clock configuration */
&mcbspMultiChanCtrl, /* multi channel control */
0x00,
0x00,
0x00,
0x00
};

具体工程见附件。

谢谢

mcbsp.rar