找回密码
 立即注册
查看: 281|回复: 6

ADC_DMA测多通道时通道之间会影响吗

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-05-02 09:52:56
已绑定手机

229

主题

328

回帖

1475

积分

金牌会员

积分
1475
发表于 2024-12-17 20:20:37 | 显示全部楼层 |阅读模式

0f51ddf0-eb4c-40ee-a250-973dff66b1d3.png

当我只开启15通道测得的电压是对的,但我同时开启10通道一起测时,原本15通道的值就不对了

10通道暂时是悬空的

QQ20241217-201715.png

在xdata创建两个数组,把数组地址赋值给DMA_ADC_RXA,测得的数组第二个值就是15通道的值,计算得到的电压不对,

但只测15通道,使用数组第一个值计算得到的电压是正确的

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5454

积分

版主

积分
5454
发表于 2024-12-17 20:37:05 | 显示全部楼层

image.png

不更改 ADC_DMA 配置寄存器 2(DMA_ADC_CFG2)的话,默认转换次数就是1,如果你使用int宽度的数组,那么第一通道就需要占用数组的0~2地址,第二个通道需要从数组的第三个下标开始取出

例如ShuZu[3]这种形式,而不是是直接取出下一个。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-12-17 21:07:51 | 显示全部楼层
  1. unsigned char xdata DMA_Buffer[ADC_CH][ADC_NUM*2+4] _at_ DMA_ADDR;
  2. for(i=0;i<ADC_CH;i++)
  3.                         {
  4.                                 ADC_Value[i]=DMA_Buffer[i][2*ADC_NUM+2];
  5.                                 ADC_Value[i]<<=8;
  6.                                 ADC_Value[i]|=DMA_Buffer[i][2*ADC_NUM+3];
  7.                                 ADC_Value[i]<<=8;
  8.                                 ADC_Value[i]|=DMA_Buffer[i][2*ADC_NUM+1];
  9.                                 ADC_Value[i]>>=4;        //20bit结果右移4位得16位结果
  10.                         }
复制代码
https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=2537&pid=19963

DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-05-02 09:52:56
已绑定手机

229

主题

328

回帖

1475

积分

金牌会员

积分
1475
发表于 2024-12-18 08:49:54 | 显示全部楼层
王*** 发表于 2024-12-17 20:37
不更改 ADC_DMA 配置寄存器 2(DMA_ADC_CFG2)的话,默认转换次数就是1,如果你使用int宽度的数组,那么第 ...

转换一次不就各个通道取一次值吗,两个通道不就取了4个字节数据吗
为什么会有8字节数据

点评

有硬件自动平均值和对应的通道号,上面的数据格式截图已经说明了具体的内容  详情 回复 发表于 2024-12-18 08:53
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5454

积分

版主

积分
5454
发表于 2024-12-18 08:53:07 | 显示全部楼层
QQ6243*** 发表于 2024-12-18 08:49
转换一次不就各个通道取一次值吗,两个通道不就取了4个字节数据吗
为什么会有8字节数据 ...

有硬件自动平均值和对应的通道号,上面的数据格式截图已经说明了具体的内容
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-05-02 09:52:56
已绑定手机

229

主题

328

回帖

1475

积分

金牌会员

积分
1475
发表于 2024-12-18 08:57:44 | 显示全部楼层
王*** 发表于 2024-12-18 08:53
有硬件自动平均值和对应的通道号,上面的数据格式截图已经说明了具体的内容 ...

硬件取平均值每个通道都会有吗,也就是一个通道取一次就有5字节数据

点评

每个通道都会有 一个通道如果只转换一次的话,也是需要占用6个byte数据  详情 回复 发表于 2024-12-18 09:33
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5454

积分

版主

积分
5454
发表于 2024-12-18 09:33:34 | 显示全部楼层

每个通道都会有

一个通道如果只转换一次的话,也是需要占用6个byte数据

image.png

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 13:21 , Processed in 0.145170 second(s), 88 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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