硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3516|回复: 12
收起左侧

[ADC] H7双重ADC+DMA,配置MPU,数据对齐后,DMA读取数据仍存在问题

[复制链接]

4

主题

16

回帖

28

积分

新手上路

积分
28
发表于 2019-9-20 10:49:39 | 显示全部楼层 |阅读模式
分享一个双重ADC+DMA采样的代码,整体工作都正常,但存在一个问题,好久了也一直没找到原因,求指点

1.首先配置了MPU

1.PNG

2.开启MPU
2.PNG

3.配置ADC与DMA部分
3.PNG

4.PNG

5.PNG
6.PNG
7.PNG
8.PNG
9.PNG
10.PNG
11.PNG
13.PNG

4.开启中断
12.PNG

5.中断回调
14.PNG

6.keil配置
16.PNG



以上就是程序部分,主要目的是采用双重ADC+DMA搬运,,每采样十次后进入DMA中断处理一次。基本工作正常,只有一个问题。
17.PNG
18.PNG
19.PNG
21.PNG

以上问题一直没有解决,也没有在网上查到答案。
MPU和数据对齐都做了,不知道问题在哪。
还有之前做独立ADC的时候也是差不多的情况,只有前16组数据能正常刷新,超出16组后都只能刷新一次。
有人知道问题出在哪里吗?谢谢

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2019-9-20 11:04:45 | 显示全部楼层
1、双重ADC不适合用定时器触发,双重的时间间隔配置后是固定的,而你的定时器触发是可调的,无法等分时间差。,所以我们应用中基本不使用默认支持的双重或者三重(H7不支持三重)

  一般的做法是独立配置ADC1和ADC3,然后使用同一个定时器的不同通道来触发即可,可以方便的实现同步采样或者交叉快速采样,这样的时间间隔才可以等分。

2、另外你用的D3域的SRAM,你却没有配置它的MPU属性,这个要配置的,要不处于上电默认状态。

3、其它的参考我们的例子,先实现下单ADC的溜溜。
http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980&extra=page%3D1

QQ截图20190920110538.jpg
回复

使用道具 举报

4

主题

16

回帖

28

积分

新手上路

积分
28
 楼主| 发表于 2019-9-20 11:15:41 | 显示全部楼层
eric2013 发表于 2019-9-20 11:04
1、双重ADC不适合用定时器触发,双重的时间间隔配置后是固定的,而你的定时器触发是可调的,无法等分时间差 ...

谢谢指点!双重ADC不适合作定时器触发真是今天才知道,那我有方向了,感谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2019-9-20 14:49:40 | 显示全部楼层
样时代 发表于 2019-9-20 11:15
谢谢指点!双重ADC不适合作定时器触发真是今天才知道,那我有方向了,感谢

我们的一代和二代示波器都是这个方案
回复

使用道具 举报

2

主题

37

回帖

43

积分

新手上路

积分
43
发表于 2024-2-26 14:41:47 | 显示全部楼层
eric2013 发表于 2019-9-20 11:04
1、双重ADC不适合用定时器触发,双重的时间间隔配置后是固定的,而你的定时器触发是可调的,无法等分时间差 ...

您好,请教一下:
1.双重adc的时候,定时器不是触发adc master进行采集的吗?定时器触发可调是啥意思,定时器分频好以后不就是按指定频率去触发采集吗?
2.如果是adc1和3同时对一个通道采样,这样结果会不会相互影响?(待会我测一下看看)
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2024-2-26 15:57:12 | 显示全部楼层
风过不留痕 发表于 2024-2-26 14:41
您好,请教一下:
1.双重adc的时候,定时器不是触发adc master进行采集的吗?定时器触发可调是啥意思, ...

以双ADC快速交替采样为例,采用双ADC模式后,它们之间的采样间隔是固定的。没法和定时器触发速度匹配。

回复

使用道具 举报

2

主题

37

回帖

43

积分

新手上路

积分
43
发表于 2024-2-26 18:14:21 | 显示全部楼层
eric2013 发表于 2024-2-26 15:57
以双ADC快速交替采样为例,采用双ADC模式后,它们之间的采样间隔是固定的。没法和定时器触发速度匹配。
...

双快速交替采样的模式&双重adc,可以使用软件触发的方式采集吗?只触发一次,然后采满所需数据个数
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2024-2-27 08:01:44 | 显示全部楼层
风过不留痕 发表于 2024-2-26 18:14
双快速交替采样的模式&双重adc,可以使用软件触发的方式采集吗?只触发一次,然后采满所需数据个数

可以的,设置DMA为Normal模式。
回复

使用道具 举报

2

主题

37

回帖

43

积分

新手上路

积分
43
发表于 2024-2-27 10:45:42 | 显示全部楼层
eric2013 发表于 2024-2-27 08:01
可以的,设置DMA为Normal模式。

请教一下,高速adc采样还有啥性价比高的方案吗?
我之前设想的是双重adc交叉采集可以到9m的采样率(12bit,36mhz,h743,4.5m*2),如果定时器触发出来的数据不稳定的话,只能上外设了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2024-2-28 01:05:09 | 显示全部楼层
风过不留痕 发表于 2024-2-27 10:45
请教一下,高速adc采样还有啥性价比高的方案吗?
我之前设想的是双重adc交叉采集可以到9m的采样率(12bi ...

使用1个定时器的两个CC通道,分别触发两个ADC做快速交替采样即可。


回复

使用道具 举报

2

主题

37

回帖

43

积分

新手上路

积分
43
发表于 2024-2-28 15:57:29 | 显示全部楼层
eric2013 发表于 2024-2-28 01:05
使用1个定时器的两个CC通道,分别触发两个ADC做快速交替采样即可。

两个adc同时去采集同一个通道,不是会冲突吗?
回复

使用道具 举报

2

主题

37

回帖

43

积分

新手上路

积分
43
发表于 2024-2-28 18:52:58 | 显示全部楼层
风过不留痕 发表于 2024-2-28 15:57
两个adc同时去采集同一个通道,不是会冲突吗?

我现在配置成双重adc模式,软件触发采集,adc采样速率只有1m左右,已经配置成12bit+36mhz的时钟
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2024-2-29 08:20:50 | 显示全部楼层
风过不留痕 发表于 2024-2-28 15:57
两个adc同时去采集同一个通道,不是会冲突吗?

不冲突。我们早期V5开发板的1代示波器就是这么搞的,用了同一个定时器的三个CC通道触发ADC1,ADC2和ADC3,引脚使用ADC123三路都可以复用的引脚。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 14:38 , Processed in 0.313414 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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