This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADS1015-Q1:如何在 ESP32上使用四个 ADC 达到4x3300SPS?

Guru**** 668880 points
Other Parts Discussed in Thread: ADS1015, ADS1015-Q1, ADS131B04-Q1
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1307854/ads1015-q1-how-to-reach-4x3300-sps-with-four-adcs-on-an-esp32

器件型号:ADS1015-Q1
主题中讨论的其他器件:ADS1015ADS131B04-Q1

您好!

我想使用 ESP32-S2以3.3kHz 的频率同时读取4个差分信号。 我当时正在考虑在一条以400kHz 运行的 I2C 总线上使用4个 ADS1015。 不过、我无法达到3300SPS、即使在连续模式下也是如此(我认为400kHz 速度不够、但我找不到有关 ESP32高速 I2C 模式的文档和示例。 我尝试了使用1 MHz、这是可接受的最高值、但实际上运行速度比400kHz 时慢。) 我正在搜索一个可并行执行4次差动转换的替代 ADC、然后一次性读取4个采样值、但找不到它。 您有什么建议? 我的规格是:至少3.3kHz、至少12位、4个同步差动 ADC 转换、最好有一条最大频率为400KHz 的 I2C 总线。 如果需要、我将更改为具有两条 I2C 总线的 ESP32-S3。 有关如何将2.4 MHz 处的 ESP32总线与4个 ADS1015搭配使用的示例也非常好! 也可以选择更适合的 ADC。

