STC32G ADC+DMA
根据官方文档,我尝试了一下7通道的ADC+DMA,DMA转换次数选择为4次,但是在最后将ADC两字节数据还原到0~4095时数据出现了问题。最后我发现把偏移地址再加个(m - 1)就对了,是不是官方文档有问题?
/************************************************************************************************
本例程基于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 (用户可自行修改频率).
************************************************************************************************/
一直没有用过STC 的 DMA 代码包传上来看下 电子DIY小家 发表于 2024-3-4 20:49
代码包传上来看下
你看一下 首先手册是没问题的,其次代码没编译通过也没办法下载进去看结果, 最后你描述的那个问题我没看懂,但是看代码好像这个地方明显有问题
电子DIY小家 发表于 2024-3-5 11:44
首先手册是没问题的,其次代码没编译通过也没办法下载进去看结果, 最后你描述的那个问题我没看懂,但是看 ...
单通道采集4次,那总数就是4x2+4个字节,12个字节为什么这里循环了七次计算?{:5_296:} 电子DIY小家 发表于 2024-3-5 11:47
单通道采集4次,那总数就是4x2+4个字节,12个字节为什么这里循环了七次计算? ...
是7个通道,每个通道每次采集4次,所以每次采集完后分别把7个通道的数据转换出来。{:lol:} 学习发财财财 发表于 2024-3-5 11:49
是7个通道,每个通道每次采集4次,所以每次采集完后分别把7个通道的数据转换出来。 ...
一个通道=2*采集次数+通道号(1字节)+平均完余数(一个字节)+平均值高字节+平均值低字节 不明白“最后将ADC两字节数据还原到0~4095时数据出现了问题”指的是什么。
DMA完成之后,直接读平均值即可。
页:
[1]
2