我没用CSL,自己写的程序,利用GPIO上升沿触发EDMA3的数据搬移,调试时发现给GPIO4管脚加方波后,可以从GPIO的IN_DATA的寄存器看见GPIO4的状态在变化,为什么EDMA3的事件寄存器 (ER/ERH)中没有该事件????
我的做法是:1. 初始化GPIO4为输入,并在SET_RIS_TRIG寄存器中设置上升沿触发;
2 初始化EDMA3时通过事件允许设置寄存器(EESR/EESRH)设置了事件允许寄存器(EER/EERH)中相应event10(应该对应GPINT4)。
是不是,event10对应的不是GPIO4 上升沿中断????
Andy Yin1:
你是需要将GPIO4配置为IN pin在上升沿产生事件驱动EDMA,我的理解在编程时需要:
1. 设置GPIO4 pin DIR为input pin;
2. 配置BITEN EN比特为1使能GPIO中断;
3. 设置SET_RIS_TRIG为上升沿触发;
4. GPIO4 事件会路由触发到EDMACC1、EDMACC2的channel10,在调试的时候为了确认GPIO4产生的时间被launch到ER中,可以首先不要置位EER,这样一旦有事件ER寄存器中相应bit就被置位;在确认被置位后,再置位EER相应bit继续测试。