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-EP:共享配置中的启动索引错误

Guru**** 2394205 points
Other Parts Discussed in Thread: ADS1258-EP

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1097310/ads1258-ep-wrong-starting-index-in-shared-configuration

部件号:ADS1258-EP

您好,

我遇到了一个问题,即脉冲配置中ADS1258-EP的索引经常从错误的索引开始(发生错误时始终是最高优先级)。 ADC的两个单元用于我们的操作,共享Miso,MOSI和SCLK线,尽管它们各自有自己的CS_N SCLK工作频率为500kHz。 每个ADC都有一个10MHz时钟。 启动与地面相连。 PWDN和重置引脚在两个ADC之间共享。

启动过程如下所示:

为设计提供动力。

等待1秒钟。

将PWDN设置为低。 等待200毫秒。

将PWDN设置为高。 将复位设置为低。 等待200毫秒。

将复位设置为高。 通过SPI向ADC 0发送重置命令。 等待200毫秒。

将{1.1万00,0万 0001.001万}传输到ADC 0,以设置具有外部多路复用的自动扫描模式。 等待4毫秒。

将{1.1001万00,0.0011万0111.1001万}传输到ADC 0,以启用/禁用特定的单端信道。 等待4毫秒。

将{1.1001万01,0.1万0000万}传输到ADC 0,以禁用上8个单端信道。 等待4毫秒。

通过SPI向ADC 1发送重置命令。 等待200毫秒。

将{1.1万00,0万 0001.001万}传输到ADC 1,以设置具有外部多路复用的自动扫描模式。 等待4毫秒。

将{1.1001万00,0.0011万0111.1001万}传输到ADC 1,以启用/禁用特定的单端信道。 等待4毫秒。

将{1.1001万01,0.1万0000万}传输到ADC 1,以禁用上8个单端信道。 等待4毫秒。

操作回路如下所示:

ADC 0:传输转换命令。 传输通道数据读取命令,并执行4字节读取(始终都是CS_N_0低),直到状态字节具有新位= 1。 为输出分配数据。 重复此操作,直到读取了总共5个通道。 当ADC 1工作时,进入内部空闲模式。

ADC 1:传输转换命令。 传送通道数据读取命令,并执行4字节读取(始终都是CS_N_1低),直到状态字节具有新位=1。 为输出分配数据。 重复此操作,直到读取了总共5个通道。 当ADC 0工作时,进入内部空闲模式。

核心问题:

预期结果:AIN0 -> CH0的数据"插槽"。 AIN3 ->用于CH3的数据"槽"等,用于每个ADC。

实际结果:  

ADC0:AINx数据在正确插槽中的95 % 成功率。

ADC1:AINx数据在正确插槽中的25 % 成功率。ON故障,记录时间的100 % ,AIN6在CH0/AIN0的插槽中,AIN0在CH3/AIN3的插槽中,等等。索引关闭-1或以最低优先级开始。

