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.

[参考译文] ADS1258:使用通道数据读取命令获取读数时出现问题(寄存器格式)

Guru**** 2582405 points
Other Parts Discussed in Thread: ADS1258

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/667354/ads1258-problems-getting-readings-using-channel-data-read-command-register-format

部件号:ADS1258
主题中讨论的其他部件:REF5040

/DRDY未连接,因此无法使用它。

开始高捆扎

只需每10毫秒读取16个单端A/DS,就可以尝试了解如何接近此行为

配置寄存器设置为 (并已验证) 0x02,0x70,0,0x00,0x01,0,0,0 (状态字节开启,最大延迟,仅启用AIN0)

当我通过寄存器格式读取通道数据时,我得到了新的16。 就是这样。 为什么不是新8?

一旦这一个信道正常工作,我将更改寄存器以读取其余信道

一旦解决了这个问题,我还有更多的问题

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

    Mark,您好!

    欢迎来到TI E2E论坛!

    状态字节的Chid[4:0]位是否为16 (10h)?
    根据表13,您将获得与AIN8对应的正确值。 值未按1:1映射到各种输入,如下所示...


    此致,
    Chris

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

    谢谢Chris。  

    是的,我发现 这些值没有映射1:1。

    但我的配置寄存器选择已打开AIN0。 为什么会获得AIN8读数?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    糟糕。 给出答案后,我再次查看,发现我得到了我所要求的... AIN8。 谢谢你照顾我的肩膀克里斯...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    没问题,如果还有其他需要帮助的地方,请告诉我!

    巴西,
    Chris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    结果是Chris。 我正在从AIN8获取读数,但不知道如何解释它们。
    以下是一些示例:
    0x88,0x07,0xfe,0xFE
    0x88,0xe6,0x21,0x00
    0x88,0x3c,0xe3,0x00
    0x88,0x70,0x16,0x00
    0x88,0xe3,0xcd,0x00
    0x88,0xe6,0x21,0x00
    0x88,0x97,0x05,0x00
    0x88,0xe6,0x3f,0x00
    0x88,0xe6,0x24,0x00
    0x88,0xfb,0xff,0x00
    0x88,0xf9,0x7b,0x00
    0x88,0xe6,0x35,0x00
    0x88,0xee,0x59,0x00
    0x88,0x37,0x03,0x00
    0x88,0xe3,0xcc,0x00
    0x88,0xe3,0xef,0x00
    0x88,0x7a,0x03,0x00
    0x88,0xb7,0x98,0x11
    第1列是状态字节,第2列是MSB (AFAPICT),第3列是MSB -1,第3列是LSB。
    输入中没有任何内容,因此不应更改,但应该更改。 让我想知道我的一切设置是否正确。 看起来像垃圾。
    但如果该数据的任何行是2的补码,那么这是一个非常大的数字。 如何实现? 例如:0xb7,0x98,0x11... 0xb7.9811万...0x4867ef又4867又是一个非常大的数字。这毫无意义。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    读取参考通道也会产生不稳定的数据:(最后3列是数据MSB,MSB-1,LSB)
    新29:0x9d,0xc5,0x05,0x9e
    新29:0x9d,0xCF,0x0a,0x00
    新29:0x9d,0x8F,0xf3,0x00
    新29:0x9d,0x99,0xe1,0x00
    新29:0x9d,0xCF,0x3f,0x00
    新29:0x9d,0xCF,0x67,0x00
    新29:0x9d,0xFC,0x90,0x00
    新29:0x9d,0xcb,0xFC,0x00
    新29:0x9d,0xCF,0x97,0x00
    新29:0x9d,0xbe,0xf1,0x00
    新29:0x9d,0x8c,0x81,0x00
    新29:0x9d,0xCF,0x38,0x00
    新29:0x9d,0xcd,0x36,0x00
    新29:0x9d,0xee,0x0F,0x00
    新29:0x9d,0xCF,0x9C,0x00
    新29:0x9d,0xCF,0x78,0x00
    新29:0x9d,0x7d,0xe7,0x00
    新29:0x9d,0x60,0x7d,0x01

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

    Mark,您好!

    您的参考源和电压是多少? 您是否尝试读取电源或增益通道?

    如果没有输入电压,ADC输入将浮动,并可能导致随机输出代码。 如果您未连接并启用外部参考电压,参考通道读数将执行相同操作。 如果您尝试过其他内部显示器通道,它们应该能提供更稳定的结果(尽管由于噪音,您应该会看到一些小的波动)。

    此致,
    Chris

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

    好的,谢谢Chris。 这可能会解决我的问题。 我会告诉你...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的,Chirs,我尝试了4个内部监视器通道,数据如下。 我得到了看似随机的数据。 顺便说一下,上述参考数据应该很好,因为我们连接了4V参考。

    下面的第一行是内部监视器通道名称,第二行是重置后的默认配置,第三和第四行是设置验证后的2x配置查询。那么,新的表示stat字节中的新位和xx: 从stat字节开始的chid通道号后跟24位读取的原始十六进制字节,然后是MSB和MSB-1,这些字节转换为16位并转换为十进制(减去1,反转位)。是否有任何错误?


    偏移量:
    0x0A,0x83,0x00,0x00,0xff,0xff,0x00,0xff,0x00,0x8b,
    0x02,0x70,0x00,0x00,0x00,0x01,0x00,0x00,0x8b,
    0x02,0x70,0x00,0x00,0x00,0x01,0x00,0x00,0x8b,
    新24:0xff,0xff,0x9C,6.5536万 (0x1万)
    新24:0xff,0xb1,0x0020224 (0x4f00)
    新24:0xff,0xe3,0x007424 (0x1d00)
    新24:0xff,0xba,0x0017920 (0x4600)

    VSS:
    0x0A,0x83,0x00,0x00,0xff,0xff,0x00,0xff,0x00,0x8b,
    0x02,0x70,0x00,0x00,0x00,0x04,0x00,0x00,0x8b,
    0x02,0x70,0x00,0x00,0x00,0x04,0x00,0x00,0x8b,
    新26:0x8e,0xe5,0x9e,747.1104万 (0x72万)
    新26:0x95,0x97,0x006973696 (0x6a6900)
    新26:0x6a,0x8c,0x009794560 (0x95.74万)
    新26:0x93,0x57,0x007121152 (0x6ca900)

    温度:
    0x0A,0x83,0x00,0x00,0xff,0xff,0x00,0xff,0x00,0x8b,
    0x02,0x70,0x00,0x00,0x00,0x08,0x00,0x00,0x8b,
    0x02,0x70,0x00,0x00,0x00,0x08,0x00,0x00,0x8b,
    新27:0x60,0x9a,0xf710485760 (0xa0万)
    新27:0xd7,0x79,0x002656000 (0x28.87万)
    新27:0xbd,0x8d,0x004354816 (0x42.73万)
    新27:0xd7,0xa7,0x002644224 (0x28.59万)

    增益:
    0x0A,0x83,0x00,0x00,0xff,0xff,0x00,0xff,0x00,0x8b,
    0x02,0x70,0x00,0x00,0x00,0x10,0x00,0x00,0x8b,
    0x02,0x70,0x00,0x00,0x00,0x10,0x00,0x00,0x8b,
    新28:0x77,0xf4,0x188978432 (0x89万)
    新28:0xf4,0x18,0x78.0288万 (0xbe800)
    新28:0xfb,0x89,0x29.2608万 (0x4.77万)
    新28:0xf4,0x02,0x78.592万 (0xbfe00)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Mark,您好!

    我没有发现您的注册设置有任何问题。 但是,我确实看到您正在将所有GPIO引脚驱动为低电平。 是否有任何连接到这些外部GPIO的内容可能导致争用,或者如果您不驱动它们,这些PIN是否会保持浮动?

    如果您有一个示意图,您可以与他人分享,这可能对我有所帮助...

     

    关于您获得的数据,它看起来大部分是随机的。 以下是如何转换您看到的值供您参考:

    您是否看过逻辑分析仪或示波器上的SPI通信? 在我看来,SPI数据在读取数据时似乎会受到破坏,尽管读写设备寄存器的工作正常。

    此致,
    Chris

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

    非常感谢Chris。 这对我的转换来说将是非常宝贵的。

    随附原理图。

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

    Mark,您好!

    感谢您的示意图! 对我来说一切都很好

    我现在只想检查两件事:

    1. 探测SPI信号以及/DRDY,并在读取数据时查看。 如果您在/DRDY降低时正在检索数据,则输出移位寄存器可能会为您提供大量的新旧数据(因为此寄存器在/DRDY降低之前就会更新)。

      由于您正在轮询ADC,这是我能想到的数据损坏的最可能原因。 但是,我仍然有点惊讶,因为您在大多数时候都看到损坏的数据 ,而不仅仅是偶尔看到。 可能需要更频繁地轮询ADC以获取数据(以便在/DRDY变低后更快地开始读取数据),并且可能还需要提高SCLK频率以使您能够更快地读取数据。 目前,您的SCLK频率是多少?

      此外,如果您当前正在使用"直接读取"命令(0x10)读取数据,请尝试切换到"读取命令" (0x30)。 在此模式下,ADC会将输出数据复制到另一个(缓冲)输出移位寄存器中,该寄存器在您对数据进行时钟处理时会更新。


       
    2. 最后,尝试探查外部4V参考以确保其稳定。 REF5040的输出需要一个相当大的电容器以确保稳定性。 您 拥有的2.2 UF可能足够了,但我仍然建议您仔细检查。

    此致,
    Chris

     

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

    谢谢Chris。

    查看了逻辑分析器上的SPI通信,它看起来正常。 但我不是SPI专家,所以我担心我没有找到正确的东西。  

    波特率为93.75万。

    我们已经在使用以寄存器格式读取的数据,而不是直接读取。

    4V参考电压稳定。

    将沿SPI信号探测/DRDY以了解可能发生的情况。

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

    Mark,您好!

    如果您想让我们看一看,请随时分享您的逻辑分析仪屏幕截图...

    您是否能够将SCLK频率提高到500k以上?
    ADS1258允许的最大SCLK为tclk/2或7.68 MHz (用于标称15.729 MHz ADC时钟)。 您有很大的空间来缩短读取数据所需的时间,并避免在/DRDY变低时读取数据的情况。

    从技术上讲,具有寄存器格式的读取数据应保留数据并在新转换完成时防止损坏,但必须在/DRDY变低之前发送此命令字节,以确保保留旧的转换数据。

    "使用寄存器格式读取数据"模式的另一个要求是必须在命令之间切换/CS。 您是否在代码中执行此操作?

    此致,
    Chris

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

    希望在我了解发生的情况之前,暂停更改波特率。

    是的,在每次访问ADS1258之间切换CS

    附加了逻辑分析仪屏幕截图。

    Trace1:我不明白为什么/DRDY在我们阅读时似乎从低到高。

    Trace2和trace3被放大  在时间线中彼此相邻。

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

    Mark,您好!

    感谢您的屏幕截图!

    对于ADS1258,一旦开始发送SCLK,/DRDY信号返回高电平是正常行为(请参阅数据表中的图52)。

    但是,我看到了一些对我来说非常奇怪的事情:

    1. (从第三个屏幕截图)/DRDY似乎没有一致的时间段,但在您读取数据时往往会发生。

    2. (请参见下图)每个SPI字节后,DIN信号似乎返回高电平。 很难辨别,但似乎DIN在每个字节的开头可能很高...如果是这种情况,您可能会发送0x10命令(脉冲转换), 这可能会重新启动ADC转换(因此,/DRDY周期似乎与第三个屏幕截图中的读出数据相关)。

    您可能知道为什么DIN在这些时候会高而不是低,直到所有数据字节都被超频为止?

     

    此致,
    Chris

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

    e2e.ti.com/.../power-off-then-on_2C00_-3rd-sample-and-other-is-bad.logicdata.txt1。如您(和数据表)所述,/DRDY“在数据读取操作期间,SCLK第一个下降边缘后返回HIGH”。 由于/DRDY只有1个通道可供采样,因此在该样本到达之前,该通道可能一直处于高位?

    2.我不知道SPI规格,但在我看来,它看起来像DIN正在提高(不活动?) 在最后一个字节的位完成后,由于(下一个) 0x0字节正在计时,所以该字节的位会降低。 我承认它看起来很奇怪,但进一步认为可以。 我看不到所有帧上的高向低过渡。 我确实看到一个字节完成后DIN将会很高。 我想可能是代码导致了这种情况,但没有明显的问题。 如果代码确实在执行此操作,我认为它将是SPI外围设备(可能是我假设的SPI规范)。

    我看了其他轨迹,其中发送到DIN的数据不是0x20,0x0,0x00,0x0,但看不到该模式。

    我附加了一条saleae trace (删除.txt扩展名)。 如果您下载并安装logic.exe (从saleae),您可以打开它并检查并查看我看到的内容。 在无法执行此操作的情况下,我附加了.png文件。 我捕获了关机和开机,然后是重置,接着是config,接着是一堆o F为。 我看不到/DRDY在重置后启动一致的计时(在配置发生之前)。 我看到/DRDY在配置寄存器后更改行为,但仍然不一致。 我想我的逻辑分析器正在注入奇怪。为什么SCLK有时会伸展?

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

    Mark,您好!

    在我们调试逻辑之前...您是否可以提高Saleae逻辑分析仪的采样率? 我以前用过Saleae,我知道如果采样率太慢,就会得到无效的结果。 窗口标题显示采样率为1 MHz。 由于您正在尝试测量500 kHz SCLK,您将在解码的DIN和DOUT信号上看到一些偶尔不正确的值。

    如果可以,也可以使用示波器仔细检查逻辑分析仪的结果。 逻辑分析器有时可以隐藏SPI通信的所有噪声,振铃和过冲(所有模拟特征),使其看起来美观,干净,但示波器可能会让您更深入地了解任何可能的信号完整性问题。 如果示波器未显示任何这些问题,则可以返回使用(并信任)逻辑分析仪结果。

     

    关于以上屏幕截图,当您配置ADS1258时,您将降低ADC的数据速率并降低/DRDY周期,这样才完全有意义。 我感到奇怪的是/DRDY没有保持一个一致的时间段。 要么您正在以某种方式控制ADC转换,要么在与ADC通信时更改数据速率,要么如果数据速率自行更改,则可能存在时钟问题。

    此致,
    Chris

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

    谢谢Chris。  

    我确实用示波器验证了时钟,但看不到较长持续时间的时钟脉冲。

    是的,我会提高唾液采样率。

    同意/DRDY有一些奇怪的事。 我正在尝试不同的代码实现。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的,Chris,我能够与Saleae的创始人交谈,他解决了CAPTURE的问题。 我现在可以可靠地捕获踪迹。
    此时,它看起来是在DRDY周期的不到一半的时间内获取读数,并且值良好。
    但是,如果我在DRDY周期的一半后启动读取,则数据已损坏。
    因为我们不知道DRDY信号何时发生,也不能控制起始时间,所以我们无法判断何时应该读取。 我们没有读取速度比DRDY在16个通道处于活动状态时循环速度更快的带宽。 这就要求我们的读取速度比62.5 usec的读取速度还要快。 我们还有其他更优先的事情要做。 我们可能会将SPI配置为通过DMA读取,但我必须问:这是否是ADS1258的正常使用案例,以将启动绑定为高,并且无法访问DRDY,但仍能成功获取读数?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Mark,您好!

    当启动处于高连接状态(让ADC持续转换)且未使用/DRDY时,肯定可以及时输出数据,但这确实需要MCU提供额外的带宽,因为它必须定期轮询ADC以了解转换完成的时间。 要确保在/DRDY变低后快速维修ADC,您可能需要以大约4倍的数据速率轮询ADC ... 通常,/DRDY有助于降低处理器的负载,因为它可用于触发MCU上的中断,而不是强制处理器持续轮询。

    在DR[1:0]=0,CHOP =0,DLY[2:0]=111b的自动扫描模式下,每个通道的数据速率约为1.075 kSPS,因此您应该有930美元的时间来读取数据, 但是,如果不使用/DRDY引脚作为中断,您可能需要轮询ADC (通过启动Read data direct命令并检查是否在状态字节中设置了新位... 注意:您可以在计时结束仅状态字节后终止SPI通信),大约每200-300 us。 我还建议您以最快的速率运行SCLK (最高可达ADC 15.7 MHz主时钟频率的1/2),以便缩短对数据进行时钟处理所需的时间。

    此致,
    Chris

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

    谢谢Chris。

    我们正在考虑使用START来控制采样。

    根据我对设备的了解,我们可以保持启动处于非活动状态,配置设备,然后激活启动,设备将执行我们配置的采样。

    因此,我们应该能够将延迟设置为已知值,将通道数设置为已知值,并计算完成这些通道采样所需的时间。 我们可以激活START (开始)功能,让设备执行信道读取,这需要一段已知的时间。 然后,我们可以通过SPI禁用启动和读取通道示例。 然后,我们可以在以后需要更多样本时重新激活。

    这是真的吗? 我需要知道,这将会起作用,而且设备确实如此运行,这样我们就不会旋转车轮,而是为了发现另一个我们不知道的怪圈(因为Murphy生活在所有工程项目中)。

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

    Mark,您好!

    你一定可以做到这一点。 起始引脚高电平与/DRDY低电平之间的时间应该非常确定。 只需额外给自己一点延迟,以考虑时钟频率的可能容差。

    使用自动扫描模式时,每次切换起始PIN时,您将获得已启用信道列表中的下一个信道,因此请记住,以防您只想获得特定信道上的转换结果。 您始终可以重新配置寄存器,以便在您选择的通道上执行下一个转换结果。

    此致,
    Chris

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

    谢谢Chris。

    我很困惑。 我们要完全忽略/DRDY,只需使用start。 我们能做到这一点吗?

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

    是的,通过使用起始引脚控制每个转换,您应该能够推断/DRDY何时变低,而无需对其进行监控。

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

    谢谢Chris。 我们能够处理ADS1258以执行我们需要的操作,但仍存在问题。 我们将配置设置为减慢速度(最慢的延迟时间,最长的延迟时间)。 我们增加了对启动信号的控制。 我们升高和降低启动信号以启动(或允许完成)转换。 然后我们等待1毫秒并读取该转换。 我们发现可以按0到15的顺序读取转换,没有问题。 但我们还发现,升高/降低启动必须在1毫秒后读数。 如果我们等待更长时间才能读取值,我们将无法获得预期的信道,我们将获得不同的信息(不可预测)。 这是一个问题,因为它强制我们的ADS1258代码比所有其他代码具有更高的优先级,以确保读取速度为1毫秒。 我们曾希望我们可以开始转换,然后在闲暇时阅读。 我们可以做些什么来让ADS1258做到这一点吗? 您是否希望刚刚完成的转换可能不是在很晚才读取(如10毫秒)时获得的转换? 我们需要一种方法来强制ADS1258提供我们需要的读数,而不是它希望我们拥有的读数。

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

    Mark,您好!

    在脉冲转换模式下,您应该能够在/DRDY变低后随时读取数据;当ADC闲置时,数据的可用性不应有时间限制(假设您不重置部件或开始另一个转换)...

    您将/start pin设置为高电平需要多长时间? 如果显示高的时间过长,则ADC可能会开始另一个转换(参见数据表中的图55)。 你应该能够在高脉冲开始时开始单个转换(我认为最小脉冲宽度需要大约4个fclk周期)。

    当您说由于等待时间过长而丢失数据时,您是读出下一个渠道还是变得过于僵化?

    ...我认为这不重要,但如果您遇到空闲模式的问题,请尝试更改config1寄存器中IDLMOD位的值,看看是否有任何影响。

    此致,
    Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢Chris。 我看到的是,当我们开始SPI读取(已发送读取命令字节),但我们的任务被抢占(如650 usec)后,我们的任务恢复执行,我们发送SPI字节的剩余部分以对读取进行计时, 我们期待收到下一个读数,但我们得到的却是状态字节显示旧,而信道编号不是接下来应该出现的。
    例如:
    |---------------- ADS编号(我们有2个)
    | |--------------- 新(来自广告)
    | | |----------- 信道编号
    五 五 五
    0新20 0xd8 0x1855320
    1个新的20 0xf3 0x7062320
    0新21 0xd9 0x6255650
    1 old 11 0xf3 0x5362291 <---当我们开始发送此SPI读取命令时,我们期望新的21,但一旦SPI命令在中断后完成,我们得到旧的11

    我想我已经看到的不仅仅是这个,我会告诉你我能否捕捉其他人并描述他们。

    同时,如果SPI命令被延迟中断,ADS1258会带来什么好处?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Mark,您好!

    根据SPIRST寄存器位的配置方式,ADS1258的SPI接口将在256 us (默认SPIRST =0)或16 us (SPIRST =1)后超时。 这意味着您需要再次重新发送"complete" SPI命令。 如果您仅恢复部分命令的计时,则可能会收到错误数据。

    您是否可以在对数据计时时禁用其他中断,或者在处理中断之前终止SPI通信,然后在从较高优先级中断返回后重新启动RDATA命令?

    此致,
    Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢Chris。 阅读数据表Mark。 这很容易解决。

    在另一个注释中,我们获得的所有A/D样本都是~5万,即使它们已接地(应该为0 ish)。 必须有一个适用的偏移和增益。 我们是否应该读取内部增益/偏移并将其应用到我们获得的样品?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Mark,您好!

    我不会期望看到这么大的偏移量。 ADS1258前面是否有任何放大器无法完全接地?

    关于内部偏移/增益测量... 您肯定可以读取这些值,然后对所有测量值应用更正。 但是,在系统级别测量偏移和增益误差更为常见(即,对ADC外部的输入短路,而不仅仅是对ADS1258内部的输入短路)。 这样做的原因是,您可以测量和说明信号路径中的所有偏移和增益错误(可能因通道到通道而异),而通过内部测量进行操作只允许您更正错误的子集 (仅ADC引入的那些)。

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

    谢谢Chris。 我错误地转换了结果。 我认为这个问题已经解决了。

    另外,我们想对两个ADS芯片使用一个启动信号。 当PC处于非活动状态时,ADS是否会接受启动(启动转换)?

    我们希望不要这样做,因为这样我们就可以开始使用GPIO并将其发送到两个ADS,只有我们目前正在交谈的那个才会启动转换。

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

    Mark,您好!

    起始引脚的操作与/CS引脚无关...您只需要在要发送任何类型的SPI命令时激活/CS引脚。 ADC将始终响应起始引脚电平的变化。

    是的,可以将多个起始引脚连接在一起。 或者,您可以将两个/CS引脚都设置为低,并同时向两个设备发出pulse convert命令。 这两种方法都应实现相同的结果。

    此致,
    Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢Chris。 我们现在将开始关于共享开始的对话。

    我们正在努力调和我们的转换为什么没有意义。

    下面是ADS的电压,结果MSB和MSB-1以及结果所代表的值。

    0V 0xd6 0x02 =-1.075万
    1V 0x66 0x24 = 2.6148万
    2V 0xFD 0x65 =-667
    2V 0x02 0x58 = 600
    3V 0x5e 0x7f =2.4191万
    3.5V 0x54 0x5a =2.1594万
    4V 0xff 0x18 =-232
    4V 0x08 0xe8 =2280

    迈克说我应该告诉你,他有一个2.2万 法拉帽,它与接地和模拟输入平行,用于上述所有样本。

    如您所见,结果不是线性的。 我们正在从ADS中捕获读数,并将较低的字节剥离,以实现16位转换。

    我们不知道我们做了什么错。 有什么想法?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Mark,您好!

    您从哪个(些)通道进行读数,您的输入源是什么;它是低输出阻抗吗?

    我可以理解您的信号源是否具有高阻抗输出,您在使用 Δ-Σ 调制器(输入阻抗相对较低,约为65kOhm)直接测量时会看到增益错误,因为MUXOUT和ADCIN引脚之间没有缓冲器。

    但是,您给出的数字看起来不像增益错误... 它看起来更像是在测量浮动输入。 是否确定ADC MUX配置为与输入信号相同的输入通道? 这可能是您的结果更随机的原因。

    此致,
    Chris

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

    谢谢Chris。
    您能否为我提供有关新泽西州附近此部件的FAE的联系信息?

    这些是来自AD 0和1上内部通道的读数。 它们是否有意义(十六进制数字是SPI字节MSB,MSB-1,LSB)? 以下值是16个带符号的值。

    0新24 0xff 0xce 0x00 -50

    1个新的24 0xff 0xb9 0x00 -71
    0新26 0x09 0x0d 0x002317
    1个新26 0xe8 0x60 0x00 -6048
    0新27 0xbb 0xc7 0x00 -1.7465万
    1个新的27 0xc0 0x1d 0x00 -1.6355万
    0新28 0xF1 0xdd 0x00 -3619
    1个新28 0xe6 0x94 0x00 -6508
    0新29 0x24 0x6c 0x009324
    1个新29 0x0B 0x86 0x002950

    大约10秒后的相同读数:

    0新24 0xff 0xc4 0x00 -60
    1个新的24 0xff 0xb9 0x00 -71
    0新26 0x0B 0x5c 0x002908
    1个新26 0xe4 0x6b 0x00 -7061
    0新27 0xbb 0x8e 0x00 -1.7522万
    1个新的27 0xc0 0x00 0x00 -1.6384万
    0新28 0xF1 0xd8 0x00 -3624
    1个新28 0xe6 0x9e 0x00 -6498
    0新29 0x24 0x3c 0x009276
    1个新29 0x0B 0x69 0x002921

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

    Mark,您好!

    抱歉,您测量的是哪个内部信道? 尝试使用以下Excel计算器再次检查您的结果: e2e.ti.com/.../ADS1x58-Calculator.xlsx

    关于FAE,请查看您提供的E2E电子邮件帐户,以获取我的回复。

    此致,
    Chris

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

    谢谢Chris。

    抱歉,我按照数据表中显示的方式对内部通道进行编号,所以我认为这是显而易见的。

    我检查了上面发布的所有数字,它们与电子表格中的转换匹配。

    我们接下来要尝试什么?

    我认为我,员工Mike和您之间的电话通话是很好的。

    我们今晚可以这样做吗?

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

    Mark,您好!

    对于调试,您是否已经厌倦了禁用系统中的所有其它中断,以确保SPI读取数据操作能够在不中断的情况下完成?

    我接下来要做的是将处理器上读取的数据与逻辑分析器上查看的SPI数据进行比较,以确保正确读取数据。

    很遗憾,我今晚无法接听电话。 我有几个自己的项目截止日期,我需要确保能够满足这些期限。 也许如果你能说服我的老板减轻我的工作量,那么我们就可以谈谈;)

    此致,
    Chris

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

    谢谢Chris。
    是的,我正在禁用写/读操作的中断,并且我正在使用逻辑分析器确认所有读/写操作(20 MHz时非常感谢)。

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

    您在这个问题上是否取得了任何进展?

    周末愉快!
    Chris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢Chris。
    Mike (客户)现在提出了这一问题。 我们能够以一致和可预测的方式获得准确的读数。 AfaICT,Mike认为他需要在下一个电路板修订版中进行电气更改,以解决增益/信号问题,但软件已完成。 感谢Chris的所有帮助。