您好:
6670的通道寄存器,分为Global region channel寄存器和Shadow region channel 寄存器,我若设置Global region 中的IER.I0寄存器(偏移为1050)位为1,同时设置DRAE0.E0为1,即使能了shadow region 0,为什么查看内存地址偏移2050出相应位也会被置成1呢,这个要怎么理解,他们是不同的地址,而我只写了其中的一处,另外一处地址中的值也相应的发生了改变?
若是这样是不是表明同一个通道不能同时在不同的shadow region中被使能呢,如我同时使能DRAE0.E0和DRAE1.E0,若我通过Global region设置了IER.I0,那么就会同时产生中断EDMA3_CC m _INT0和EDMA3_CC m _INT1,这样理解对吗?
求解答,谢谢!!
Allen35065:
你需要达到什么样的效果?顾名思义,Global Region可以控制所有的channel,但可以根据DRAE分配不同的channel到不同的Shadow Region,你可以分配同一个通道到不同的shadow region,当然会在不同的shadow region产生事件。
chen lisa:
回复 Allen35065:
谢谢您的解答:
我想实现的是6670的四个核可以共用edma3cc1通道中的16个通道(DMA channel 0到DMA channel 15),如核0使用了通道1,在其完成传输后,核1也可以使用通道1进行传输,但要求核0在使用通道1产生传输完成中断的时候,核1不能产生通道1的传输完成中断。
我目前是将四个核分别与四个shadow region相对应,如核0控制shadow region 0 分配的16个通道寄存器,相应实现是将DRAE0.E0到DRAE0.E15置1,以此类推各个核。但这样做,会使得核0在使用channel 0 产生传输完成中断的时候,核1也会产生channel 0的传输完成中断,但实际上核1还并未使用channel 0发起数据传输。
Allen35065:
回复 chen lisa:
你可以在核0用CH1的时候Disable CH1对应其他核的传输完成中断来满足你的要求。