硬汉嵌入式论坛

 找回密码
 立即注册
查看: 339|回复: 4
收起左侧

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

[复制链接]

4

主题

13

回帖

25

积分

新手上路

积分
25
发表于 2024-1-29 11:18:27 | 显示全部楼层 |阅读模式
本帖最后由 langlangago 于 2024-1-29 11:19 编辑

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2024-1-29 13:58:04 | 显示全部楼层
ADC的DMA RAM空间关闭Cache,另外不要使用0x2000 0000地址空间,这个空间不支持通用DMA。

别的地方应该没问题了。
回复

使用道具 举报

4

主题

13

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2024-1-29 22:43:00 | 显示全部楼层
我现在使用DMA半传输完成中断和传输完成中断,但是我定义的128个数组的DMA缓冲区只能一次性全发送,不会乒乓发送,我怀疑是DMA传输的速度太快,而使用的USB VCP传输太慢,这个怎么解决?
回复

使用道具 举报

3

主题

28

回帖

37

积分

新手上路

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

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

使用道具 举报

4

主题

13

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2024-2-1 11:05:45 | 显示全部楼层
AiK 发表于 2024-1-30 08:43
DMA传输完成中断里面,先关闭定时器,后面在USB传输完成里面打开,从新开始ADC触发

多谢答疑!我尝试一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 04:52 , Processed in 0.304221 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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