主题中讨论的其他器件:TM4C123
工具/软件:Code Composer Studio
我正在使用 CCS 7.0。 本质上、这是我尝试执行的操作的最简单的形式。 我们有一个有点快的38Khz 信号、我要在该信号中对数据进行采样。 中断时间比我想的要长。 我认为 DMA 很适合将结果转储到缓冲区中、在缓冲区已满时生成中断、然后处理数据。 但是,缓冲区中没有任何 ADC 数据。
此外、ADC 应在下降沿 GPIO 触发、但它似乎在需要时随时运行。 我不知道问题是否相关,因为我可以在实施 DMA 之前读取 ADC 值。
如果您需要、我有一个代码片段文件可供查看。 它只是大量尝试中的最新版本。 其中的大部分内容都来自搜索 TI 论坛和示例代码、同时还尝试了解数据表尝试解释的内容。
查看以下帖子、其中用户最终使 ADC DMA 正常工作、但这未解决问题:
我已按照此处列出的方式设置所有项目、但缓冲区中仍然没有数据。 根据我在数据表中读取的内容、当缓冲区半满时、DMA 应该会触发 ADC 中断处理程序。 (第585页) 我注册了 ADC 中断处理程序、但它从不会关闭。 它唯一的触发时间是我有 ADCIntEnable( ADC1_base,0);函数调用进入,但这不是我需要的行为,因为它忽略了 DMA。 即使暂停代码,也会显示缓冲区为空,因此它不仅仅是一个中断问题。
是否无法让 ADC 触发并通过 DMA 将值加载到缓冲器中? 那么、当 DMA 缓冲区半满时、是否获得一个中断来处理该数据?
