我的客户在使用 DMA 的3个通道上达到1 MSPS (实际上需要600kHz)速率时遇到问题。
我正在努力使 ADC14以每通道200kSPS 的速率运行,在3个通道之间交替运行,总速率为600kSPS。 我以48MHz 的频率运行,让 Timer_A 触发 ADC 样本,在3个模拟通道之间循环。 仅使用 ADC 中断而不使用 DMA,我接近600kSPS 的速率,但缺少样片,正如预期的那样。 我通过这种方式(不带 DMA)开始将输入线路、时钟和 ADC 按我的要求工作。 现在,我正在尝试将 DMA 合并到混合中。
我需要 DMA 来处理2种传输场景: (1)直接进入 SPI TX、(2)直接进入本地 RAM 阵列(用于 SPI 传输前的预处理步骤)。
我已经绘制了 Project|Examples|Resource Explorer 的轮廓,但没有看到任何这种复杂的东西。 是否还有其他示例来源?
显然,只有1个 DMA 通道支持由 ADC 触发(DMA 通道7)。 如果我正在对3个通道(A0-A2)进行采样,则在扫描完所有3个通道后 DMA 将被触发,因此将发生3个传输,并且 DMA 中断将关闭。 然后、在 DMA 中断中、我必须更新目标地址以向下移动3个条目。 这需要太长的时间、因此缺少样本。
您以多快的速度运行处理器? [48MHz]
运行 ADC 的分辨率是多少? [14位]
您的 ADC14CLK 是什么? [24MHz]
您的 ADDC 14PDIV 是什么? [我不知道这是什么;使用 ADC_divider _2)
您使用的是什么时钟源? [MCLK]
SLAA707.pdf 看起来很相关、但在审查后对客户不有用。
可根据要求提供代码以供内部审查。
谢谢!
Blake