设计在测试之间进行电源循环。

 

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

    您好,Anon:

    您能否提供逻辑分析仪数据,显示所有通道上的数据事务? 如果您有Saleae分析器,您可以向我发送.Sal文件,比发送屏幕截图更容易阅读。

    在整个过程中查看DIN,DOUT,SCLK和CS线(两个ADC的所有测量值)将很有帮助。

    我还从您读取数据的方式中假设您没有使用DRDY来确定何时有新数据可用。 您是否有任何理由不使用此引脚,而是必须继续读取状态字节?

    -Bryan

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

    很遗憾,我无法访问Saleae,但可以查看一些屏幕截图。

    关于避免DRDY,使用我的代码(但不使用我的设计)的其他设计不使用/不能访问DRDY引脚。 由于存在新位作为DRDY的替代,我认为这是一个可以接受的解决方案。

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

    您好,Anon:

    逻辑分析器的情况很不幸,但让我们看看您能提供什么。 如果不能准确地查看ADC收发的内容,则很难诊断此问题。

    这也有助于查看原理图。 如果您不想公开共享此信息,您可以将鼠标悬停在我的用户名上,直到出现下拉菜单,然后点击"请求友谊"。 这将允许我们通过私人消息共享信息。

    使用状态字节是可以接受的,但使用DRDY可能会更容易(并且会限制SPI总线上的通信量,因为您不必不断地读取/写入状态字节)。

    -Bryan

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

    我可以回答有关哪些引脚连接到什么的问题,但我无法分享原理图。

    我想补充一点,这似乎不是执行实际读取的方式的问题。 我已验证状态字节中的Chid仅限于我已配置的信道。 同样,我所阅读的数据与我所期望的完全一致。 唯一的问题是,实际指数与我对启动的期望不符,并且保持不变。

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

    您好,Anon:

    也许我误解了当时的问题是什么。

    您说数据与您预期的一样-这是否意味着数据有效,但Chid无效,或者数据和Chid有效,但您预期的通道无效? 例如,您在AIN3上有1V输入,在AIN4上有2V输入。 当您预期读取AIN4时,您实际上正在测量1V,并且状态字节Chid位= 0Bh (对于AIN3)?

    这就是为什么查看所有测量的数据事务会很有帮助,这样我就可以看到ADC之间的通信内容。

    -Bryan

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

    数据和Chid有效,但与我期望的数据和Chid不匹配。 您的示例是正确的。 我的代码在循环中运行。 启用5个信道,目的是按照AIN0->3->4->5->6的顺序读取。 有时,这是可行的。 但是,在大多数情况下,ADC1的显示顺序是AIN6->0->3->4->5 (并且总是按此顺序,我从未见过它从别处开始)。

    我检查了示波器并确认数据和Chid匹配(因此不是从错误的通道或其他位置读取的数据)。 我还确认了顺序和配置命令是正确的(因此没有读取AIN7,或者不是我为其配置的内容)。 我仍在努力获取启动波形,但看起来,上面描述的启动后进程,有时索引,而不是接下来为AIN0设置,从AIN6开始。

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

    您好,Anon:

    老实说,这听起来像是固件问题,因为序列始终仅由一个通道关闭。 换言之,您不能随机读取频道数据,例如AIN3->5->4->0->6,也不能读取不想读取的频道,例如AIN7。 相反,您始终以AIN0 (正确的顺序)开头,或者以AIN6开头(不正确,但从下一个通道的数据AIN0开始顺序是正确的)。 如果看不到固件或数字通信,我不确定可以提供多少额外支持。 我建议你在写了登记册后再读回来,并确保它们是按预期写的。 您也可以使用示波器检查数字通信线路是否有噪音。

    另一方面,您以何种顺序阅读输入内容是否重要? 我的问题是,如果您总是在读取状态字节以检查新数据,那么您始终可以访问Chid位。 这样,您就可以始终知道正在读取哪个通道,从而知道如何在固件中处理此数据。 由于数据似乎对每个通道都是准确和有效的,因此目前唯一的问题是数据的接收顺序。 我知道这并不能解决当前的问题,但如果渠道订单不重要,那么我觉得这毕竟不是这样的问题。 每次检查Chid位实际上似乎是一个更可靠的解决方案,因为这样,您就可以始终确认正在测量哪个通道,而不必依赖ADC序列发生器来循环通过通道(可能会受到SPI上的浮点/噪声等的影响)。

    如果您有任何其他信息需要分享,请告诉我。

    -Bryan

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

    我继续进行了一些重大的代码更改:1)在开机时读回配置寄存器,并重写它们,直到它们正确;2)如果在收到CH0的Chid时,内部索引与CH0不匹配,请发送命令复位和重新配置。3) 如果接收到的Chid与启用的不匹配(即启用0-6,如果接收到7则重置),则发送命令复位并重新配置4)根据Chid而非预期顺序分配输出。 我不能说这个问题实际上是已经解决了,还是只是解决了问题并加以混淆了,但我现在已经看不到这个问题了。 已解决,但未理解。

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

    您好,Anon:

    感谢您对您所做的事情进行解释,并让我们知道问题目前已尽可能解决。

    我知道您可能有不能通过此论坛(或根本不能)共享的敏感信息,但我们可能至少需要查看原始固件以帮助诊断此问题的根源(假设它位于ADC端,而不是控制器端)。 如果您想通过此途径与当地的TI现场代表进一步讨论,请告诉我,我可以请他们与您联系。

    如果不是,请随时以新的主题发布任何其他问题,我们将在那里提供支持。

    -Bryan