Other Parts Discussed in Thread: SYSCONFIG
主题中讨论的其他器件:SysConfig
我需要配置多个 ADC 通道以连续 读取电压并将样本存储到 RAM
所有通道的采样频率都需要约为200Hz。 因此、我想使用 DMA。
我正在 尝试对 TI-TMDSCNCD263-AM263x Sitara 控制卡进行概念验证。
SDK 示例似乎为 adc_soc_continuous_dma_am263x-cc_r5fss0-0_nortos_ti-arm-clang。
我有这个示例可以运行、但 SDK 示例填充 DMA 缓冲区、然后停止。 这不是我想要的。
我想要修改示例、以便应用层事件可以随时复制 DMA 缓冲区、从而获取最近样本的快照。 如果需要的话、暂时禁用中断来复制数据不是一个问题。
我 曾尝试 在 ISR 中删除函数调用(见此处)、我怀疑这可能会停止我想要的"从 ADC 到 DMA 的连续"。
void App_adcISR(void *args)
{
/* Remove ePWM trigger */
EPWM_disableADCTrigger(CONFIG_EPWM0_BASE_ADDR, EPWM_SOC_A);
/* Disable this interrupt from happening again */
ADC_disableInterrupt(gAdc1baseAddr, ADC_INT_NUMBER1);
}
void App_dmach0ISR(Edma_IntrHandle intrHandle, void *args)
{
SemaphoreP_Object *semObjPtr = (SemaphoreP_Object *)args;
DebugP_assert(semObjPtr != NULL);
/* Stop the ADCs by removing the trigger for SOC0 */
ADC_setInterruptSOCTrigger(gAdc1baseAddr, ADC_SOC_NUMBER0,
ADC_INT_SOC_TRIGGER_NONE);
ADC_setInterruptSOCTrigger(gAdc2baseAddr, ADC_SOC_NUMBER0,
ADC_INT_SOC_TRIGGER_NONE);
/* Post the semaphore to signal end of DMA transfer */
SemaphoreP_post(semObjPtr);
}
然而,当我在 App_dmach0ISR()中设置一个断点时,它只被命中一次。
请建议为实现 "到 DMA 的连续 ADC"、需要执行哪些操作。
