[开发资料] CW32的ADC视线DMA 扩展采样思路

[复制链接]
719|15
 楼主| forgot 发表于 2023-9-15 09:52 | 显示全部楼层 |阅读模式
AD, ADC, DM, DMA, cw
如果需要对超过 4 路的模拟量进行采样,则需要结合 DMA 的功能,以实现较少的 CPU 参与。其思路如下:
1.         ADC 配置为单通道单次转换,完成转换后硬件触发 DMA;
2.         DMA 的 CH1 用于将 ADC 的转换结果传输到 RAM 中,如将采样 6 个 ADC 通道,因此传输次数 CNT为 6,源地址固定为 ADC 的 RESULT0 寄存器,目的地址需要递增;
3.         DMA 的 CH2 用于更改 ADC 的采样通道,当 ADC 转换完成后,从 RAM 中取 ADC 的通道配置参数,自动配置 ADC 的寄存器值,因此源地址为 RAM,地址递增,目的地址为 ADC 的通道控制寄存器;
4.         DMA 的 CH3 用于再次启动 ADC,因为 ADC 配置为单次转换,当转换完成后,ADC 自动停止转换,所以需要通过 DMA 向 ADC 的转换启动寄存器置位,以再次启动 ADC 转换;
5.         DMA 的 CH1 传输完成后,ADC 的 6 路转换也完成了,并且转换结果也被传输到 RAM,可通过 CH1 的传输完成中断,将 DMA 的参数重新配置,就实现了多路 ADC 的循环采样;
6.         通过 ATIM 的比较通道 4,去触发 DMA 的 CH4,向 ADC 的转换启动寄存器置位,启动 ADC。


评论

CW32的ADC配合DMA扩展采样能够大幅提升数据采集效率  发表于 2025-10-10 14:17
磨砂 发表于 2025-10-12 16:53 | 显示全部楼层
DMA的作用:直接存储器存取允许外设与内存之间直接传输数据,无需CPU干预。这显著提升了数据传输效率,尤其适用于高速或大量数据的采集场景
晓伍 发表于 2025-10-12 19:08 | 显示全部楼层
由于ADC的规则组数据寄存器只有一个,多通道转换时若不及时取走数据会导致覆盖
八层楼 发表于 2025-10-12 21:21 | 显示全部楼层
配置为循环传输后,当数据量达到设定值会自动重置计数器并继续传输,适合连续采样的应用
观海 发表于 2025-10-13 08:03 | 显示全部楼层
需先开启RCC中对应的外设时钟,并为使用的DMA控制器分配通道
guanjiaer 发表于 2025-10-13 10:35 | 显示全部楼层
配置采样时间、参考电压源、转换模式及通道顺序
heimaojingzhang 发表于 2025-10-13 12:55 | 显示全部楼层
因ADC的数据存放在单一寄存器中,故外设地址应保持固定,而存储器地址需递增以存储多个采样值
szt1993 发表于 2025-10-13 13:23 | 显示全部楼层
CW32的ADC视线DMA 扩展采样
keaibukelian 发表于 2025-10-13 15:33 | 显示全部楼层
关键参数包括传输方向、数据对齐方式、突发长度等。对于多通道采集,需确保DMA缓冲区大小足够容纳所有通道的数据
paotangsan 发表于 2025-10-13 18:11 | 显示全部楼层
合理规划缓冲区大小,避免溢出或碎片化。可采用环形队列结构实现滚动存储
renzheshengui 发表于 2025-10-13 20:51 | 显示全部楼层
可在中断服务程序或主循环中处理缓冲区的数据,如计算平均值、最大值或进行FFT变换以提取频率特征
wowu 发表于 2025-10-14 08:45 | 显示全部楼层
在空闲时关闭未使用的ADC模块及DMA请求,减少动态电流消耗
小夏天的大西瓜 发表于 2025-10-14 13:37 | 显示全部楼层
DMA 扩展采样还是非常不错的速率操作
中国龙芯CDX 发表于 2025-10-24 14:30 | 显示全部楼层
CW32的ADC视线DMA 扩展采样思路
jf101 发表于 2025-11-6 13:10 | 显示全部楼层
ADC的规则组数据寄存器只有一个,一定要注意
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2157

主题

14873

帖子

59

粉丝
快速回复 在线客服 返回列表 返回顶部