您好,
我在C6670 simulator条件下,想要在单核上同时调用FFTC A、FFTC B,两个instance均初始化并且进行了Fftc_Open、TxOpen、RxOpen,但在接收端获取结果出错。发现程序是在进入中断函数Fftc_rxHiPriorityRxISR()里面,在获取结果Descripor时,从pRxObjInfo->pHiPrioAccList得到的描述符为空,不知道为什么会有取不到描述符的情况。单核调用一个instance是没有问题的。参考了TI FFTC多实例的的例子工程FFTC_MultiInst_testProject(),将配置按照例子工程中的修改后,仍然出现以上问题。
不知道在单核调用两个FFTC instance需要进行哪些配置的修改,需要注意哪些方面?
请各位指点,非常感谢!
Allen35065:
你好,根据你的流程和现象描述无法确定你的问题, 使用2个不同的FFTC的初始化流程与使用单个FFTC 一致, 不过你的FFTCA 和FFTCB 是否设置相同的接收队列?如果是相同RX队列,则你可以按照设置单个HiPriorityRXISR 的方式去设置中断,因为中断检测只针对单个RX队列,对于包从A还是B出来并没有关系。
如果你使用的是两个接收队列接收A和B的结果,则你需要设置不同的通道和不同的RX ISR,你可以在Navigator的文档里找到相应的知识。
huan zhang:
回复 Allen35065:
Allen Yin
你好,
我是使用的两个接收队列分别接收A、B的结果,也设置了不同的通道和不同的ISR。现在是调用两个FFTC的TASK让其循环多次跑,第一次循环可以正确跑通,而在循环到第二圈时,就会出现我上面说的情况,会在RX ISR中得到一个空描述符。还有一个现象是,我在FFTC的发送端处加一条System_printf的log打印,则循环多次竟然是都可以跑通的,不知道怎么解释这种现象。并且打印只加在发送端有效,在接收端或其他地方都还是只能跑通一次。但实际情况时,我们是不能加入System_printf,加入会增加额外的开销。
请指教,谢谢!
Allen35065:
回复 huan zhang:
如果延迟发送能够正确循环,你需要检查是否你的ISR里有没有完成读出描述符和清除状态的动作,导致你下一次的包不能送入。
你可以加上一些系统log,观察你送包和中断处理的时间,来判断你的系统流程是否正确。