11704|11

9717

帖子

24

TA的资源

版主

楼主
 

stm32g474 实现5个独立ADC同步采样 [复制链接]

 

STM32G474集成了5个独立4Msps采样率的12ADC

上一次使用STM32G474实现了正弦信号发生器

https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=1088578&extra=

这次使用ADC采集DAC的输出看一下波形,用5ADC同步采样,注意是5个独立的ADC不是1个ADC5个通道

在上一帖的基础上继续用STM32CubeMX配置STM32G474

STM32G474ADC时钟最大支持60MHz12位分辨率sampling time2.5时的采样率为60/2.5+12+0.5=4Msps

 

原来的主频170MHz无法实现60Mhz的ADC时钟,需要将主频设置成120MHz

ADC时钟在主时钟2分频后正好是60MHz

主频修改后原来的Timer4的Counter Period也要做相应修改,使其输出频率正好是1Msps

时钟和DAC配置好后再配置ADC,5个ADC使用相同的配置

Clock Prescaler选择Asynchronous clock mode divided by 2

 

 

下边的External Trigger Conversion Source选择Timer 3 Trigger Out event,使用Timer3触发ADC采样

 

DMA选项卡下添加DMA配置,使用默认即可

ADC配置好以后再配置触发ADC的定时器

选择左边的TIM3,右边的Clock Source选择Internal Clock

Counter Period设置成30-1

Trigger Event Selection TRGO选择Update Event

120MHz下每30个周期触发一次Update Event事件

对应的ADC采样率正好是4Msps

 

完成后生成工程

添加存放ADC数据的数组,这里使用一个二维数组,数量是5,对应5ADC

长度是5000个,每个结果使用16位共5个通道一共占用50K byte的内存

#define ADC_RESULT_COUNT 5000 //5k*2byte*5channal=50k byte memory

uint16_t adc_result[5][ADC_RESULT_COUNT];

添加启动ADC的代码,一定要先启动ADC再启动定时器

主函数里添加adc_start();启动ADC采样

添加void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)函数,这个是ADC将数据写满DMA对应的内存后触发,在里边放一个__NOP();断点卡上去,下边再放上adc_start函数,这样每次存满数组后就会暂停执行,点继续(Go F5)就会进行下一次采样,方便调试。

执行到断点时可以看到adc_result的结果

展开二维数据,在数据上点右键选择Save to File把内存数据保存到本地硬盘,文件名默认为Watch1.log

 

等保存完成后使用文本工具打开Watch1.log文件(数据量比较大IAR需要一段时间才能保存完,保存过程中IAR会卡顿一段时间,一搬调试器的红灯不再闪烁或者IAR不再卡顿说明已经保存完成)

 

全选所有数据,将数据全部复制,然后新建一个EXCEL文件

将数据粘贴到其中一个工作表内

再另一个工作表引用粘贴数据的工作表中的数据

实现每一列数据对应一组ADC的结果

 

选中5组数据,插入折线图可以看到对应的波形,下边的波形是5条线重叠在一起的效果

 

为了方便观看可以将数据的长度选少一些,这样就可以实现局部放大效果

放大后能看到有很多锯齿,这是因为DAC的样本数比较少

每一个周期只有60个数据,输出的信号也没做滤波处理所以才会不平滑

 

DAC的更新频率是1Msps,每个周期60个样本,ADC的采样率是4Msps,对应一个周期的结果是4/1*60=240

到这里测试就已经结束了

可能会有人问,说好的同步采样呢?在哪设置的?这个就不说了,自己去理解吧。

 

工程文件和用来分析数据的EXCEL文件:

adc_dac.rar (11.45 MB, 下载次数: 308)

adc数据分析.xlsx (1.51 MB, 下载次数: 31)



此内容由EEWORLD论坛网友littleshrimp原创,如需转载或用于商业用途需征得作者同意并注明出处

补充内容 (2019-9-14 11:23): 这个贴子存在问题 首先使用定时器触发ADC时ADC的Continuous Conversion Mode应该是DISABLE,而不是ENABLE 另外一个问题是经过测试,大于2个ADC同步采样数据会有问题 目前还没找到解决办法 补充内容 (2019-9-26 17:23): 经过测试,贴子中Continuous Conversion Mode应该是DISABLE,功能正常
此帖出自stm32/stm8论坛

最新回复

还没有解决“大于2个ADC同步采样数据会有问题 目前还没找到解决办法“?”这个问题吗?大神     详情 回复 发表于 2024-10-19 16:26
点赞(1) 关注(3)
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 

回复
举报

9717

帖子

24

TA的资源

版主

沙发
 

 

测试时还要将DAC的输出和5个ADC的输入连起来

 

此帖出自stm32/stm8论坛
 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 

回复

403

帖子

6

TA的资源

纯净的硅(中级)

板凳
 

还在用EXECL吗,为啥不试试用MATLAB来显示波形呢 

此帖出自stm32/stm8论坛

点评

matlab不会用啊  详情 回复 发表于 2019-9-3 10:20
 
个人签名如果天空是黑暗的,那就摸黑生存;如果发出声音是危险的,那就保持沉默...但不要习惯了黑暗就为黑暗辩护;不要为自己的苟且而得意;不要嘲讽那些比自己更勇敢热情的人们。人可以卑微如尘土,不可扭曲如蛆虫。
 

回复

9717

帖子

24

TA的资源

版主

4
 
jackfrost 发表于 2019-9-3 09:57 还在用EXECL吗,为啥不试试用MATLAB来显示波形呢 

matlab不会用啊

此帖出自stm32/stm8论坛
 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

291

帖子

0

TA的资源

一粒金砂(高级)

5
 

感谢虾哥分享,matlab入门不难可以学一下哈哈

此帖出自stm32/stm8论坛

点评

简单的学过后来都忘了 都是现用现查资料多数都是解方程时用到  详情 回复 发表于 2019-9-10 10:44
 
 
 

回复

9717

帖子

24

TA的资源

版主

6
 
generalcircuits 发表于 2019-9-10 10:29
感谢虾哥分享,matlab入门不难可以学一下哈哈

简单的学过后来都忘了 都是现用现查资料多数都是解方程时用到
此帖出自stm32/stm8论坛
 
 
 

回复

22

帖子

0

TA的资源

一粒金砂(中级)

7
 

不错,,路过看一下

此帖出自stm32/stm8论坛
 
 
 

回复

423

帖子

0

TA的资源

一粒金砂(高级)

8
 

大于2个ADC同步采样数据会有问题 目前还没找到解决办法“”?????

 

不会吧?

此帖出自stm32/stm8论坛
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

9
 

这么多内容啊,慢慢看,好像还使用了stm32cubemx这个软件,这个软件不错,初始化项目效果很好。

此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

10
 

请问您能出一个STM32G474控制AD9833产生波形的教程吗

此帖出自stm32/stm8论坛
 
 
 

回复

579

帖子

33

TA的资源

纯净的硅(初级)

11
 

收藏了

此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

12
 

还没有解决“大于2个ADC同步采样数据会有问题 目前还没找到解决办法“?”这个问题吗?大神

 

此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表