找回密码
 立即注册
查看: 1591|回复: 13

STC32G ADC+DMA

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-03-21 21:36:18

1

主题

5

回帖

35

积分

等待验证会员

积分
35
发表于 2024-3-4 18:07:19 | 显示全部楼层 |阅读模式
根据官方文档,我尝试了一下7通道的ADC+DMA,DMA转换次数选择为4次,但是在最后将ADC两字节数据还原到0~4095时数据出现了问题
最后我发现把偏移地址再加个(m - 1)就对了,是不是官方文档有问题?

官方文档

官方文档


回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15626
发表于 2024-3-7 13:08:18 | 显示全部楼层
截图202403071305506781.jpg

截图202403071306344247.jpg

截图202403071307271494.jpg


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

本例程基于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 (用户可自行修改频率).

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

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:246
  • 最近打卡:2025-04-30 10:10:32

3

主题

155

回帖

537

积分

高级会员

积分
537
发表于 2024-3-4 20:25:14 | 显示全部楼层
一直没有用过STC 的 DMA
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:135
  • 最近打卡:2024-12-25 10:15:05

47

主题

1350

回帖

8058

积分

荣誉版主

冲哥视频教程和各种开源资料QQ交流群884047237,可群

积分
8058
QQ
发表于 2024-3-4 20:49:37 | 显示全部楼层
代码包传上来看下
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-03-21 21:36:18

1

主题

5

回帖

35

积分

等待验证会员

积分
35
发表于 2024-3-4 21:12:59 | 显示全部楼层
ADC.zip (295.31 KB, 下载次数: 144)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-03-21 21:36:18

1

主题

5

回帖

35

积分

等待验证会员

积分
35
发表于 2024-3-4 21:13:30 | 显示全部楼层
电子DI*** 发表于 2024-3-4 20:49
代码包传上来看下

你看一下
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:135
  • 最近打卡:2024-12-25 10:15:05

47

主题

1350

回帖

8058

积分

荣誉版主

冲哥视频教程和各种开源资料QQ交流群884047237,可群

积分
8058
QQ
发表于 2024-3-5 11:44:20 | 显示全部楼层
首先手册是没问题的,其次代码没编译通过也没办法下载进去看结果, 最后你描述的那个问题我没看懂,但是看代码好像这个地方明显有问题
截图202403051140447115.jpg

点评

单通道采集4次,那总数就是4x2+4个字节,12个字节为什么这里循环了七次计算?  详情 回复 发表于 2024-3-5 11:47
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:135
  • 最近打卡:2024-12-25 10:15:05

47

主题

1350

回帖

8058

积分

荣誉版主

冲哥视频教程和各种开源资料QQ交流群884047237,可群

积分
8058
QQ
发表于 2024-3-5 11:47:16 来自手机 | 显示全部楼层
电子DIY小家 发表于 2024-3-5 11:44
首先手册是没问题的,其次代码没编译通过也没办法下载进去看结果, 最后你描述的那个问题我没看懂,但是看 ...

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-03-21 21:36:18

1

主题

5

回帖

35

积分

等待验证会员

积分
35
发表于 2024-3-5 11:49:57 | 显示全部楼层
电子DI*** 发表于 2024-3-5 11:47
单通道采集4次,那总数就是4x2+4个字节,12个字节为什么这里循环了七次计算? ...

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

点评

一个通道=2*采集次数+通道号(1字节)+平均完余数(一个字节)+平均值高字节 +平均值低字节  详情 回复 发表于 2024-3-5 12:49
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:135
  • 最近打卡:2024-12-25 10:15:05

47

主题

1350

回帖

8058

积分

荣誉版主

冲哥视频教程和各种开源资料QQ交流群884047237,可群

积分
8058
QQ
发表于 2024-3-5 12:49:58 | 显示全部楼层
学习发*** 发表于 2024-3-5 11:49
是7个通道,每个通道每次采集4次,所以每次采集完后分别把7个通道的数据转换出来。 ...

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 2024-3-5 23:20:04 | 显示全部楼层
不明白“最后将ADC两字节数据还原到0~4095时数据出现了问题”指的是什么。
DMA完成之后,直接读平均值即可。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 15:41 , Processed in 0.217171 second(s), 121 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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