"Thread:SysConfig"中讨论的其他器件
您好!
目前我正在研究 EDMA 的配置、以便 通过 FreeRTOS 自动传输 ADCINT 触发的 ADC 结果。
我所做的工作如下:
1) 1)导入了 r5fs0-0_FreeRTOS 项目、然后在 task_main 中、创建了几个周期性任务、即1ms、10ms、100ms、 它运行良好、
2)在 TASK_MAIN 配置的 EPWM0中 定期触发 ADC0 SOC ,而在 ADC_APP_ISR triggerd 中,转换的结果通过调用 API ADC_readResult ()来读取,运行良好。
该问题出现在以下情况后:
3) 3)我尝试添加 EDMA 通道以传输结果、我使用的配置几乎与示例 ADC_SoC_Continuous_DMA 相同、但是它不起作用。 目标缓冲区从不更新。
我检查了寄存器 TPCC0、它会查看已正确写入的 edmaParam 值。
我尝试创建 edmaParam1、 edmaParam2并调用 API 来链接这两个参数、但仍然无法正常工作。
更糟糕的是、如果我使用以下代码来保留 DMA 的中断函数、软件将进入中止、这无法确定调试期间软件被阻止的位置。 如果没有该中断 寄存器、软件可以运行、ePWM 和 ADC 可以工作、但 DMA 不工作。
/*寄存器中断*/
intrObj.tccNum = tccAlloc0;
intrObj.cbFxn =&App_dmach0ISR;
intrObj.AppData =(void *)&gEdmaTransferDoneSem;
状态= EDMA_registerIntr (gEdmaHandle[0]、&intrObj);
DebugP_ASSERT (STATUS = SYSTEMP_SUCCESS);
我的问题是:
1) 1)是否有一个在运行 FreeRTOS 的情况下使用 EDMA 实现类似函数以传输 ADC 结果的示例?
2) 2)如何解决这个问题、我应该在哪里检查我是否错过了某些内容或所有内容是否配置正确?
3) 3)是否可能由于导致问题的多个中断(ADC_ISR、DMA_ISR、RTI0)之间的冲突? 我应该配置中断的优先级、以及如何通过 SysConfig 进行设置?
非常感谢您的回复。
Lync












