原创 STM32 ADC不连续采样之规则组

2023-7-17 17:11 1099 5 5 分类: MCU/ 嵌入式 文集: ADC

 STM32的原文手册如下:

规则组

对寄存器ADC_CR1DISCEN位进行设置来启用该模式。它可用于转换n个转换的短序列(n<=8),这是ADC_SRRx寄存器中选择的转换序列的一部分。n的值通过写入ADC_CR1寄存器中的DISCNUM[2:0]位来指定。

当外部触发器发生时,它会启动ADC_SRRx寄存器中选择的接下来n个转换,直到序列中的所有转换都完成为止。全部的序列长度都定义在ADC_SQR1寄存器的L[3:0]位上。

例如:

N = 3,通道被转换的有 0, 1, 2, 3, 6, 7, 9, 10

首先触发:序列转换012,    EOC事件在每次转换都会产生。

第二次触发:序列转换367,  EOC事件在每次转换都会产生。

第三次触发:序列转换910,    EOC事件在每次转换都会产生。

第四次触发:序列转换012,  EOC事件在每次转换都会产生。

 

注意:在不连续模式下转换规则组时,不会发生翻转。当所有子组都被转换时,下一个触发器开始第一个子组的转换。

在上面的示例中,第四触发器重新转换第一子组通道012


通俗来讲就是原来是一次性转换完成,现在可以通过外部触发的方法,可以选择每次转换几个通道

实验如下:

ADC为规则采样,启用不连续触发模式,将不连续转换序列编写为2,不连续模式是需要外部激励触发才能进行采样,在这里选择为TIM3触发。

同时启用DMA,多通道轮询采用DMA来存储数据,比较方便
产生代码,代码实现如下,可以看到每次转换2个通道,值得注意的是使用DMA,由于ADC数据寄存器只有16位,DMA内存端数组应定义为16位的数组来装转换后的结果。


作者: 宏杰, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-4027574.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /2 下一条