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.

[参考译文] Linux/ADS7841:ADS7841

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/782849/linux-ads7841-ads7841

器件型号:ADS7841

工具/软件:Linux

您好!

我尝试测量通道0处的电压

CMD 0x97代表以下配置。

7 位   =>  开始位。 控制字节从第一个高位- 1b 开始
6-4 位  => A2 - A0通道选择位- 001b (通道0)
3位      =>  模式- 0b (12位 ADC)
2位   => 单端通道选择 - 1b
1-0Bit   =>  断电模式无断电- 11b

我在 MISO 线路上观察随机值。 请查看命令值。 是否有任何测试模式/命令可用于检查 ADC 芯片响应的验证。

根据 您之前的评论、

>>每次转换发送多少个时钟?

如何检查配置的每次转换时钟?

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

    您好!

    您在 MISO 线路上看到了什么?  测量结果是否显示不同通道的结果、是否有模式?

    您使用的命令似乎正确。 在最初的帖子中、您似乎能够实现正确的测量、我看到的差异是您尝试从  8位到12位、这是正确的吗? 为此、需要将 MODE 位从高电平(8位)更改为低电平(12位)。 请注意  、MODE 引脚需要连接高电平才能进行配置。  如果将 MODE 引脚拉低、器件将始终设置为12位。

    我建议将数字线路、MISO、MOSI、SCLK 和 CS 连接到示波器上、这样可以更轻松地进行调试、因为您可以直观地确认 MOSI 线路显示的是预期的内容、并确认数字通信。 在输入端使用已知的直流值来确认输出测量值。

    在这个宝贵的帖子中、他询问 每次转换时有多少个时钟脉冲被发送到器件。 该器件具有多个选项、24个时钟、16个时钟或15个时钟。 这取决于用户。   最常见的是每次转换16个时钟、请参阅下图。

    此致、Cynthia

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

    您好!

    感谢您的评论。

    CPU 和 ADC 芯片之间有电压电平转换器、我的硬件中 MODE 引脚为低电平。

    通过查看序列图、我感觉我需要使用 LSB 优先选项配置主 SPI 控制器、并将 ADC 芯片配置为 MSB 优先。
    是这样吗?

    我可以在 MOSI 线路中看到发送,但在 MISO 线路中看到随机数据。

    对于12位和8位、这种行为是相同的、转换后的值与给通道的电压不匹配。

    我要附上一个探头实例供您参考。

    该 ADC 芯片是否有任何测试模式、以便我可以在 MISO 线路中期望预定义的模式?

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

    如果在硬件中、Mode 引脚被拉低、则无法使用8位转换。 即使您更改了命令、您也只能使用12位转换。 硬件会对其进行溢出。
    主器件和 ADC 都应设置为 MSB 优先配置。

    启动新转换命令的第一个位需要为高电平、这是开始位。 如果未设置该位、则器件无法识别您发送的命令。 观察 MOSI (SDI)线路、您似乎没有将该位设置为高电平、因此器件将不会执行预期的命令。
    用于选择通道0、单端、不带断电功能的数字输入如下所示:10010111
    尝试提供此命令、并让我知道您在 SDO 上看到的内容

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

    您好!

    感谢您的回答。  

    我对你的答复有几个困惑

    >>启动新转换命令的第一个位需要为高电平,这是开始位。
    >>用于选择通道0的单端数字输入(不带断电功能)如下所示:10010111

    我知道我应该使用的命令是(MSB) 1001 0111 (LSB)(即 x097)。

    >>主设备和 ADC 都应设置为 MSB 优先配置。

    根据此注释、SDI 线路应包含以下位序列中的数据。
      (LSB) 1110 1001 (MSB)。按照顺序、起始位按照 ADC 芯片要求为高电平。 请发表评论。

    执行0x97命令后、2组1字节(0x00)虚拟数据从芯片中获取12位 ADC 数据。

      这种方法是否正确?

    3、要计算电压、我将获取最后12位数据、计算如下所述。

      1个测试实例的12位数据

      数据 = 1000 0000 0000b、十进制为2048

      位因子 = 5/2^12 = 5/4096 = 0.00122。 (Revfence 电压为5V 和12位 ADC 模式 )

      电压与观察到的数据相关= 2048x0.00122 = 2.49V

      计算方法是否正确?

    所附图像中的通道0用于 ADC 芯片的忙线。与转换时序图进行比较时、我可能会看到一些差异。执行命令后、 忙线应变为低电平、用户需要在忙线为低电平时考虑转换后的数据。但我当时可以看到数据。 给出的附件就是示例。
    您能否评论一下忙线行为。是不是预期的行为?

    附加 SPI 线路行为以供您参考。

      

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

    您好,

    我还有一些实验、更正了发送到 ADC 芯片的命令。

    在命令更新后、我将考虑繁忙下降后的12位数据、并使用这些数据进行计算。

    它会产生适当的电压。 我将附上信号分析屏幕截图供您参考。

    我知道、一旦忙线变低、我们就需要考虑数据。在我的实验中、忙线在1个时钟周期后变为低电平。
    可以跳过 IE 第9个时钟数据、在计算电压时需要考虑下一个数据(12位数据)。

    这是预期行为吗? 我能否继续推进这一概念?
     

    请注意、当前忙线未连接到我的 CPU。 以便我无法监控应用程序代码中的忙线。  

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

    您看起来是在向正确的方向移动

    发送的命令、前8位正确、可启动转换采样通道0。

    当 BUSY 为高  电平时、您不应计时输出数据、可能会有轻微的重叠、这可以在时序图中看到、但您需要确保不跳过第9个时钟数据。  我建议监控 BUSY 信号、以确保不会发生时序错误、也不会跳过 SDO 数据。

    您提到、您发送16个时钟脉冲作为 DUMMCW 时钟输出数据、这种方法有效。 如果您在每次转换时使用器件时钟周期为16、则还可以在 SDI 上通过第二个字节(第二组8位)向器件发送命令、以对下一个所需器件进行采样。 以下图为例。

    您正在根据 SDO 数据正确计算电压测量值

    此致、Cynthia

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

    您好!

    感谢您的回答。

    >>您曾提到,您发送16个时钟脉冲作为 DUMTI 时钟输出数据,此方法有效。

    好的、我将按照这种方法从芯片获取 ADC 数据。

    在这里、我的问题是忙线未连接到 CPU、因此可能无法监控该线。
    正如我在前一篇文章中提到的、在第9个时钟周期后、只有繁忙线变为低电平。那么、我是否可以考虑采用该方法来获取 ADC 值?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    最好监控忙线、但如果无法监控、则需要使用其他时序方案。
    如果您已经看到使用第9个时钟周期作为指示器正常工作、则可以继续这样做。

    请注意、如果您更改器件时序(例如采样率)、繁忙时间可能会受到影响、您需要再次确保第9个时钟周期为繁忙状态变为低电平提供足够的时间。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您的回答。

    我将使用第9个时钟周期作为 ADC 方法的指示器。

    我想知道基于繁忙线路监控的 ADC 数据读取机制概念。 以便我们可以将其用于具有忙线支持的下一个修订版电路板。
    在这里、我的困惑是 SPI 读取与 CLK 同步。 在这种情况下、我如何识别处于低位忙线的数据。 请发表一些评论

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当然、BUSY 表示器件正在进行模拟测量、因此在此期间器件内最好不存在任何移动、例如计时。
    您可以使用 BUSY 来监控器件何时处于此状态、并使用 BUSY 的下降沿作为开始计时输出数据的指示器。 对于 ADS7841、BUSY 变为低电平后的 SDO 数据是控制位命令中要求的通道的测量数据。
    这在具有内部寄存器的其他器件中可能不同、也可能是同时采样。
    此致、
    Cynthia
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您的回答。

    下面将从您的回答中提到我的理解。

    发送8位命令。
    监视繁忙线的下降沿
    如果在获得忙线下降边沿条件后、发送2组8位虚拟数据来从 ADC 芯片获得数据。

    理解是否正确?

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

    感谢您的回答。

    我将讨论 ADC 芯片响应观察结果。

    连续发送 ADC 命令后、我将获得正确的值。
    例如,如果我发送命令1 time (第一次),则预期值不会出现。(预期值表示给定输入电压的 ADC 值)。

    如果我重新发送该命令20或10次、那么我将获得正确的命令。 因此、我计划采集50个样本来计算输入电压。

    这是预期行为吗? 芯片是稳定输出值所需的时间、还是用户需要反复发送命令才能获得 ADC 值?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    这是否仅在启动后的第一次转换期间发生? 还是在您运行器件时定期发生?
    数据是否完全错误或随机、或者看起来是否缺少位? 这可能是因为当 BUSY 为高电平时、时钟输出数据、并且来自两个转换的数据正在混合。

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

    您好!

    主要是在转换后针对1个数据进行。 目前、我要采集10个样本并处理更安全端的平均值。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    鉴于这是一个多路复用器件、第一次转换不会保存有效数据是有意义的。 我建议忽略第一次转换。 如果剩余的数据没有问题、则平均也将起作用
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我现在很清楚。 我们可以将该线程视为已关闭。

    感谢您的宝贵响应和支持。

    祝你一切顺利。