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.

[参考译文] ADS1118:nDRDY未正确响应(间歇性)

Guru**** 2589280 points
Other Parts Discussed in Thread: ADS1118

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/642443/ads1118-ndrdy-not-responding-correctly-intermittent

部件号:ADS1118

我正在定制电路板上使用ADS1118 ADC,运行频率为5V/3.3MHz SPI。 我在单次激发模式下使用它,在AIN0:AIN1上的差分输入测量和内部温度测量之间交替使用。

我看到的问题是在切换输入并开始新转换时,接下来我将轮询nDRDY以查看转换完成的时间。 间歇性地(可能是10个样本中的1个) ADS1118在#CS变得较低后,将指示只有~2us通过时才会有新的结果(以128SPS运行,这比实际的结果要快*多*)。 同样,发生这种情况时,为新转换检索的数据结果与以前的转换完全匹配,再次确认另一个转换实际上没有运行。 以下是SPI接口的屏幕截图,显示发生此问题:

问题在灰色圆圈中,nDRDY变低,#CS表示新样品已准备好,但显然没有。

有趣的是,在我注意到的完全相同的故障中,nDRDY信号有时会在#CS变低且在SCLK上的第一条边线之前出现响应,这在此处圆圈中显示:

并在此处详细显示:

看起来ADS1118可能试图表明样品尚未准备就绪,但它已经将nDRDY降低到~2us,远远长于数据表中的t (CSDOD)规范100ns。

我很难解释这种行为,因为似乎满足了所有计时规范。 此设备似乎没有勘误表,因此我不确定这是否是已知问题。 在阅读了有关ADS1118的其它相关问题之后,唯一有趣的提示是TI的Krunal Maniar对在单触发模式下运行时的20us延迟所做的评论,如下所示:  

