学习发财财财 发表于 2024-3-4 18:07:19

STC32G ADC+DMA

根据官方文档,我尝试了一下7通道的ADC+DMA,DMA转换次数选择为4次,但是在最后将ADC两字节数据还原到0~4095时数据出现了问题。
最后我发现把偏移地址再加个(m - 1)就对了,是不是官方文档有问题?

神农鼎 发表于 2024-3-7 13:08:18








/************************************************************************************************

本例程基于STC32G为主控芯片的实验箱进行编写测试。

使用Keil C251编译器,Memory Model推荐设置XSmall模式,默认定义变量在edata,单时钟存取访问速度快。

edata建议保留1K给堆栈使用,空间不够时可将大数组、不常用变量加xdata关键字定义到xdata空间。

0~7通道对应P1.0~P1.7, 8~14通道对应P0.0~P0.6, 15通道为内部1.19V基准电压做输入的ADC值.

初始化时先把要ADC转换的引脚设置为高阻输入.

设置数据批量传输(DMA)功能,所有通道一次循环采集的数据自动存放到DMA定义的xdata空间.

通过串口2(P4.6 P4.7)将DMA定义的xdata空间所收到的数据发送给上位机,波特率115200,N,8,1

下载时, 选择时钟 22.1184MHz (用户可自行修改频率).

************************************************************************************************/

咫尺天涯 发表于 2024-3-4 20:25:14

一直没有用过STC 的 DMA

电子DIY小家 发表于 2024-3-4 20:49:37

代码包传上来看下

学习发财财财 发表于 2024-3-4 21:12:59

学习发财财财 发表于 2024-3-4 21:13:30

电子DIY小家 发表于 2024-3-4 20:49
代码包传上来看下

你看一下

电子DIY小家 发表于 2024-3-5 11:44:20

首先手册是没问题的,其次代码没编译通过也没办法下载进去看结果, 最后你描述的那个问题我没看懂,但是看代码好像这个地方明显有问题

电子DIY小家 发表于 2024-3-5 11:47:16

电子DIY小家 发表于 2024-3-5 11:44
首先手册是没问题的,其次代码没编译通过也没办法下载进去看结果, 最后你描述的那个问题我没看懂,但是看 ...

单通道采集4次,那总数就是4x2+4个字节,12个字节为什么这里循环了七次计算?{:5_296:}

学习发财财财 发表于 2024-3-5 11:49:57

电子DIY小家 发表于 2024-3-5 11:47
单通道采集4次,那总数就是4x2+4个字节,12个字节为什么这里循环了七次计算? ...

是7个通道,每个通道每次采集4次,所以每次采集完后分别把7个通道的数据转换出来。{:lol:}

电子DIY小家 发表于 2024-3-5 12:49:58

学习发财财财 发表于 2024-3-5 11:49
是7个通道,每个通道每次采集4次,所以每次采集完后分别把7个通道的数据转换出来。 ...

一个通道=2*采集次数+通道号(1字节)+平均完余数(一个字节)+平均值高字节+平均值低字节

梁工 发表于 2024-3-5 23:20:04

不明白“最后将ADC两字节数据还原到0~4095时数据出现了问题”指的是什么。
DMA完成之后,直接读平均值即可。
页: [1] 2
查看完整版本: STC32G ADC+DMA