发 帖  
原厂入驻New
[问答] 怎么使用ADCHS和DMA的PIC32MK?
100 PIC32 DMA 控制器
分享
大家好,任何人都可以提供任何帮助都会非常感激。我试图ADHS模块与标准DMA控制器(不是集成控制器,它是ADC本身的一部分)一起工作,但运气不佳。频率3.2MHz。ADC设置为12bit,定时设置为3.5 MSPS。使用标准轮询方法和在数据就绪中断之后读取值都很好。我有DMA设置来使用数据就绪标志作为触发器读取ADCDATAX寄存器。DMA正在触发,如果启用,中断将按原样发生,但是我从ADCDATAX寄存器得到的所有信息都是零。我已经确保了源和目的地是物理地址,而不是虚拟地址,并且地址在调试时看起来是正确的。MA初始化代码:uint32_t srcptr=_PLIB_VirtToToPhys((const无效*)&;ADCDATA4);SYS_DMA_信道传输集(iScanData.dmaCdmaCh3Handle(iScanData.dmaCh3Handle,(const void*)smaCdmaCh3Handle,(const void*)sccmaCh3Handh3Handle,(const void*)scdmaCdmaCdmaCh3Handh3Handle,(const void**)sccdmaCdmaCh3Handh3Handh3Handle,(const void***)sccdmaCddmaCddddddmaDDDDCHANNEL_OP_MODE_AUTO,DMA_trigger这是不起作用的。但是,如果我将DMA指向系统内存中的某个位置,它就会正常工作,并返回正确的数据值:静态uint32_t值=256;uint32_t srcptr=(uint32_t)&value;它工作得很好。任何关于如何从ADC读取它的建议都非常感谢。我使用的是HARMony 2.06、XC32 2.10和PIC32MK1024MCF064。案例。
0
2020-3-24 10:09:29   评论 分享淘帖 邀请回答

相关问题

3个回答
深入挖掘(参考数据表第74页的表4-4),这是否是总线仲裁问题?如果我是对的,有人知道是否有可能给ADC模块提供DMA控制器读/写访问?
2020-3-24 10:25:04 评论

举报

常规DMA不能访问ADC寄存器,如表4-4所示。因此,任何试图让DMA从ADC获得数据的尝试都不起作用。ADC应该有自己的专用DMA,可以直接将数据复制到SRAM。但是我不能告诉您如何用ADC驱动程序和谐地设置它,但是PLIB_ADCHS_DMASetup、PLIB_ADCHS_DMASourceEnable和PLIB_ADCHS_DMAEnable函数可能有帮助。
2020-3-24 10:43:17 评论

举报

感谢拉里的回复,我得出了同样的结论,我也在努力让专用DMA工作。我原来没有走那条路的原因是我希望数据获取完全由DMA来处理,但是由于专用DMA被限制为128字缓冲器,所以我看不出没有使用标准中断的方法。当缓冲区是圆形的并且共享一个公共中断时,您无法确定哪个缓冲区已满,而不询问计数寄存器和调整缓冲指针。
2020-3-24 10:49:56 评论

举报

只有小组成员才能发言,加入小组>>

108个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表