|
CSL_init();
/* DSP调用芯片支持库初始化*/
IRQ_nmiEnable();
/* enable NMI and GI */
IRQ_globalEnable();
IRQ_setVecs(vectors);
/* point to the IRQ vector table */
IRQ_reset(IRQ_EVT_EDMAINT);
//禁止、清除相应的中断
EDMA_clearPram(0x00000000);
// 清除所有EDMA的配置RAM 区
hEdma12 = EDMA_open(EDMA_CHA_XEVT0, EDMA_OPEN_RESET);
//开启发送通道Channel 12 ,得到句柄
hEdma13 = EDMA_open(EDMA_CHA_REVT0, EDMA_OPEN_RESET);
//开启接收通道Channel 13 ,得到句柄
hMcbsp0 = MCBSP_open(MCBSP_DEV0, MCBSP_OPEN_RESET);
//打开通道 channel 0
ConfigEDMA();
IRQ_enable(IRQ_EVT_EDMAINT);
//使能EDMA中断
EDMA_intEnable(12);
//EDMA通道使能.enable EDMA int (CIER)
EDMA_intEnable(13);
EDMA_enableChannel(hEdma12);
//使能发送通道,事件使能寄存器( EER) 的bit12 置1
EDMA_enableChannel(hEdma13);
//使能发送通道,事件使能寄存器( EER) 的bit12 置1
ConfigMcBSP();
MCBSP_enableSrgr(hMcbsp0);
//使能采样率发生器,置GRST = 1
for (waittime=0; waittime < 0xFF; waittime++);
//应该是轮询检测XRDY和RRDY状态位,向发送寄存器写入待发送的数据,检查是否已经收到数据
MCBSP_enableXmt(hMcbsp0);
//使能发送器
MCBSP_enableRcv(hMcbsp0);
//使能接收器
MCBSP_enableFsync(hMcbsp0);
//使能帧同步信号发生器,置FRST = 1
IRQ_disable(IRQ_EVT_EDMAINT);
EDMA_RSET(CIER, 0x0);
MCBSP_close(hMcbsp0);
/* close McBSP 0 */
EDMA_close(hEdma12);
/* close EDMA 12 */
EDMA_close(hEdma13);
/* close EDMA 13 */
}
这段程序是我找的,我把他们注释了,我想知道是在打开EDMA通道之前就发送数据到McBSP了吗?
在IRQ_disable(IRQ_EVT_EDMAINT)之前传输数据,必须是在一个死循环中等待中断吗?
|
|