是否可以同时从微控制器的多个引脚读取数据?

Is it possible to read in data from multiple pins of a microcontroller at the same time?

我使用的是 PIC24 微控制器并且有多个输入。通过这些我想尽快获得模拟电压数据。我有 8 个不同的数据到达微控制器,我有点困惑如何解决这个问题。

我的第一个想法是按顺序读入数据。首先来自 AN0,然后是 AN1 等等,但这可能需要相当长的时间,而且我完全不确定如果没有任何其他技巧它是否足够快。特别是因为我不仅要读取每个引脚的一个值,还要读取一组电压,然后存储并进行数字积分,然后通过 USB 将结果发送到 PC。这样做时,应通过上述引脚不断接收新数据。

我在这里尝试实现的目标是否可行?

提前致谢:)

您应该多考虑一下您的要求,尤其是 "at the same time" 和 "as fast as possible" 语句。如果您在下一个通道的 10 到 100 微秒内对每个通道进行采样,是否令人满意?您需要检测的输入信号的最大频率是多少?您的采样频率应至少是感兴趣的最大信号频率的两倍。

使用具有足够输入通道的单个 ADC。配置 ADC,以便每次触发它进行采样时,它都会按顺序对所有通道进行采样(多通道扫描)。它不会按字面意思 "the same time" 对所有 8 个通道进行采样,但它会循环遍历每个通道并在 几乎 的同时一个接一个地采样。这可能在几微秒内,具体取决于 ADC 的时钟速率和您配置的通道设置时间。

现在您可以将 ADC 配置为在连续模式下采样,在这种模式下它将在完成上一次扫描后立即开始下一次采样扫描。那将是 "as fast as possible" 但这可能比您需要的速度更快并且产生的数据比可以处理的更多。相反,您应该根据感兴趣的输入信号频率选择采样率,并将 ADC 设置为以该速率采样。这个比率可能比 "as fast as possible" 低得多。您可以将 ADC 配置为在触发时为每个通道收集一个样本(单次转换模式),还可以设置一个硬件定时器以在所需的采样率下到期并触发 ADC 进行样本扫描。采样周期(采样之间的时间)必须大于扫描所有通道所需的时间,因为在完成前一个通道扫描之前您将无法再次触发 ADC。

如果您真的需要同时对所有通道进行采样,那么您可能需要为每个通道使用一个单独的 ADC,然后触发所有 ADC 一次收集样本.