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.

[参考译文] ADS124S08:是否可以轮询状态寄存器中的 DRDYn 位以确定 SFOCAL 何时完成?

Guru**** 2595780 points
Other Parts Discussed in Thread: ADS124S08

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/942454/ads124s08-is-it-possible-to-poll-the-drdyn-bit-in-the-status-register-to-determine-when-sfocal-has-completed

器件型号:ADS124S08

除了在我的系统中建立一个固定延迟来考虑 SFOCAL (大约500ms)、是否可以轮询状态寄存器(位6)的 DRDYn 位来检查 SFOCAL 何时完成?

我们已经使用 ads124s08一段时间、但正在尝试提高电路板上电压/电流监视器的精度。 数据表中显示、使用 SFOCAL 校准失调电压应该很容易在我们的 FPGA 设计中实现、到目前为止、我们还没有成功。 任何帮助都将不胜感激,谢谢

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

    如果有用、以下是我尝试从器件中捕获的步骤:

    首先将多路复用器通道指针(‘CHAN’)初始化为0

     

    步骤1:在 ADC 中配置以下寄存器:

     

    REF (05h)= 39h

    数据速率(04h)= 34h

    INPMUX (02h)= 0Ch

     

    步骤2:读回并验证在步骤1中配置的寄存器

     

    步骤3:发送 START 命令

     

    步骤4:发送 SFOCAL 命令

     

    步骤5:等待1秒钟

     

    第6步:将 INPMUX 设置为{ 、0xc}

     

    步骤7:发送 START 命令

     

    步骤8:等待100ms、然后发送 RDATA 命令

     

    第9步:‘FPGA 中的寄存器中的 ADC 数据,将指针“CHAN”递增1 (如果‘CHAN’等于12,则复位为0),然后转至第6步

     

    注释、

    • 指针‘CHAN’在0和11之间循环
    • 在步骤6到9之间循环的序列无限期持续(直到向模块发送复位)
    • FPGA 中‘了12个存储 ADC 数据的寄存器(由变量“CHAN”指向)

    如果我跳过步骤4和5、我能够捕获数据、而不会出现任何问题。 但是、这不是解决方案、因为我需要补偿偏移

    Kevin

     

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

    很抱歉,我在上一篇文章中列出了我在发出 SFOCAL 命令后使用的简单延迟(1秒)的顺序,而不是我在第一篇文章中提到的状态轮询。

    昨天晚上、我决定在阅读文章后尝试延迟方法、Bob 建议400ms 延迟对于 SFCAL 来说可能足够了(无论如何、对于该特定配置)。 我的最终目标是使用状态(DRDYn 位)轮询方法、但现在、如果我可以使延迟方法正常工作、那就会给我一段时间

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

    尊敬的 Kevin:

    我很抱歉耽误您的回答。 我认为状态寄存器中的 RDY 位存在一些混淆。 该位通知您加电后何时可以开始与 ADS124S08通信。 当转换完成时、它没有响应。 DRDY 或 DOUT/ DRDY 上的高电平到低电平转换表示转换完成。

    一个一般注释是在 ADC 转换期间以及转换完成之前、必须发出 SFOCAL。

    此致、

    Bob B

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

    尊敬的 Bob:

    感谢你的帮助。

    当您提到在 DRDY 或 DOUT/DRDY 中寻找由高电平到低电平的转换时、我认为您是指器件上的两个物理引脚(而不是我不知道的某些寄存器位)?

    遗憾的是、这是一种现有设计、我们的客户已经在其系统中安装了许多模块。 遗憾的是、更改电路板以允许 FPGA 监控这些引脚不是一个选项。

    考虑到这一事实、我需要修改 FPGA、使用两种方法中的一种来确保 SFOCAL 已经完成:

    1. 查询 ADS124S08中的某些寄存器位(如果存在此类位?)
    2. 在 FPGA 中建立等待时间(我读取了您的一篇文章、您建议使用400ms、但目前、为了安全起见、我已经内置了1秒延迟)

    它听起来像是选项1)是一个非启动器件,因为 RDY 位(状态寄存器的位6)在这方面没有什么帮助,但我希望2)能起作用。 这是我在之前的帖子中描述的流程(步骤1至9)。

    但是,我担心您的说法,即‘在 ADC 转换期间和转换完成之前,SFOCAL 必须是问题’。 鉴于 FPGA 无法监控 DRDY 或 DOUT/DRDY 引脚、使用基于 FPGA 状态机的方法、如何确保在发出 SFOCAL 命令时转换当前正在进行中?

    在我的状态机设计中、我发送 START 命令、一旦 SPI 可用、我就发送 SFOCAL 命令。 当 SFOCAL 完成时、这是否保证转换正在进行中、或者是否可以 a)尚未开始、或 b)已经完成?

    我意识到'DOUT/DRDY '引脚也是我用于 SPI 接口的引脚、因此 FPGA 已经将其作为 SPI 控制器实施的一部分进行监控。 因此、在理论上、我应该能够在发出 SFOCAL 命令后接入该信号并对其进行监控、以查找从高电平到低电平的转换。 但是、据我了解、我继续使用1秒固定延迟应该没有问题-这是正确的吗?

    因此、如果固定延迟是可以的、那么这就不能解决在转换过程中如何确保发出 SFOCAL 命令的问题了?

    如果有用、我已经捕获了 FPGA 内部的 SPI 信号、以显示 START 命令后跟 SFOCAL 命令。 如您所见、这些是背靠背的、但是否可以保证当 ADS124S08看到 SFOCAL 命令时、转换实际在进行中?

    此外、我想提到的是、我使用的是单次转换模式。

    请注意、该波形来自 Xilinx Vivado ILA、它实际上是一个"逻辑分析仪"、我已将其内置到 FPGA 中、用于调试该 SPI 接口。 您可以在顶部看到的时间刻度是时钟数、其中每个时钟的周期为4.56ns

    Kevin

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

    尊敬的 Kevin:

    我目前不在办公室、因此我无法给出详细的响应、但发送 START 之后的 SFOCAL 应该起作用。 延迟时间将由所选的数据速率和寄存器中设置的平均采样数决定。

    请参阅器件数据表中的信息。 您如何确定 SFOCAL 不工作?

    此致、

    Bob B

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

    尊敬的 Bob:

    很抱歉、我不知道您是在办公室外、无论如何都感谢您的回复。 如果您能向我提供任何信息、我们一定会不胜感激。

    "您如何确定 SFOCAL 不工作?" 。

    这是一个很好的问题。 答案是、无论我是否发出 SFOCAL 命令、我都会在转换后看到完全相同的读回值。 我想知道这是否合理、并且器件可能不需要更改偏移校准?

    我目前正在更新状态机、以便在 SOFCAL (+等待时间)前后转储三个 OFCAL 寄存器、以查看它们是否发生了变化。

    我将再次查看数据表、看看我是否可以确定延迟时间需要是多少。 我之前已经看过、但无法弄清楚、这就是为什么我超出了板面、现在决定使用1秒的延迟。 如果可能、我希望在我们产品的生产版本中将其降低。

    我忘记问一个问题 参考我之前给出的序列、我是否必须为我使用的每个多路复用器设置发出 SFOCAL 命令、或者这是否重要?

    Bob、我尝试了一个实验、修改了 FPGA 中的状态机、在 SFOCAL 命令之前和 SFOCAL (+等待时间)之后读取三个 OFCAL 寄存器、以查看是否有任何变化。 令我惊讶的是、这里虽然很小、但 结果如下:

    • 为电路板加电、对 FPGA 进行编程
    • 运行 python 代码(启用 ADC 逻辑并报告采集的值)。 结果:

    SFOCAL 之前:00、00 (OFCAL2、OFCAL1、OFCAL0)

    在 SFOCAL 之后:FF、FF、D7

    • 保持电路板通电、再次运行 python 代码:结果:

    在 SFOCAL 之前:FF、FF、D7

    在 SFOCAL 之后:FF、FF、D5 *

    • 保持电路板通电、再次运行 python 代码:结果:

    在 SFOCAL 之前:FF、FF、D5

    在 SFOCAL 之后:FF、FF、D6 *

    • 保持电路板通电、再次运行 python 代码:结果:

    在 SFOCAL 之前:FF、FF、D6

    在 SFOCAL 之后:FF、FF、D6

    在这里、您可以看到从运行到运行、OFCAL0的值正在(向上或向下)改变1或2。 这是否意味着自偏移校准正在工作?

    我不知道原因、但我希望偏移的调整会更加剧烈、

    Kevin

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

    Bob、

    我尝试了一个实验

    我修改了 FPGA 中的状态机、以运行上述步骤、但不发送 SFOCAL 命令除外。 从电路板加电和 FPGA 加载开始、我可以确认我始终从三个 OFCAL 寄存器读取0。

    因此、这似乎可以确认在我昨天的测试中、SFOCAL 实际上是在工作的。

    接下来、我将确定校准需要多长时间、然后我将相应地调整我内置到 FPGA 中的固定延迟。 我还将查看是否可以监控 FPGA 中的 SPI 'DOUT/DRDY '引脚、作为我最初尝试工作的轮询方案的可能解决方案。

    似乎我不能依赖'DOUT/DRDY '引脚来指示转换或校准何时完成。 在我的 FPGA 中、一旦 SPI 事务完成、我就会看到该引脚变为高电平-没有明显的延迟。

    因此、我决定尝试从数据表中计算延迟、但遇到了一些困难、想知道您是否可以提供帮助? 下面是我的寄存器设置:

    datarate = 14h (全局斩波被禁用、使用内部4.096Mhz 时钟、单次触发模式、低延迟滤波器、采样率= 20)

    REF = 10h (基准监控器被禁用、正基准旁路被禁用、负基准旁路被禁用、内部2.5V 基准、内部基准被启用)

    所有其他寄存器均为默认值

    在数据表的表13中、我可以看到单次模式@ 20SPS 的数据转换时间为56.504ms

    但是、我看到注释3、其中指出该时间不包括 DELAY[2:0]设置的 PGA 的可编程延迟。 但是、由于我不使用 PGA、我是否必须将其纳入延迟计算中?

    对于自偏移校准、如何计算该时间? 。

    在第9.3.14.1节"偏移校准"中、它提到了"SFOCAL 是一种自偏移校准、它使用 SYS_MON[2:0]= 001设置在内部将输入设置为中标度、并对偏移进行测量"和"在执行偏移校准后、 器件启动新的转换、而 DRDY 下降以指示新的转换已完成"

    因此、如果我想知道 SFOCAL 的总时间是常规转换时间的两倍、或者我是否必须考虑器件将输入切换为中标度的额外延迟? 对于可编程延迟(delay[2:0])、我还必须将其考虑在内吗?

    感谢您的帮助、

    Kevin

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

    尊敬的 Kevin:

    只需回顾几件事情。  对于将要使用的基准设置、数据速率和 PGA 设置、应发出 SFOCAL 命令。  MUX 设置并不重要、因为 SFOCAL 使用内部短路来确定偏移。

    如果您要使用显著增益、则更有可能看到更大的代码移位。  这是由于 LSB 值与增益128的增益之差、即增益为1。

    SFOCAL 的总时间主要取决于进行校准时所用的 SYS 寄存器设置。  SYS 寄存器中的位设置是 CAL_SAMP 位、其中默认为8个样本。  线程中之前注释的大约400ms 时间用于20sps 数据速率(8 * 1/20sps)。

    此致、

    Bob B