主题中讨论的其他部件:REF5040,
/DRDY未连接,因此无法使用它。
开始高捆扎
只需每10毫秒读取16个单端A/DS,就可以尝试了解如何接近此行为
配置寄存器设置为 (并已验证) 0x02,0x70,0,0x00,0x01,0,0,0 (状态字节开启,最大延迟,仅启用AIN0)
当我通过寄存器格式读取通道数据时,我得到了新的16。 就是这样。 为什么不是新8?
一旦这一个信道正常工作,我将更改寄存器以读取其余信道
一旦解决了这个问题,我还有更多的问题
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.
/DRDY未连接,因此无法使用它。
开始高捆扎
只需每10毫秒读取16个单端A/DS,就可以尝试了解如何接近此行为
配置寄存器设置为 (并已验证) 0x02,0x70,0,0x00,0x01,0,0,0 (状态字节开启,最大延迟,仅启用AIN0)
当我通过寄存器格式读取通道数据时,我得到了新的16。 就是这样。 为什么不是新8?
一旦这一个信道正常工作,我将更改寄存器以读取其余信道
一旦解决了这个问题,我还有更多的问题
读取参考通道也会产生不稳定的数据:(最后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,您好!
我没有发现您的注册设置有任何问题。 但是,我确实看到您正在将所有GPIO引脚驱动为低电平。 是否有任何连接到这些外部GPIO的内容可能导致争用,或者如果您不驱动它们,这些PIN是否会保持浮动?
如果您有一个示意图,您可以与他人分享,这可能对我有所帮助...
关于您获得的数据,它看起来大部分是随机的。 以下是如何转换您看到的值供您参考:
您是否看过逻辑分析仪或示波器上的SPI通信? 在我看来,SPI数据在读取数据时似乎会受到破坏,尽管读写设备寄存器的工作正常。
此致,
Chris
Mark,您好!
感谢您的示意图! 对我来说一切都很好
我现在只想检查两件事:
此致,
Chris
Mark,您好!
如果您想让我们看一看,请随时分享您的逻辑分析仪屏幕截图...
您是否能够将SCLK频率提高到500k以上?
ADS1258允许的最大SCLK为tclk/2或7.68 MHz (用于标称15.729 MHz ADC时钟)。 您有很大的空间来缩短读取数据所需的时间,并避免在/DRDY变低时读取数据的情况。
从技术上讲,具有寄存器格式的读取数据应保留数据并在新转换完成时防止损坏,但必须在/DRDY变低之前发送此命令字节,以确保保留旧的转换数据。
"使用寄存器格式读取数据"模式的另一个要求是必须在命令之间切换/CS。 您是否在代码中执行此操作?
此致,
Chris
Mark,您好!
感谢您的屏幕截图!
对于ADS1258,一旦开始发送SCLK,/DRDY信号返回高电平是正常行为(请参阅数据表中的图52)。
但是,我看到了一些对我来说非常奇怪的事情:
您可能知道为什么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
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生活在所有工程项目中)。
谢谢Chris。 我们能够处理ADS1258以执行我们需要的操作,但仍存在问题。 我们将配置设置为减慢速度(最慢的延迟时间,最长的延迟时间)。 我们增加了对启动信号的控制。 我们升高和降低启动信号以启动(或允许完成)转换。 然后我们等待1毫秒并读取该转换。 我们发现可以按0到15的顺序读取转换,没有问题。 但我们还发现,升高/降低启动必须在1毫秒后读数。 如果我们等待更长时间才能读取值,我们将无法获得预期的信道,我们将获得不同的信息(不可预测)。 这是一个问题,因为它强制我们的ADS1258代码比所有其他代码具有更高的优先级,以确保读取速度为1毫秒。 我们曾希望我们可以开始转换,然后在闲暇时阅读。 我们可以做些什么来让ADS1258做到这一点吗? 您是否希望刚刚完成的转换可能不是在很晚才读取(如10毫秒)时获得的转换? 我们需要一种方法来强制ADS1258提供我们需要的读数,而不是它希望我们拥有的读数。
Mark,您好!
在脉冲转换模式下,您应该能够在/DRDY变低后随时读取数据;当ADC闲置时,数据的可用性不应有时间限制(假设您不重置部件或开始另一个转换)...
您将/start pin设置为高电平需要多长时间? 如果显示高的时间过长,则ADC可能会开始另一个转换(参见数据表中的图55)。 你应该能够在高脉冲开始时开始单个转换(我认为最小脉冲宽度需要大约4个fclk周期)。
当您说由于等待时间过长而丢失数据时,您是读出下一个渠道还是变得过于僵化?
...我认为这不重要,但如果您遇到空闲模式的问题,请尝试更改config1寄存器中IDLMOD位的值,看看是否有任何影响。
此致,
Chris
Mark,您好!
根据SPIRST寄存器位的配置方式,ADS1258的SPI接口将在256 us (默认SPIRST =0)或16 us (SPIRST =1)后超时。 这意味着您需要再次重新发送"complete" SPI命令。 如果您仅恢复部分命令的计时,则可能会收到错误数据。
您是否可以在对数据计时时禁用其他中断,或者在处理中断之前终止SPI通信,然后在从较高优先级中断返回后重新启动RDATA命令?
此致,
Chris
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
Mark,您好!
对于调试,您是否已经厌倦了禁用系统中的所有其它中断,以确保SPI读取数据操作能够在不中断的情况下完成?
我接下来要做的是将处理器上读取的数据与逻辑分析器上查看的SPI数据进行比较,以确保正确读取数据。
很遗憾,我今晚无法接听电话。 我有几个自己的项目截止日期,我需要确保能够满足这些期限。 也许如果你能说服我的老板减轻我的工作量,那么我们就可以谈谈;)
此致,
Chris