langlangago 发表于 2024-1-29 11:18:27

有关ADC+DMA+USB虚拟串口传输相关问题

本帖最后由 langlangago 于 2024-1-29 11:19 编辑

当使用定时器触发ADC采集,使用DMA传输,定义全局变量DMA缓存区buffer,大小为128个数组,采用双缓冲区设计即一个缓存区64个数组,当使用USB VCP打印到串口调试助手上显示的时候,本来应该显示一组64个数值,但是实际显示只有几个数据。

eric2013 发表于 2024-1-29 13:58:04

ADC的DMA RAM空间关闭Cache,另外不要使用0x2000 0000地址空间,这个空间不支持通用DMA。

别的地方应该没问题了。

langlangago 发表于 2024-1-29 22:43:00

我现在使用DMA半传输完成中断和传输完成中断,但是我定义的128个数组的DMA缓冲区只能一次性全发送,不会乒乓发送,我怀疑是DMA传输的速度太快,而使用的USB VCP传输太慢,这个怎么解决?

AiK 发表于 2024-1-30 08:43:33

langlangago 发表于 2024-1-29 22:43
我现在使用DMA半传输完成中断和传输完成中断,但是我定义的128个数组的DMA缓冲区只能一次性全发送,不会乒 ...

DMA传输完成中断里面,先关闭定时器,后面在USB传输完成里面打开,从新开始ADC触发

langlangago 发表于 2024-2-1 11:05:45

AiK 发表于 2024-1-30 08:43
DMA传输完成中断里面,先关闭定时器,后面在USB传输完成里面打开,从新开始ADC触发

多谢答疑!我尝试一下
页: [1]
查看完整版本: 有关ADC+DMA+USB虚拟串口传输相关问题