TI 的工程师你们好。
我现在在使用C6670, 正在做AIF2的数据接收。 AIF2收到数据后, 会通过 PKTDMA 送到 RXQ , 我在RXQ上配置了 PDSP。本来是在PDSP收到2个 描述符的时候会给dsp出中断来处理, 现在为了提高效率想通过PDSP直接触发EDMA来做数据处理,代替原来的中断。但我看了下文档不知道怎么配置来把PDSP的event触发EDMA, 想问下工程师我的想法能不能实现,如果能实现的话应该配置哪些寄存器来实现?
谢谢各位的回复。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
TI 的工程师你们好。
我现在在使用C6670, 正在做AIF2的数据接收。 AIF2收到数据后, 会通过 PKTDMA 送到 RXQ , 我在RXQ上配置了 PDSP。本来是在PDSP收到2个 描述符的时候会给dsp出中断来处理, 现在为了提高效率想通过PDSP直接触发EDMA来做数据处理,代替原来的中断。但我看了下文档不知道怎么配置来把PDSP的event触发EDMA, 想问下工程师我的想法能不能实现,如果能实现的话应该配置哪些寄存器来实现?
谢谢各位的回复。
可以实现,6670手册165页,QM的事件映射到CIC1的输入,然后map到EDMA控制器事件上
你好, Allen Yin, 谢谢你的回复。
你所说的 QM事件是指 " QM_INT_HIGH_N " QM interrupt Event吗, 我需要的是配置PDSP,在pdsp pop 2个(有2根AIF2的天线,需要全部接收完才能触发EDMA)desc后使用PDSP的EVENT来触发EDMA。 是不是PDSP的32个channel所产生的EVENT就对应这个 QM_INT_HIGN_N (N=0..31)呢。
你好, Andy Yin1.
我对CIC这块不是很熟悉,下面是我理解的代码,不知道那里有问题触发不了EDMA.
//获得CIC1 handle CSL_CPINTC_Handle hInct1Handle = CSL_CPINTC_open(1); //我使用的是PDSP channel 5作为CIC1 input event. output使用EDMA 的 CC1 45 event, 即 CIC1_OUT2 CSL_CPINTC_mapSystemIntrToChanne(hInct1Handle, CSL_INTC1_QM_INT_HIGH_5, CSL_EDMA3CC1_INTC1_OUT2); //使能对应system event CSL_CPINTC_enableSysInterrupt(hIntc1Handle, CSL_INTC1_QM_INT_HIGH_5);
谢谢你的回复.
更新:
使用下面的代码可以正常触发EDMA 进行数据搬移,昨天是EDMA配置有误。 但是必须要 CSL_CPINTC_enableHostInterrupt(hIntc1Handle, 2); 这句话,我看很多实例中没有这句啊,“enableAllHost”难道不行吗?
上面的代码对应 output event应该理解错了,下面是我修改后的代码,
hIntc1Handle = CSL_CPINTC_open(1); CSL_CPINTC_disableAllHostInterrupt(hIntc1Handle); CSL_CPINTC_setNestingMode(hIntc1Handle, CPINTC_NO_NESTING); //使用channel 2对应CIC1_OUT2, 对应EDMA Table 8-36的45号event CSL_CPINTC_mapSystemIntrToChannel(hIntc1Handle, CSL_INTC1_QM_INT_HIGH_5, 2); CSL_CPINTC_enableSysInterrupt(hIntc1Handle, CSL_INTC1_QM_INT_HIGH_5); CSL_CPINTC_enableHostInterrupt(hIntc1Handle, 2); CSL_CPINTC_enableAllHostInterrupt(hIntc1Handle);
CSL_INTC1_QM_INT_HIGH_5对应着 CIC1 system event 142号,在RAW STATUS [4] 的bit14, 在pdsp channel收到数据前后可以读取该raw status bit被置位了, 但是对应的host event PRI_HINT_REG[2]却没有变化.