STM32 ADC:保持 运行 速度 'high' 还是尽可能关闭它?
STM32 ADC: leave it running at 'high' speed or switch it off as much as possible?
我正在使用带有一个 ADC 和 8 个通道的 G0。工作正常。我使用 4 个通道。一个是不断测量的温度,我对每 60 秒的值感兴趣。另一个几乎相反:它每天测量声波几分钟,我需要这些 10kHz 的样本。
我通过让所有 4 个通道以 10kHz 采样并通过 DMA 将四个读数移动到内存中解决了这个问题(长度为 4 的数组,每个通道有 1 个测量值)。每 60 秒我测量一次温度,当我需要音频时,我检索音频值。
如果我有两个 ADC,我会每 60 秒启动 1 次转换的温度 ADC 读数。马不停蹄。而且我只会在每天需要的几分钟内启动音频 ADC。但是使用一个 ADC 解决方案,让所有转换 运行 以这种高速连续进行似乎很简单,这就提出了我的问题:每天 24 小时每秒进行 40.000 次转换是否有任何真正的缺点?如果没有,代码很简单。我一直在内存中拥有最新的值。但也许我毁了芯片?我知道我用了太多的能量。但是在这种情况下有很多。
你不会在不需要的时候被运行“耗尽”。
主要问题是浪费电量和 RAM。
如果你有足够的这些,那么较小的问题是:
浪费的电能会变成热量,这可能会扰乱您的温度测量(尽管这是一个非常小的量)。
拥有 DMA 运行 会增加您的中断延迟,并且如果遇到总线争用,也可能会略微降低处理器速度(这仅在您在这些方面接近容量时才重要)。
一直运行还有一个好处是读数更稳定,不会因为打开和关闭东西而受到干扰。
我正在使用带有一个 ADC 和 8 个通道的 G0。工作正常。我使用 4 个通道。一个是不断测量的温度,我对每 60 秒的值感兴趣。另一个几乎相反:它每天测量声波几分钟,我需要这些 10kHz 的样本。
我通过让所有 4 个通道以 10kHz 采样并通过 DMA 将四个读数移动到内存中解决了这个问题(长度为 4 的数组,每个通道有 1 个测量值)。每 60 秒我测量一次温度,当我需要音频时,我检索音频值。
如果我有两个 ADC,我会每 60 秒启动 1 次转换的温度 ADC 读数。马不停蹄。而且我只会在每天需要的几分钟内启动音频 ADC。但是使用一个 ADC 解决方案,让所有转换 运行 以这种高速连续进行似乎很简单,这就提出了我的问题:每天 24 小时每秒进行 40.000 次转换是否有任何真正的缺点?如果没有,代码很简单。我一直在内存中拥有最新的值。但也许我毁了芯片?我知道我用了太多的能量。但是在这种情况下有很多。
你不会在不需要的时候被运行“耗尽”。
主要问题是浪费电量和 RAM。
如果你有足够的这些,那么较小的问题是:
浪费的电能会变成热量,这可能会扰乱您的温度测量(尽管这是一个非常小的量)。
拥有 DMA 运行 会增加您的中断延迟,并且如果遇到总线争用,也可能会略微降低处理器速度(这仅在您在这些方面接近容量时才重要)。
一直运行还有一个好处是读数更稳定,不会因为打开和关闭东西而受到干扰。