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.

[参考译文] ADS1247:信号时钟问题

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/655103/ads1247-problem-with-signal-clock

部件号:ADS1247
主题中讨论的其他部件: DAC8560

你(们)好

我将ADS1247连接到atxmega128a1u,但当我通过示波器检查时钟信号时,不会显示任何内容。 我很确定我的SPI配置没有任何问题,因为我通过RFID模块使用4MHz时钟信号检查了它,一切都正常。 此外,示波器上的其他信号(如/CS和DOUT)看起来正常,但时钟信号在重置后只有一个脉冲,然后变为低电平。

如果你能帮我的话,我真的很感激。

此致。

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


    我不确定我是否理解。 您是否正在查看主时钟信号(通常为4.096MHz)? 或者您在谈论SPI时钟? 两者都来自设备外部。 如果您使用的是ADS1247的内部时钟,则当CLK引脚连接到DGND时,此时钟将被激活,并且不可见。

    如果要检查设备是否正在运行,请使用示波器观察DOUT/DRDY线。 如果设备正在转换,您将看到一个与数据速率重合的小周期脉冲。


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

    您好,Joseph,感谢您的及时回复。

    我要说的是SPI时钟信号。 当我检查时钟和/DRDY信号时,不会显示任何内容,但是DOUT/DRDY信号在示波器上有脉冲,看起来正常。 我的实际问题是,当我将时钟信号连接到我的微电脑时,为什么看不到它的脉冲信号? 换言之,我应该可以看到示波器上的时钟信号脉冲,而当我在该端口上使用其他模块(如RFID)时,我可以看到时钟信号脉冲。 我想说ADC上的时钟引脚损坏了,但它最初有一个脉冲。

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


    因为SCLK源于ATmega128,所以我从这个开始。 ADS1247 SCLK引脚只是一个输入,不能关闭SCLK或使其消失。 我能想到的唯一可能的问题是焊接接头不好,偶尔会将SCLK连接到接地。

    如果您仍然遇到问题,能否发布SCLK (无论您能摆脱什么),DIN,DOUT和/CS的范围截图? 这可能有助于查看这些行以及它们如何被损坏。


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


    还有一件事需要检查。 确保起始销系在高位。 如果起始针脚处于浮动状态,可能会导致设备意外打开和关闭。 这将导致某些间歇性操作。


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

    您好,Joesph:

    以下是我的信号范围镜头:

    DOT/DRDY

    DOUT/DRDY

    DIN

    DIN

    /CS

    /CS

    SCLK

    SCLK

    为了更好地显示SCLK信号,我将范围时间更改为50ms。关于起始引脚,正如你所说,它总是绑在很高的位置,这没有任何问题。

    此致。

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


    由于分辨率有限和时标很长,所以很难看到,但设备似乎可能会响应。 最好更改时间刻度以确保仅显示1或2个数据输出。 您是否以50 SPS数据速率运行设备? 此外,您能否提供一个示意图?

    我不确定,但第四个示波器镜头看起来不像SCLK。 它类似于您在/DRDY (针脚17)处测量的内容。 您能否检查您的接线,以确保连接正确,并且您正在正确的针脚处测量SCLK?


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


    我想看看您是否能够找到问题的解决方案。 我认为此错误可能是由于您的示波器分辨率受限,或者由于示波器的连接读数放错了位置。

    如果您已解决此问题,我们可以关闭此帖子。 如果您还没有,请在回复中发表评论,以便我们继续调试您的电路。 不管怎样,如果我没有收到您的回复,我将很快关闭该线程。 如果您被锁定在该线程之外,只需启动一个新线程,我们就可以继续。


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

    您好,Joseph:

    很抱歉我的回复延迟,我很忙,感谢您的耐心等待。

    你的说法是对的,我的解决办法不准确,实际上,一切都很好,在检测到我的问题后,我发现我无法从我的注册表中得到答案的原因是NOP指令。

    我的意思是,在这个代码之后:

    SPI_Transmit (0x40);
    SPI_Transmit (0x03);
    SPI_Transmit (0x01);
    SPI_Transmit (0x00);
    SPI_Transmit (0x03);
    SPI_Transmit (0x42);

    我想阅读我的注册:

    SPI_Transmit (0x20);
    SPI_Transmit (0x03);

    但当我将"SPI_Transmit(0xFF);"放在"SPI_receive();"之前时,我得到了0x0万,但当我删除"SPI_Transmit(0xFF):"时,一切都很好。 现在,我可以准确地读取我的寄存器。

    现在 ,我的ADC读数也有同样的问题。 当我输入"SPI_Transmit(0xFF):"时,我得到了0x0万,但当我删除它时,我得到了0x7FFFFFFF。 请帮帮我。 我无法从我的ADC中读取数据。

    此致。

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

    MIL,


    我很高兴您能够阅读这些注册表。

    对于7FFFFFh的数据,您可能收到了正确的数据,但在设置中出现了错误或意外情况。 请注意,7FFFFFh是正满刻度的输出。 ADC可能正在测量的是满量程或过量程的输入。

    有几种情况可能会导致此读取:

    1.输入是浮动的。 这可能会拉开ADC输入以获得非常大的读数

    2.基准短路。 如果参考设置为0,则任何输入或偶数偏移都将被视为超范围输入。

    3.增益校准寄存器(FSR)设置不正确。 如果FSR设置不正确,您可能会比预期更快地超出输入范围。 如果偏移寄存器(OCR)设置也不正确,我确信您可以执行相同的操作。

    4. PGA设置为比预期更大的增益。 如果增益设置过高,则小输入可能会给出一个范围过大的值。

    我会验证所有寄存器设置,以确保您进行了正确的测量。 尤其要检查输入多路复用器设置和PGA增益。 然后,我将使用万用表测量输入电压和参考值,以使电压符合您的预期。 如果仍有问题,请重新发布寄存器设置和电压,以便我们可以查看它们。


    吴若瑟

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

    您好,

    感谢您的建议,他们帮了我很多!

    我想通过向ADC提供输入来验证测量值。 是否可以在没有任何模拟输入连接到ADC的情况下执行此操作? 如果答案是"是",我该怎么做? 我不熟悉这个概念,所以如果你能帮我,我真的很感激。 现在,我可以正确地读回寄存器,但我的输入是浮动的,所以我得到了7FFFFFh。

    此致,

    米拉德

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


    您可以在输入端没有电压源的情况下进行一些简单的测量。

    首先,如果您有几个电阻器,您可以从电源中制作一个可测量的电阻分压器。

    其次,您可以从系统监视器测量元素。 在ADS1247的MUX1寄存器中,系统监视器中有多个由MUXCAL位设置的选项。 如果设置值为011,则将温度传感器的输入设置为在25C时约118mV,并且漂移为405uV/C 设置为110将测量模拟电源,并将测量(AVDD-AVSS)/4。 最后,设置为111将测量数字电源并将测量(DVDD-DGND)/4。 如果我没有记错,则两个耗材显示器都有一些错误,并且准确度可能在5 % 附近。

    我用温度传感器来测试设备很多次。 您也可以通过将手指放在设备上加热几度来改变输入。 运行这些测试时,请确保启用了内部引用。


    吴若瑟
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    感谢您的回复。 这对我真的很有帮助。

    现在,我通过跳线将DAC8560连接到ADS1247的AIN0引脚,并生成分辨率为100mV的0-2.5V。

    ADC配置:
    SPI_Transmit (0x40);
    SPI_Transmit (0x03);
    SPI_Transmit (0x00);
    SPI_Transmit (0x01); //偏置电压应用于AIN0
    SPI_Transmit (0x30); //内部参考始终打开,正常操作
    SPI_Transmit (0x40); //增益= 16,SPS = 5

    我有一些测量值,但无法验证。 请帮我处理这些号码。
    71 F0 EBh,66 82 BDH,71 28 A1H,5F 13 21h,76 A9 95h, 6A C2 96h,6A 62 13h,69 25 EFH,5C 13 68h,5F 57 E0h, ...
    但当我要测量单点电压时,输出值将为7F FFFFh。

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


    仅仅看看您的SPI通信,我认为它不是衡量您想要它的目的。

    您发送的字节是:
    40 WREG从寄存器00开始
    03写入4字节
    00 BCS OFF (关闭BCS),将输入mux设置为AIN0和AIN0
    01将VBIAS设置为AIN0
    30始终打开内部参考,始终选择内部参考
    40 PGA=16,数据速率=5SPS

    主要问题是AINP和AINN都连接到AIN0 (按第一个字节的命令),然后两者都连接到VBIAS,后者现在连接到AIN0 (按第二个字节中的设置)。 当两个输入端相互连接时,您应该得到某种偏移测量。 如果要进行AIN0和AIN1的测量,则第三个字节应输入01而不是00。

    相反,看起来您得到的是一些较大的数字。 您是否更改了OFC或FSC中的校准系数? 您是否运行了校准命令? 首先,我将保留这些设置,而不运行校准。

    此外,您如何读取数据? 您是在连续转换模式下运行设备,然后在SCLK中计时,还是执行RDATA命令? 如果使用后者,我将首先运行SDATAC命令,然后在您要读取设备时发出RDATA。 通过发出SDATAC,您可以防止数据读取因完成新转换而中断。

    您是否能够从ADC执行我在上一篇文章中建议的其他读取(并获取正确的数据)?


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

    您好,

    感谢您的详尽回答!

    对于您的最后一个问题,我应该说我无法获得任何正确的读数,我只获得7F FFFFh。

    对于您的第二个问题,我现在不设置任何校准设置。

    你的第一个问题:我将第三个字节设置为0x00 (我知道这不正确)的原因是,当我将它设置为0x01时,我得到了7F FFFFh。 实际上,我想,因为我只有AIN0,所以没有必要设置AIN1。

    第三个问题是,我使用RDATA模式进行读取,当然,在RDATA命令之前,我发出SDATAC命令,就像数据表中的伪代码建议的那样。 此外,我不在代码中使用任何中断,但代码中的主要问题是等待DRDY引脚转至低转位不能正常工作,因为当我在范围上检查它时,DRDY大约每15秒转至低转位,但转换操作重复。 换言之,我希望下面的行每15秒运行一次,但它不会。

    当(gPIO_PIN_is_HIGH (DRDY_Pin));//DRDY引脚处于活动低电平时

    已附上我的代码 以阻止任何confusion.e2e.ti.com/.../ADS1247.c

    此致,

    米拉德

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


    如果您无法进行任何正确的测量,我会检查参考电压。 确保其最高可达2.048V且稳定。 我会用万用表测量它。 同时确保选择了正确的参考输入。 如果您的参考以某种方式最终为0V,或确实是很小的电压,则任何输入都可能使ADC提供满刻度读数。

    以防万一,我还会在出现问题时再读回OFC和FSC。

    此外,您提到ADC输入设置为AIN0。 我想确保您了解ADS1247 ADC是完全差分的。 这意味着您选择正输入(AINP)和负输入(AINN)。 ADC输出数据是AINP-AINN的测量值。 请注意,如果AINN高于AINP,则测量值为负值,ADC输出代码以二进制补码记数法表示。 进行测量时,请确保为ADC选择负和正输入。

    如果您要进行一系列单端测量,您可能会选择AIN3作为AINN,然后使用AIN0,AIN1和AIN2测量AINP。 请注意,使用双极电源,您可以将AIN3接地。 这将使输入测量值保持在PGA的输入范围内。 我有您之前发布的一篇文章中的示意图,但它不显示您的测量连接。 出于好奇,AIN0与AIN3连接到什么?

    我明天才有机会查看您的代码,所以我稍后会再与您联系。


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

    我检查了Vrefout和Vrefcom,它们都是2.5V,并且都是稳定的。 关于正确的参考输入,如果我理解你的说法,我将REFSELT[1:0]位设置为10,因为它说选择了内部参考。
    此外,我检查了OFC和FSC寄存器,它们分别为0万h和800D40h,PGA = 16时。

    如前所述,我将DAC8560的DOUT引脚连接到ADS1247的AIN0引脚,而其余的AIN1,AIN2,AIN3未连接到任何设备。 我从您的陈述中推断出,当我只有一个Ain时,我无法测量DAC值,对吗?

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


    首先,FSC寄存器的值应接近40万h,而不是80万h。 80万h的大值可能是从ADC获得的输出值的两倍。

    要进行测量,您需要连接到其他模拟输入引脚之一。 ADS1247是一款全差动ADC,因此测量值将是正模拟输入与负模拟输入之间的差值。 通过浮动负输入,输入电压将不会被设置,您将无法获得任何可用的测量值。

    我相信你在使用双极电源。 将AIN1接地,将AIN0连接到DAC,选择AIN1作为AINN,选择AIN0作为AINP并进行一些测量。


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

    您好,Joseph:

    我会将您的建议付诸实践,同时,您能否验证我的代码,以便我专注于我的设计? 因为我没有处理电气问题的经验,所以我需要确定我的代码,然后我将从了解这些问题的人那里获得帮助。

    此致,

    米拉德

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


    我之前查看过您的代码。 我应该按现状工作,但我唯一要更改的是初始化设备的顺序。 我会先设置start high (高启动),然后使/CS low (低)与设备通信(然后将reset作为第一个命令发送)。

    除此之外,我看不到任何其他问题-它是一个相当短的代码段。 但是,我会说,我不会做很多编码工作,所以我可能不是最好的审核方法。


    吴若瑟
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Joseph:
    我想我发现了我的问题。 我使用万用表和示波器检查了参考电压(Vrefout和Vrefcom针脚),得到了摆动时约为0V的电压,正如您之前所说,必须为2.048V且稳定。 我在Vrefout和Vrefcom之间使用22uF电容。 我的设计可能有什么问题?

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


    引用可能不稳定。 VREFCOM必须通过小于10Ω Ω 的电阻连接到交流接地。 此连接是基准稳定性所必需的。 如果阻抗高于10Ω Ω,您可以在VREFCOM和交流接地节点之间连接至少0.1uF的电容器。

    在示意图上,您将显示与多个电阻器(S3J4,S3J1,S3J2)的连接。 我将使S3J2电阻0Ω Ω,以便将VREFCOM设置为接地,然后拆下其他电阻器。


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

    您好,Joseph:

    感谢您的所有帮助! 这就是我无法进行测量的原因。

    现在我可以通过DAC获得分辨率为1mV的测量值,但OFC寄存器未设置,我只使用SELFOCAL命令,延迟3500ms。 我得到了20个大致的输出,比如0x7Fxxxxh,然后转到0mV,1mV,...,127mV和128mV,这是全刻度范围(GPGA =16)。 我的问题是如何删除第一个输出?

    此致,

    米拉德

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


    我很高兴您能够获得工作参考。 我在查看之前的所有帖子之前,没有注意到VREFCOM的连接。

    但是,我不确定我是否理解您看到的内容。 您是否在等待稳定并运行校准后,获得前20个输出的坏数据? 我想我需要更详细地解释一下您所看到的效果,并提供更多的时间信息。

    如果只是需要额外的时间才能获得良好的数据。 它可能是参考沉降。 您确实有一个22uF电容器,可能需要额外的时间才能启动。 但是,这只需要额外的2毫秒左右。 如果您对原理图上未显示的输入进行了额外过滤,那么您也可能有一些类似的稳定时间。

    它将有助于您发布不良信息(以及您获得的良好数据)。 我希望原始数据从ADC中输出,而不是转换为您正在测量的任何其他单位。


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

    您好,Joseph:
    我附上了ADC的输出文件,其中显示了原始数据。
    我添加到代码中的唯一命令是Daley为3500毫秒的SELFOCAL命令。 另外,OFC寄存器为0。
    很抱歉混淆了!e2e.ti.com/.../raw-data.txt

    此致,
    米拉德

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

    米拉德

    我不知道这是什么。 我已将您的文件转换为显示测量值:

    这看起来不像来自RC滤波器的一些指数时间恒定电容式充电。 它可能是某种电流充电电容器,类似于集成器,但我不知道您的电路是如何设置的。 此外,此测量涵盖了大多数正满刻度。 如果您让它进一步运行,它最终是否会退出?

    您测量的是什么?您期望获得什么价值? 您是否有示意图? 获取此数据的时间是多少?

    吴若瑟

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

    您好,Joseph:

    实际上,我的代码有问题,我发现了它。 之后,为了确保自己,我将ADC设置为环境温度,并从其中获得119mV。 现在,我用DAC到PGA=16,SPS=5来测量它,并设置偏移寄存器,我应该得到0-128mV,但在一些测量结果如5之后,它变为0,1,...,126mV。 我的意思是,有些数据被遗漏了。 是否可以,或者我应该对此做些什么?

    此致,

    米拉德

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


    在我上一个帖子中,我误解了你所解释的内容。

    我仍然不确定您看到的是什么错误,但从开始读数到DAC开始向上移动输入电压,似乎存在一些延迟。 我不确定这是否会对您造成问题。 此时,它看起来确实是一个真正的延迟,而不仅仅是一些毫无意义的数据。

    如果您有显示更多错误的较新数据,或者读取了一些无效值。 您可以将其发布回本主题,我们可以讨论。


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

    您好,Joseph:

    此附件文件通过DAC (0-1024mV)显示PGA=2和SPS=160的原始数据。

    我有这么多的测量结果几秒钟后一切都很好,所以我认为它很好,不是吗?

    e2e.ti.com/.../3426.raw-data.txt

    此致,

    米拉德

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

    米拉德

    我认为它看起来不错。 如果你只是用DAC增加信号,那么你似乎是从接近0到满量程:

    如果您仍然关注测量值,则应设置恒定输入电压,然后使用精密万用表进行测量。 如果您进行数次从0到满刻度的测量,您可以从ADC中看到增益和非线性错误。 您可以使用类似Agilent 3458A的设备,对于万用表范围(作为标准),非线性误差可能为0.1ppm。 手持式万用表可能不足以进行精确测量。

    此时,您似乎正在进行正确的测量。 现在我将关闭此帖子。 如有疑问,您可以一如既往地发布更多问题。

    吴若瑟