【问题标题】:Is it possible to read in data from multiple pins of a microcontroller at the same time?是否可以同时从微控制器的多个引脚读取数据?
【发布时间】:2018-03-04 13:57:03
【问题描述】:

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

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

我在这里想要实现的目标是否可行?

提前致谢:)

【问题讨论】:

  • PS:我有点担心这对于我的 PIC 的计算能力来说可能太多了,所以让我们也考虑一下只进行模拟测量并通过 USB 端口将所有数据发送到个人电脑。这将为微控制器节省大量容量。
  • 依次尝试。如果它不起作用,请获得更快的微控制器
  • 您在进行 ADC 测量或 GPIO 输入?
  • 是否可能(假设为 ADC)取决于芯片/设计,为此请阅读供应商的文档以找出答案。
  • AFAIK PIC24 只有一个板载模数转换器,因此您受限于该外设提供的转换速率。此外,典型的 AD 转换比从结果寄存器中读出转换值所花费的周期要多得多,因此无论如何这都不是问题。最后,USB 也会有带宽限制,因此您应该根据系统中的所有限制检查快速 AD 采集的主要目标。

标签: microcontroller analog-digital-converter


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 2022-01-19
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多