请教下:
现要在C6416上做GPIO触发EDMA搬运,源地址为FPGA内建FIFO(EMIFB访问),目标地址为SDRAM;用GP0上升沿触发;EDMA配置为1D-1D,SUM_INC,DUM_INC,FS=1模式,LINK_YES(测试时用),但是从FIFO读进来的数据总是不对,不知道是不是EDMA配置的原因?
但同样的硬件在GPIO中断中用DAT_CPY逐行读FIFO数据没问题.所以想请教下对于我的应用方式EDMA应该如何配置?
另外想问下如果GPIO上升沿触发EDMA,是否只需要使能GPIO并配置为INPUT,GPIO_MaskHighSet(…),GPIO_IntPriority(…)上升沿触发中断?
谢谢!
Shane Huang1:
请问是在SYS/BIOS下编程吗?EDMA可以配置成GPIO事件触发的。其他配置和手动触发是一样的
neal yang:
回复 Shane Huang1:
你好!
没有用BIOS,只是做了个简单的测试程序;
用GP触发EDMA搬运方式从FIFO读出来的数据不对(硬件连接和EMIFB的配置应该没问题,因为在GP中断中用DAT_CPY从FIFO读过来的数据没问题,EDMA配置为1D-1D模式,SUM_IN,DUM_IN),另外把源地址改为指向SDRM,读到的数据也没问题.
因为FIFO的位宽为8-bit,所以最初ESIZE配置为8BIT,后来改为32BIT,ELE_CNT/4,读出来的数据和ESIZE=8-BIT也不一样,不过ESIZE=32-BIT时候读出来的数据感觉更接近真实测试数据,只是数据会越来越偏移;不知道这种情况是不是EDMA配置不正确导致?
另外想问下,GP上升沿触发EDMA响应是不是会非常快,上升沿到后几乎立刻(延迟为nS级)就会开始EDMA数据搬运?
谢谢!!