野火电子论坛

 找回密码
 注册

扫一扫,访问微社区

查看: 916|回复: 5

[F1-指南者] 关于ADC采集和DAC输出

[复制链接]
发表于 2019-3-14 16:42:43 | 显示全部楼层 |阅读模式
因为课题项目的需求,最近一直捣腾stm32指南者,主要就是ADC采集和DAC输出,目前已有初步成果,就是有几个细节处不是很懂,希望论坛里的大佬可以指导一下。1. ADC的触发问题:目前选择“ADC_Mode_IntiStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T3_TRGO;” 这里的T3_TRGO不是很理解,我查阅了参考手册,说是定时器更新事件就触发,那么在PSC和ARR都确定不变,每次计数器溢出时就产生这个更新,那么是不是说我将PSC=71,ARR=999,那么ADC采样频率就是1kHz了吗?
2. 我百度还有另一种触发方式,即“ADC_ExternalTrigConv_T2_CC2”,是指TIM2的通道2输出PWM上升沿时,进行一次触发?
3. 如果选择触发采集,那么ADC_ContinuousConvMode还需要ENABLE吗?我觉得DISABLE更符合逻辑,即完成一次采集停止,直到下次触发开始,但实际实验发现,DISABLE的话波形不正确,这是什么原因。
4. 代码顺序问题,像这种ADC_ExternalTrigConvCmd(ADC_x, ENABLE);放在ADC_Cmd(ADC_x, ENABLE);这句前面还是后面有说法吗?一直搞不懂,实验发现放哪都不影响,但还是想知其然也知其所以然。

5. 我需要stm32实现的功能是两路ADC读取数据,一路DAC输出控制信号。目前只测试了一路ADC接信号发生器的正弦信号做输入,一路DAC输出,所以我的程序中DMA数据流都只是一个uint16_t的变量,这样就导致用示波器看DAC输出波形时,发现波形很怪。当正弦输入频率很低时,DAC输出波形挺好,基本能采集上。当输入频率过高,DAC波形就变成一横一横的,我将DAC触发定时器的频率设的很高也没用,每一横的时间长度差不多500us,该如何解决?
6. 然后我又用串口将DAC数据打印出来,复制进EXCEL制表,发现输出波形挺连续的,不像示波器上一段一段的,是因为串口打印也有时间所以抵消了,还是说是示波器的原因造成的,如果之后我想将DAC数据提取出来分析,可以直接用串口打印的方法提取吗?
6. 进行数据运算时,每次都只采集一个数据点,那怎么进行运算呢,是说把数据先放在一个大数组里运算,每隔一段时间用DAC输出?


1

1

2

2

3

3

4

4

5

5
回复

使用道具 举报

 楼主| 发表于 2019-3-14 16:48:00 | 显示全部楼层
这是输入频率过高时,用示波器测DAC输出波形时的图,波形已经变成一段一段了
6666.jpg
回复 支持 反对

使用道具 举报

发表于 2019-3-14 18:41:38 | 显示全部楼层
江东猛虎 发表于 2019-3-14 16:48
这是输入频率过高时,用示波器测DAC输出波形时的图,波形已经变成一段一段了

那频率低点呢,什么样子
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-14 20:32:36 | 显示全部楼层
jiege 发表于 2019-3-14 18:41
那频率低点呢,什么样子

这是20Hz正弦输入时,经过AD/DA转换和原输入的对比
输入与经过AD_DA输出对比.png
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-15 15:11:47 | 显示全部楼层
自问自答,原因是我在while()中调用printf函数,占据大量CPU内存,把printf删掉,在中断服务函数里打印输出
回复 支持 反对

使用道具 举报

发表于 2019-3-16 09:14:39 | 显示全部楼层
一般来说,不会在中断函数里进行打印的吧
回复 支持 反对

使用道具 举报

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

本版积分规则

野火电子公众号

手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号-2 大学生ARM嵌入式2群

GMT+8, 2019-5-22 18:48 , Processed in 0.048256 second(s), 33 queries , Gzip On.

野火电子论坛

© 2014-2016 www.firebbs.cn

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