我真的很想听到关于为什么会出现这种情况的任何想法,以及任何可能的解决方案!

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

    Cory,


    我们通常不会制作勘误表,而是尝试将我们发现的任何问题纳入数据表修订。 话虽如此,我认为在特定条件下,您所看到的都是预期的。 我会解释一下我认为正在发生的事情,并尝试一些事情。

    让我们从您的第一个示波器快照开始。 下面是:



    我认为您所期待的是当/CS返回低电平时,转换完成时DOUT/DRDY应该为高电平。 但是,在读取设备后,DOUT/DRDY不一定返回HIGH (高)。 请参见数据表中的图42。 在检索数据结束时,DOUT/DRDY可以是高或低,因为它保留从设备读取的最后一位的值。 当/CS再次返回HIGH (高)和LOW (低)后,DOUT/DRDY将继续保留在/CS转换之前的最后一个位值。

    下面是第二个示波器截图:



    我想,设备开始发出信号,表示它已经完成了转换。 但是,您已中断设备。 您已开始计时SCLK,而不是如数据表图38所示的设备发出预期的8us脉冲。 设备响应DOUT/DRDY上的数据超频,而不是完成脉冲。

    现在,您可以尝试几种方法。

    首先,我仍将以单次激发模式运行设备。 但是,要读回数据,我需要插入一个延迟来读回设备。 如果您运行的是128 SPS,则在7.81ms+sps 10 % 或8.6ms后开始回读。 这应确保产生新的转换结果。

    其次,您可以开始转换,循环/CS (或不循环),然后轮询DOUT/DRDY以查找8us脉冲,从而确定何时读取数据。 您想要查找的不是DOUT/DRDY的状态,而是DOUT/DRDY的低转换。

    不管怎样,请尝试这些操作中的一项或两项,看看它们是否适合您。 如果您有问题,请随时回复。


    吴若瑟

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

    您好,Joseph:

    感谢您的快速,详细的回复,非常感谢! 阅读您的帖子后,我不确定我是否完全同意该设备的运行方式,至少还没有。

    报价(JW)回复:第一个屏幕截图:

    我认为您所期待的是当/CS返回低电平时,转换完成时DOUT/DRDY应该为高电平。 但是,在读取设备后,DOUT/DRDY不一定返回HIGH (高)。 请参见数据表中的图42。 在检索数据结束时,DOUT/DRDY可以是高或低,因为它保留从设备读取的最后一位的值。 当/CS再次返回HIGH (高)和LOW (低)后,DOUT/DRDY将继续保留在/CS转换之前的最后一个位值。  

    您的回答是正确的,我希望DOUT/DRDY在单次激发模式下和数据传输之前静态地表示转换状态,这当然是数据表所显示的(9.5 .7.2):

    报价(数据表):

    获取CS HIGH将重置SPI接口。 下次降低CS时,数据传输将从第一个SCLK上升沿的当前缓冲转换结果开始。 如果数据检索开始时DOUT/DRDY为低电平,则转换缓冲区已更新为新结果。 否则,如果DOUT/DRDY为高,则会读取上一个数据传输周期的相同结果。

    这似乎非常清楚地表明SPI接口在/CS循环时重置,并且当#CS变为低电平时,DOUT/DRDY应表示转换状态。 我的解释是,在图42中,/CS变低之后的不确定数据只是表明转换可能尚未完成,您需要等待其变低,然后才能开始数据检索以获得新的结果。

    我注意到,此问题仅在温度测量之后发生,这一点很有趣。 由于温度读数是左杂位/14位,因此第一个转换结果的LSB始终如您所建议的为0。 但是,在LSB =0的ADC转换后,此问题不会出现。

    报价(JW)回复:第二个屏幕截图:

    我想,设备开始发出信号,表示它已经完成了转换。 但是,您已中断设备。 您已开始计时SCLK,而不是如数据表图38所示的设备发出预期的8us脉冲。 设备响应DOUT/DRDY上的数据超频,而不是完成脉冲。

    我认为这里有几件事不太合适:

    1. 这种脉冲发生在转换开始后~5us,我认为可以肯定地说,在128SPS时,转换不可能已经完成。 我还以完全相同的结果重新运行了32SPS测试。
    2. 图38中的8us脉冲仅适用于连续转换模式,表示未读取以前的转换结果,并且新结果已覆盖它。 我认为这不适用于此。 我确实同意SCLK转换会中断DOUT/DRDY脉冲,但我不知道为什么我们首先看到这个脉冲。
    3. 设备正在AIN0:AIN1上运行单次激发转换,但返回的温度传感器数据非常清楚。 这是我最关注的问题。

    似乎我看到的行为总是在温度转换之后,但只有在5 10 % 的温度转换中才会发生。 我已经解决了时间和延迟问题,我可以让它在工作台上始终如一地工作,但我需要对这个问题以及为什么会发生这个问题感到更自在,然后再投入生产数千台设备。

    再次感谢您的帮助!

    Cory

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    只是想添加一个注释,说明温度测量是红色鲱鱼。 我在模拟测量之后执行了许多计算,这些计算增加了足够的延迟,使得/DRDY从未被错误采样。 删除这些延迟显示在温度测量和模拟测量(包括LSB = 1的情况,我以前无法确认)之后会出现此问题。

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

    Cory,

    我阅读了你以前的帖子。 让我先谈谈有关第二个示波器镜头的评论,然后回到有关数据表的评论。 我将引用您的两个红色引号

    1.这一脉冲发生在转换开始后~5us,我认为可以肯定地说,在128SPS时,转换已经完成的可能性不大。 我还以完全相同的结果重新运行了32SPS测试。

    问题是我不确定转换实际从哪里开始。 您似乎在为与设备的每次通信发出转换开始。 每个通信在配置寄存器的MSB中都有一个1。

    在单次激发模式下,当设备已开始转换时,新的转换开始不会中断转换。 设备只需等待转换完成,并将该命令保留在缓冲区中。 转换完成后,它将在配置寄存器中进行更改并开始新的转换。 因此,如果您提供多个起始转换,转换可能在本示波器截击之前就已开始。 如果您只想读回设备,请确保配置寄存器的MSB为0。

    2.图38中的8us脉冲仅适用于连续转换模式,表示未读取以前的转换结果,并且新结果已覆盖它。 我认为这不适用于此。 我确实同意SCLK转换会中断DOUT/DRDY脉冲,但我不知道为什么我们首先看到这个脉冲。

    我非常确信连续转换模式和单次激发模式之间的DOUT/DRDY行为没有区别。 我认为数字标题写为连续转换模式,因为这是使用它的模式。

    回到有关第一个示波器镜头的其他评论,您对数据表中有关DOUT/DRDY具有新的转换结果并且在/CS返回低电平时处于低电平的说法是正确的。 它的写法肯定支持你对它的解释。 但是,我需要对此进行检查,因为我不确定如果在有另一个转换时,另一个转换处于准备就绪状态,那么这将如何更改DOUT/DRDY。

    如果你们有机会,我将对读出的内容作两处修改。 首先使用32位数据传输周期来回读设备。 如图40和41所示,读取后应强制DOUT/DRDY为高值。 其次,我要确保在当前转换完成之前,不会启动另一个单次转换。 即使您使用32位传输周期。 在/CS返回低电平后检查DOUT/DRDY的状态,然后再次尝试将转换开始写入配置寄存器。

    吴若瑟

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

    约瑟夫

    再次感谢您帮助缩小此问题的范围。 我将以蓝色引用您的报价,以尝试使事情易于遵循。

    1.(JW)问题是我不确定转换的实际开始位置。 您似乎在为与设备的每次通信发出转换开始。 每个通信在配置寄存器的MSB中都有一个1。

    我确实在每次与设备通信时发出启动命令。 基本控制流程为:

    答 在温度/丢弃数据时发出启动命令

    B. 轮询DOUT/DRDY直到低

    C. 在AIN0:AIN1/Retrieve Temperature Data (相同数据传输期间对AIN0:AIN1/Retrieve Temperature Data)上发出启动命令。

    D. 轮询DOUT/DRDY直到低

    e. 在相同数据传输过程中,发出温度启动命令/检索AIN0:AIN1数据。

    F. 轮询DOUT/DRDY直到Low (低)

    G. 永远重复c - f

    如您所见,与设备的每次通信(启动时的初始通信除外)都会检索之前的转换结果并开始下一次转换。 我没有(至少我可以说)在上一个转换尚未完成时发起另一个转换。 在未验证DOUT/DRDY线路为低电平的情况下发出No Start (无启动)命令。

    2. (JW)我非常确信DOUT/DRDY行为在连续转换模式和单次激发模式之间没有区别。 我认为数字标题写为连续转换模式,因为这是使用它的模式。

    我的印象是DOUT/DRDY在单次激发模式和连续模式下的行为不同,尽管可能我错了。 从数据表(9.5 .5):

    在连续转换模式下,如果未从设备中检索到数据,DOUT/DRDY将在下一个数据就绪信号(DOUT/DRDY LOW)之前再次高8 µs转换。 图38显示了这种过渡。  

    从这种描述中,我觉得8 us脉冲在单次激发模式下永远不会发生,因为您永远不会让后续转换覆盖转换结果。 每次开始转换时,我都会读取之前的结果,因此不会出现结果缓冲区溢出的可能性。

    3. (JW)首先使用32位数据传输周期来读回设备。 如图40和41所示,读取后应强制DOUT/DRDY为高值。

    我以前就这样做过,它确实解决了问题,至少在工作台上。 事实上,16位数据传输后~5us的任何延迟也可以解决问题,所以我认为它与数据线的状态无关,而是与SPI接口的计时有关。 我一直担心的是,此修复程序在工作台上工作, 但是我真的很想知道,如果设备在85°C的温度下运行,时间发生变化,并且突然问题再次出现,我会有什么信心在现场不会发生故障。

    4.(JW)其次,我会确保在当前转换完成之前,不会启动另一个单次转换。 即使您使用32位传输周期。 在/CS返回低电平后检查DOUT/DRDY的状态,然后再次尝试将转换开始写入配置寄存器。

    目前正在进行这项工作。 在未完成之前的转换(即DOUT/DRDY线指示已完成,保持低电平)的情况下,不会开始转换。

    问题仍然是,当转换明显未完成时,DOUT/DRDY线在/CS降低后保持在低位。

    感谢您的所有帮助!

    Cory

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

    约瑟夫

    我将在此处包括一些快速屏幕截图,希望这些截图将涵盖我们讨论过的内容:

    这是在我操作ADS1118期间发生的3次传输的序列。 数据速率设置为250SPS,并且可以看到样本按预期的~4ms间隔出现。 在/CS上看到的DRDY采样工作良好99.9 % of the Time:

    传输#1是检索AIN1:AIN0数据,如图所示(满刻度结果0x7FFF)和在温度通道上开始转换的命令:

    转接#2是我看到DRDY被错误地拉低的问题:

    第一次传输从温度通道提取数据,并在AIN1:AIN0上开始转换。 /CS被停用以重置SPI接口,然后再次声明以轮询DRDY,DRDY (错误)表示转换已完成。 我不再读取AIN1:AIN0数据,而是再次读取温度数据,我的数据缓冲区已损坏。

    转印#3再次读取温度数据,如下所示:

    同样,我看到的这种双转接问题仅在5个时发生- AIN0:AIN1读数的10 % ,并且不一致。

    Cory

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


    很抱歉,我昨天没有回复您。 还有一些其他的事情出现了。 不过,这的确让我有机会思考这个问题。

    您的一个评论是:

    "我以前就这样做过,它确实解决了问题,至少在工作台上。 事实上,16位数据传输后~5us的任何延迟也可以解决问题,所以我认为它与数据线的状态无关,而是与SPI接口的计时有关。 我一直担心的是,此修复程序在工作台上工作, 但是我真的很想知道,如果设备在85°C的温度下运行,时间发生变化,并且突然问题再次出现,我会有什么信心在现场不会发生故障。"

    如果延迟~5us可以解决此问题,那么我会将此问题扩展到20us,作为一个解决方案。 这是我认为的问题。 在单次激发模式下开始转换时,转换将完成,然后关闭设备。 此时,模拟部分和振荡器断电,数字不计时。

    当您在16位回读模式下重新阅读以开始新的转换时,您将开始新的转换,但直到1才会转换。16位配置寄存器完全写入,2。设备已重新通电,振荡器已重新启动。

    当您在读取设备后检查DOUT/DRDY 5us时,设备可能未再次通电。 没有SCLK或内部时钟可将DOUT/DRDY恢复到高水平。 通常,我会说等待20us (考虑过程和温度的变化)让设备重新通电,然后再检查DOUT/DRDY。

    尝试一下,看看是否适合您。


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


    出于好奇,我的上一篇文章是否帮助解决了您的问题? 我只是想确保您获得DRDY/DOUT错误的解决方案。 现在我将关闭此帖子,但如果您想继续提问,您可以添加到此帖子,或者在您被锁定时提交新帖子。


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

    您好,Joseph:

    为地球上的坠落感到抱歉,我已经结束了任务,忘记了回复。 虽然我对您提出的解决方案并不完全满意,但这是我最后不得不做的事情

    当您在读取设备后检查DOUT/DRDY 5us时,设备可能未再次通电。 没有SCLK或内部时钟可将DOUT/DRDY恢复到高水平。 通常,我会说等待20us (考虑过程和温度的变化)让设备重新通电,然后再检查DOUT/DRDY。

    我一直担心的是数据表中规定了检查/DRDY的无延迟时间,而20us延迟就像是一根手指在风中。 实际上,该设备似乎不是按照规范运行,这始终是令人担忧的。 至少在这个应用程序中,增加延迟并不是一个困难的黑客攻击,我希望有足够的空间来避免任何问题。

    非常感谢您提供的所有帮助,非常感谢!

    此致,

    Cory

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


    感谢您回复我。 我理解您对增加延迟的担忧,以及当设备重新通电时DOUT/DRDY线路如何不显示正确的输出。 我将检查并查看我们是否可以进行数据表更改以使其更清楚。

    不管怎样,谢谢您提出这个问题。 如果您有任何其他问题,请随时开始发布新帖子。


    吴若瑟