|
板凳
楼主 |
发表于 2016-10-13 18:15:56
|
只看该作者
你好,我今天自己编程,发送和接收EDMA都采用乒乓方式,程序运行后,只有接收正常进入中断,但是发送一次都不进入中断。EDMA的设置如下,麻烦帮我看下是否有问题!
static struct EDMA3CCPaRAMEntry const PingxmtPar =
{
(unsigned int)(EDMA3CC_OPT_DAM | OPT_FIFO_WIDTH), // Opt
(unsigned int)pingxmt, // 源地址
(unsigned short)(BYTES_PER_SAMPLE), // aCnt
(unsigned short)(AUDIO_BUF_SIZE), // bCnt
(unsigned int) SOC_MCBSP_0_DXR_REGS, // 目标地址//20161012 CHANGE
(short) (BYTES_PER_SAMPLE), // 源 bIdx
(short)(0), // 目标 bIdx
(unsigned short)(Pongxmt_PaRAM_ID), // 链接地址
(unsigned short)(AUDIO_BUF_SIZE), // bCnt 重装值
(short)(0), // 源 cIdx
(short)(0), // 目标 cIdx
(unsigned short)1 // cCnt
};
static struct EDMA3CCPaRAMEntry const PingrcvPar =
{
(unsigned int)(EDMA3CC_OPT_SAM | OPT_FIFO_WIDTH), // Opt
(unsigned int)SOC_MCBSP_0_DRR_REGS, // 源地址 //20161012 CHANGE
(unsigned short)(BYTES_PER_SAMPLE), // aCnt 每个sample占用2个字节
(unsigned short)(AUDIO_BUF_SIZE), // bCnt 一行有1个元素
(unsigned int)pingrcv, // 目标地址
(short) (0), // 源 bIdx
(short)(BYTES_PER_SAMPLE), // 目标 bIdx 目标索引2个字节
(unsigned short)(Pongrcv_PaRAM_ID), // 链接地址 到第40个 paRAM
(unsigned short)(AUDIO_BUF_SIZE), // bCnt 重装值
(short)(0), // 源 cIdx
(short)(0), // 目标 cIdx
(unsigned short)1 // cCnt
};
还有一个问题,看到StarterWare例程中对EDMA的param的设置方式有两种,
EDMA3SetPaRAM(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCBSP0_RX, ¶mSet);
EDMA3SetPaRAM(SOC_EDMA30CC_0_REGS, (PAR_RX_START + idx), ¶mSet);
这两条语句有什么区别吗?麻烦解答一下! |
|