OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2140|回复: 2

新人求助F107ADC TIM1触发多通道扫描模式配DMA的相关问题

[复制链接]

8

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2019-5-29
在线时间
28 小时
发表于 2020-3-23 15:36:45 | 显示全部楼层 |阅读模式
10金钱
我看了STM32F1参考手册,有些问题没有明确说,我也不知道自己理解的对不对,我采用TIM1事件触发ADC1多通道转换,配置AD采样独立模式,扫描模式,单次转换,转换器由TIM1CC1触发,ADC数据右对齐,9个通道
问题1.我的定时器输出的PWM波控制转换,每一个上升沿触发一次转换,是转换一个通道,然后产生EOC中断触发DMA还是,9个通道全部转换,我理解的是一个通道。
2.如果是一个通道的话,我按照数据手册上算出的转换时间=采样时间+12.5个周期,这个TIM1输出的PWM波的周期是不是应该大于单个通道的转换时间,如果小了会怎么样。
3.这种ADC配置是怎么占用CPU的,由于我程序的结构是滴答定时器中断产生一个周期是1ms的定时任务,所以,我每1ms要去处理一些工作包括读取ADC的采样值,这个时间会和ADC冲突么,我不太清楚这个优先级,就是说程序在执行别的语句的时候ADC是否依然在转换

本人刚开始配置ADC的时候没有理解清楚这些细节,只是单纯的实现了现象,现在由于需要提高ADC的精度,尝试加大采样时间,随之需要调整相关的一些参数,尽可能同时保证效率,顺便请教一下,F107ADC12位的分辨率,精度能达到千分之一V么。

最佳答案

查看完整内容[请看2#楼]

正常来说,你的TIM触发ADC采集及DMA传输。 这个时候,一般是整个DMA传输完成,比如你设置长度是10,那么DMA必须收集到10次数据 才会产生中断(DMA中断),但是每次ADC的EOC都是可以开中断,进入中断服务函数的,不过既然用了DMA就是不想要ADC每次都产生中断 因此就不会傻乎乎的再去开ADC中断,而是开启DMA传输完成中断, 在DMA收完10次数据后,才进入中断服务函数(DMA的中断服务函数) 至于触发,肯定不能小于ADC转换时间, ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2020-3-23 15:36:46 | 显示全部楼层
正常来说,你的TIM触发ADC采集及DMA传输。 这个时候,一般是整个DMA传输完成,比如你设置长度是10,那么DMA必须收集到10次数据
才会产生中断(DMA中断),但是每次ADC的EOC都是可以开中断,进入中断服务函数的,不过既然用了DMA就是不想要ADC每次都产生中断
因此就不会傻乎乎的再去开ADC中断,而是开启DMA传输完成中断, 在DMA收完10次数据后,才进入中断服务函数(DMA的中断服务函数)

至于触发,肯定不能小于ADC转换时间,否则就不准确了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

8

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2019-5-29
在线时间
28 小时
 楼主| 发表于 2020-3-24 10:08:48 | 显示全部楼层
正点原子 发表于 2020-3-23 15:36
正常来说,你的TIM触发ADC采集及DMA传输。 这个时候,一般是整个DMA传输完成,比如你设置长度是10,那么DMA ...

谢谢原子哥,还有一个小问题,我这样配置完开启ADC后,它是在什么时间点实行转换的呢,我在运行其它语句的时候它是在独立的转换么,还是说运行其他程序的时候它会停止转换。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-23 07:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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