TI中文支持网
TI专业的中文技术问题搜集分享网站

C6748事件丢失寄存器EMR清除

EMR的bit14置位,写 1 到EMCR的bit14,为什么EMR没有清除,导致一直在EDMA的错误中断服务程序,EDMA只传输一次就停止了。请问下这个要怎么调试?

Shine:

请问您是怎么写EMCR寄存器的?写完后,没有新的Miss event发生吧?

fei jie:

回复 Shine:

HWREG(SOC_EDMA30CC_0_REGS + EDMA3CC_EMCR) = (1 << index);
HWREG(SOC_EDMA30CC_0_REGS + EDMA3CC_S_SECR(regionNum)) = (1 << index);

index仿真来看是对的,我单步调试,EMR的相应位没有任何变化。单步情况下应该没有新的miss event吧。

fei jie:

回复 Shine:

多问一句,为什么starterware的例程都是初始化一下EDMA,接收一次数据,就在回调函数里面关掉EDMA功能?如果是要连续接收或者发送数据,是不需要这样的吧?

Shine:

回复 fei jie:

试试直接用#define EMCR        *((volatile unsigned int *)(EDMA_CC_BASE + 0x0308))这种方式看能否写。

Shine:

回复 fei jie:

fei jie多问一句,为什么starterware的例程都是初始化一下EDMA,接收一次数据,就在回调函数里面关掉EDMA功能?如果是要连续接收或者发送数据,是不需要这样的吧?

fei jie:

回复 Shine:

好的。
现在我用EDMA的pingpong模式,SPI接收数据后经EDMA有两个PaRAM,PaRAM14和PaRAM46,看规格书是两个PaRAM的目的地址不一样,Link地址不一样即可。我使用了两个buffer,PaRAM14的Link地址是0x4000+46*32,PaRAM46的Link地址是0x4000+14*32.最后使能通道14即SPIRx的EDMA3传输。
但是这样只第一次传输,也不中断,后面就不传输了?

赞(0)
未经允许不得转载:TI中文支持网 » C6748事件丢失寄存器EMR清除
分享到: 更多 (0)