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

时间:2017-09-22 22:23:43

标签: microcontroller analog-digital-converter

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

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

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

提前致谢:)

1 个答案:

答案 0 :(得分:1)

你应该多考虑一下你的要求,特别是“同时”和“尽快”的陈述。如果您在下一个10到100微秒内对每个通道进行采样,那会令人满意吗?您需要检测的输入信号的最大频率是多少?您的采样频率应至少是目标最大信号频率的两倍。

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

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

如果确实需要在同一时间对所有通道进行采样,那么您可能需要为每个通道分别使用一个ADC,然后触发所有ADC立即采集样本。