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传输。
但是这样只第一次传输,也不中断,后面就不传输了?