dsPic33a ADC触发DMA问题
我正在尝试设置一个简单的测试,使用DMA将ADC的采样传输到缓冲区。当缓冲区满时,我希望发生中断,这样我就可以通过UART发送样本。
我可以让ADC触发SCCP1事件。我通过测试转换完成位并将单个样本发送到UART来测试这一点。看起来ADC运行正常。https://forum.microchip.com/servlet/rtaImage?eid=a58V4000000JFY1&feoid=00N3l00000FRqlI&refid=0EMV4000004yytR
然而,无论如何我都无法让ADC触发DMA。或者,让DMA中断服务程序(ISR)触发。https://forum.microchip.com/servlet/rtaImage?eid=a58V4000000JFY1&feoid=00N3l00000FRqlI&refid=0EMV4000004yz4j
我在main()函数中设置DMA通道的源地址和目标地址。(已附上)
DMA应将500个样本传输到缓冲区,然后中断服务程序(ISR)应被调用。如果我在第31行设置了一个断点,它***无法被触发。我在这里是不是漏掉了什么很明显的事情? DMA如果直接使用ADC和串口,通道之间是否有干扰? 单片小菜 发表于 2025-4-11 15:40
DMA如果直接使用ADC和串口,通道之间是否有干扰?
这个不会有干扰的。没有问题的。 为了使DMA传输和触发DMA中断服务程序工作,我们可以逐步检查你的实现并确定可能的遗漏或设置问题。 ADC 触发 DMA 问题常表现为数据采集异常,如丢包、错位或不触发。多因配置错误:触发源选择不当(如未选正确 ADC 通道)、DMA 传输模式错(如循环 / 单次混淆)、优先级冲突,或 ADC 与 DMA 时钟不同步。需检查触发边沿、数据长度匹配,确保 DMA 中断使能正确,并用示波器验证触发信号时序。 dsPIC33A 的 ADC 触发 DMA 常遇问题:触发源配置错误,需正确设置 ADC 触发源(如定时器、外部信号);DMA 通道映射不当,要关联 ADC 缓冲区与 DMA 通道;优先级冲突,需合理配置 DMA 优先级。解决时检查 ADC 转换完成标志使能,确保 DMA 传输长度与 ADC 缓冲区匹配,用示波器验证触发信号。
页:
[1]