Best、Jeroen

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Jeroen D、

    鉴于美国的假日周、请预计1月2日这一周内会有回复。 感谢您的耐心等待

    -Bryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Jeroen、

    [报价 userid="588981" url="~/support/data-converters-group/data-converters/f/data-converters-forum/1307854/ads1015-q1-how-to-reach-4x3300-sps-with-four-adcs-on-an-esp32 "]但是,我无法达到3300sps,即使在连续模式下也不能达到(我认为400kHz 是不够速度[/报价]

    400kHz 应大于足够的速度以读取所有四个 ADS1015-Q1器件。 如果您需要、ADS1015也支持高速模式、但应该不需要。 如果您需要有关 I2C 通信故障排除的帮助、我需要查看不良通信的示波器或逻辑分析仪快照。

    使用此器件时遇到的更大问题是 ADS1015-Q1无法同时采样。 使用此 ADC 可实现同步采样的最接近方式是同时启动其单次转换、而这会受到为启动转换而执行必要通信的速度的限制。

    我们没有可以同时对四个不同通道采样的 I2C 器件、因此建议使用 SPI 器件。 ADS131B04-Q1符合您的描述、而且具有板载振荡器、如 ADS1015-Q1、因此您无需提供时钟信号。

    如果您还有任何问题要问我、请告诉我、

    列维德弗里斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Levi,感谢您的答复! 遗憾的是、ESP32似乎不支持高速模式、但我无法100%确定。 那么、现在假设使用快速模式。

    通过查看 ADS1015数据表的7.6时序要求、我实际上认为在快速模式下、有足够的时间通过一条 I2C 总线读取四个 ADC。 但在实践中、对于 ESP32-S2、我需要选择500kHz 以只读 两个 ADC 的原因是400kHz 太慢(在700kHz 时、我收到读取错误、但这是另一个问题)。

    由于 ESP32内核使用内核库中的中断、因此我无法使用 RDY 信号上生成的中断来读取数据。 相反、我从中断中恢复 FreeRTOS 任务、以读取样本。 这对于一个 I2C 上的两个 ADS1015在3300SPS 下也可以正常使用、但我无法使用三个 ADS1015。 欢迎就这方面提出任何建议!

    对于同时采样、我现在计划使用一个 RDY 引脚生成中断、恢复读取任务并读取全部四个 ADC。 根据不同 ADC 之间的漂移、我可能会丢失一个样本或多次读取某个样本、然后我会进行预期、但我认为这对于我的用例而言不太重要。

    我将查看 ADS131B04-Q1数据表。 我希望它也有一个内部基准电压:)。 您是否希望通过 SPI 进行的读取大幅加快?

    此致、Jeroen

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jeroen、

    查看 ADS1015数据表的7.6时序要求、我确实认为在快速模式下有足够的时间通过一条 I2C 总线读取四个 ADC。 但在实践中、对于 ESP32-S2、我需要选择500kHz 以只读 两个 ADC 的原因是400kHz 太慢(在700kHz 时、我收到读取错误、但这是另一个问题)。[/报价]

    您能详细介绍一下您在这里看到的问题吗? 如果您从四个 ADC 进行读取、则每个采样应有121个 I2C 时钟周期(3.3kSPS)、这意味着为每个 ADC 分配了30.3个时钟进行读取。 您应该能够在27位(一个地址字节加上两个结果字节)内对同一寄存器进行重复读取、并且仍然有3个周期来执行开始和停止。 如果您的微控制器使用400kHz、我预计它应该能够至少做3个 ADC、但如果您无法很好地控制时序、那么您的运行可能太慢而无法从4个 ADC 中读取数据。 请确保您没有重复写入地址指针寄存器、因为这样会浪费您的时钟周期:

    本文档有一小部分介绍了高速运行情况、对您可能会有所帮助: https://www.ti.com/lit/an/sbaa565/sbaa565.pdf

    另请记住、该器件只应在快速模式下以高达400kHz 的频率运行、超过该频率运行可能会导致通信错误。

    由于 ESP32内核使用内核库中的中断、因此我无法使用 RDY 信号生成的中断来读取数据。 相反、我从中断中恢复 FreeRTOS 任务、以读取样本。 这对于一个 I2C 上的两个 ADS1015在3300SPS 下也可以正常使用、但我无法使用三个 ADS1015。 任何关于这一点的建议都很受欢迎!

    我对您刚才提到的特定硬件/软件设置了解不多、但这可能是您在微控制器方面所做的事情。 如果您有逻辑分析仪或示波器、则可以轻松地检查 I2C 通信是否以及查看输出是否错误。

    要同时采样,我现在计划使用一个 RDY 引脚生成中断,恢复读取任务并读取全部四个 ADC。 根据不同 ADC 之间的漂移、我可能会漏掉一个样本、或者每次重复读取一个样本、然后我就会预期、但我认为这对于我的用例来说不太重要。

    这是可行的、但从任何意义上讲、它都不是"同时"的、因为 µs 在最坏的情况下、采样可能是一个完整转换(303 μ s)。

    我准备查看 ADS131B04-Q1数据表。 我希望它也有一个内部基准电压:)。 您是否希望 SPI 上的读出速度明显更快?

    是的、ADS131B04-Q1具有内部基准电压。 SPI 通常对其额定速度具有更高的上限、并可以在 ADS131B04-Q1上的25MHz 下运行。

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Levi, 非常感谢你的全面答复,这是非常感谢!  

    我使用的是 ESP32 HAL (硬件抽象层)的功能。 I time 读取一个寄存器所需的微秒数(且该函数每次确实会发送地址指针)、然后 I time 调用此函数两次(每个 ADS 一次)、在500kHz 频率下获得3300个样本。 这需要1015ms 左右。 15ms 用于打印我认为的结果。 当我做同样的操作、但这次读取3 ADS 需要2015毫秒。 我几乎可以确定的是:由于3次读取操作花费的时间太长、我错过了由中断设置的 RDY 标志、因此我错过了一个完整的周期、从而导致了两倍的预期时间。 在以400kHz 的频率读取两个 ADS 时会发生相同的情况

    接下来我要测试的是,感谢您的所有建议,直接致电驾驶员。 这就提供了重复仅读取 I2C 总线而不重新发送地址指针的机会。 我很好奇这个在 持续时间的 Wlll 节目是什么。

    我认为糟糕结果的根本原因在于标准 ESP 核心库中的内容。 我在互联网上的某个位置发现一个论坛线程、报告不必要地等待 FreeRTOS 节拍。 这也可能是我遇到问题的原因。  我希望通过使用低级驱动程序函数来避免这些问题。

    我有一个示波器、但我不是很有经验。 此外,我感到不安的是,它将导致同样的结论:有一个不必要的等待。 然后我仍然需要找到或避免等待...

    我知道采样有可能相隔一个完全转换。 是否有办法同步它们? 我也不知道该怎么说。 我能做的最好的事情就是尽可能短的时间后启动它们。 但即使这样、ADS 也会在不同的色谱中漂移一点。 对于如何同步四个 ADS 的任何想法,都是非常受欢迎的!

    由于对3相电源进行采样是一个相对通用的用例、因此可能需要一个同时进行3个采样的 ADC 来为 TI 开发一款新产品?

    我快速浏览了  ADS131B04-Q1数据表。 它的规格比 ADS1015更好、但目前我先尝试解决 ADS1015的时序问题

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jeroen、

    我认为糟糕结果的根源是 stadard ESP 核心库中的内容。 我在互联网上的某个位置发现一个论坛线程、报告不必要地等待 FreeRTOS 节拍。 这也可能是我遇到问题的原因。 通过 使用低级驱动程序函数,我希望能避免这些问题。

    如果您希望从微控制器获得这种级别的性能、您很可能必须熟悉器件的功能、尤其是外设、并 编写利用微控制器提供的任何硬件加速的代码。

    我有一个示波器,但我对它不太熟悉。 此外,我感到不安的是,它将导致同样的结论:有一个不必要的等待。 然后我仍然需要找到或避免等待。

    这对于您当前进行的故障排除并不是必需的、但它是一个有用的调试工具、您在完成之前可能会发现它很有用。 这是一种检查输出的防火方法、因为必要时所有通信都必须存在于 I2C 线路上。

    对于如何同步四个 ADS 的任何想法都非常受欢迎!

    实际上、这款器件根本无法实现。 没有您可以发送的"SYNC"信号来强制所有设备聚集在一起。

    由于三相功耗采样是一个相对一般的用例,因此可能一个同时进行三个样本的 ADC 可能是 TI 新产品的创意吗?

    实际上、我们提供多通道器件、如这样的器件- ADS131B04是一种4通道同步采样 ADC、而我们提供类似的8通道器件。 我们的器件恰好具有3个通道、但在我的估计中、4通道 ADS131B04更适合您的用例。

    如果您还有任何问题、请告诉我、

    列维德弗里斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Levi ,再次感谢你:)。 TI 是否提供任何具有与以前相同的速度和分辨率规格的4个差动通道同步 ADC? 此致、Jeroen

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Jeroen、

    如数据表中所述、ADS131B04是一款具有4条同步采样输入通道的差分器件。

    在我们的目录中搜索时、您可以按特征进行筛选、例如输入架构以及您之前提到的所有其他特征。 下面是一个在目录中进行搜索的示例、您可能会觉得它很有用: https://www.ti.com/data-converters/adc-circuit/precision-adcs/products.html#84=12%3B32&776=Differential&1028=3%3B16&3091=Simultaneous%20Sampling&157max=3.3%3B8000&sort=1130;asc&

    如果有任何不清楚的地方、

    列维德弗里斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Levi:

    现在一切都很清楚。 我在地址0x48和0x49上的一条 I2C 总线上具有两个 ADS1015的测试 PCB。 我会在本周结束前收到这些通知。 我将首先对此进行重点介绍。 如果仍然需要、我可能会进一步研究 ADS131B04。 再次感谢您提供的所有见解!

    此致、Jeroen