打印

STM32 ADC DMA

[复制链接]
1826|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stm32,以定时器触发ADC进行采集,希望在每次触发后ADC都能采样到固定个数个点,比如说1024个,因为单次转化模式每次触发只能采样一个点,所以将ADC设定成连续转化方式,但连续转化方式怎么停止?如何让它连续采样到1024个点后停止,然后等待下一个定时器触发沿触发ADC再采样1024个点?  另外我把DMA_InitStructure.DMA_Mode =DMA_Mode_Normal,写满之后清空DMA1_FLAG_TC1之后,下一次触发得来的数据是否还是从BUFFER的首地址写起,然后覆盖掉原来的数据?

沙发
cjhk| | 2013-4-18 18:58 | 只看该作者
帮你顶一个  不是很了解啊   看看有没有高手能解决这个问题

使用特权

评论回复
板凳
airwill| | 2013-4-18 19:56 | 只看该作者
把 DMA 传输的量设定到 1024.
另外我把DMA_InitStructure.DMA_Mode =DMA_Mode_Normal,写满之后清空DMA1_FLAG_TC1之后,下一次触发得来的数据是否还是从BUFFER的首地址写起,然后覆盖掉原来的数据?
DMA_Mode Circular 方式就可以了

使用特权

评论回复
地板
迷途中的蠢猪|  楼主 | 2013-4-19 10:45 | 只看该作者
airwill 发表于 2013-4-18 19:56
把 DMA 传输的量设定到 1024.
另外我把DMA_InitStructure.DMA_Mode =DMA_Mode_Normal,写满之后清空DMA1_FL ...

谢谢版主的回复,我想是我还没表述清楚,我现在在做一个线阵CCD的驱动,希望定时器的上升沿触发ADC,连续转化1024个点,把DMA 传输的量设定到 1024,然后设定成normal,这样的话buffer满了后即便ADC在连续转化也覆盖不掉,buffer里的数据就当成一帧数据,但现在这样设定会出现两个问题:1,ADC被定时器触发后处在连续转化状态,停不掉,就不能做到等待下次上升沿触发再工作了,如何让它停掉 2.另一方面,由于DMA设定成normal,即便清DMA1_FLAG_TC1后下一帧数据又覆盖不了前面的数据,即希望当前触发ADC后采满1024个点后不覆盖 又希望下次触发后buffer被新的一帧覆盖。    我该如何设置才能解决问题

使用特权

评论回复
5
airwill| | 2013-4-19 11:07 | 只看该作者
把DMA 传输的量设定到 1024, 可以考虑在 DMA 中断里 停止 ADC 吧

使用特权

评论回复
6
mryw| | 2014-2-27 19:00 | 只看该作者
请问应该如何配置定时器触发ADC进行转换?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

粉丝