tag 标签: 非连续模式

相关博文
  • 热度 5
    2023-7-17 17:11
    1334 次阅读|
    0 个评论
    STM32的原文手册如下: 规则组 对寄存器 ADC_CR1 的 DISCEN 位进行设置来启用该模式。它可用于转换 n 个转换的短序列( n<=8 ),这是 ADC_SRRx 寄存器中选择的转换序列的一部分。 n 的值通过写入 ADC_CR1 寄存器中的 DISCNUM 位来指定。 当外部触发器发生时,它会启动 ADC_SRRx 寄存器中选择的 接下来 n 个转换,直到序列中的所有转换都完成为止 。全部的序列长度都定义在 ADC_SQR1 寄存器的 L 位上。 例如: N = 3 ,通道被转换的有 0, 1, 2, 3, 6, 7, 9, 10 首先触发:序列转换 0 , 1 , 2, EOC 事件在每次转换都会产生。 第二次触发:序列转换 3 , 6 , 7, EOC 事件在每次转换都会产生。 第三次触发:序列转换 9 , 10, EOC 事件在每次转换都会产生。 第四次触发:序列转换 0 , 1 , 2, EOC 事件在每次转换都会产生。 注意: 在不连续模式下转换规则组时,不会发生翻转。当所有子组都被转换时,下一个触发器开始第一个子组的转换。 在上面的示例中,第四触发器重新转换第一子组通道 0 、 1 和 2 。 通俗来讲就是原来是一次性转换完成,现在可以通过外部触发的方法,可以选择每次转换几个通道 实验如下: ADC为规则采样,启用不连续触发模式,将不连续转换序列编写为2, 不连续模式是需要外部激励触发才能进行采样,在这里选择为TIM3触发。 同时启用DMA,多通道轮询采用DMA来存储数据,比较方便 产生代码,代码实现如下,可以看到每次转换2个通道,值得注意的是使用DMA,由于ADC数据寄存器只有16位,DMA内存端数组应定义为16位的数组来装转换后的结果。