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.

[参考译文] ADS131E08:读取多个通道时出现问题

Guru**** 2518870 points
Other Parts Discussed in Thread: ADS131E08, ADS131E04

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/847232/ads131e08-issue-during-reading-multiple-channels

器件型号:ADS131E08
主题中讨论的其他器件: ADS131E04

您好!

我使用12.5MHz SPI 与 ADS131E08器件进行通信。 以下是来源:

=初始化源=

/* AFE 配置*/
IO_SETCLR (AFE_CS|AFE_PWDN|AFE_RST、AFE_START);

//满足 tPOR 要求(> 2^18 tCLK ~ 130ms 加电后等待直到复位)*/
ArchDelay (65000);
ArchDelay (65000);

/*设备重置*/
IO_CLR (AFE_RST);
archDelay (50);//满足 t_RST (> 1 tCLK ~ 0.5us 复位低电平持续时间)*/
IO_SET (AFE_RST);
archDelay (900);//满足 t_RST (> 18 tCLK ~ 9.0us、直到器件启动)*/

/*设备初始化*/
_WrCmd (SDATAC);/*停止连续读取数据模式*/
_WrReg (CONFIG1_REG、0b11010011);// 24位输出、8ksps *
_WrReg (CONFIG2_REG、0b11110100);
_WrReg (CONFIG3_REG、0b01000000);//关闭内部基准电源*/
_WrReg (CH1SET_REG、0b00010000);
_WHRReg (CH2SET_REG、0b00010101);
_WHRReg (CH3SET_REG、0b00010101);
_WHRReg (CH4SET_REG、0b00010101);
_WHRReg (CH5SET_REG、0b00010101);
_WHRReg (CH6SET_REG、0b00010101);
_WHRReg (CH7SET_REG、0b00010101);
_WHRReg (CH8SET_REG、0b00010101);

/*开始转换*/
IO_SET (AFE_START);

_WrCmd (RDATAC);/*启用连续读取数据模式*/

=/DRDY 中断服务例程=

/*读取状态*/
IO_CLR (AFE_CS);
status =_RdStat();

/*读取通道*/
AFE_val[0]=_RdChan24Bit ();
AFE_val[1]=_RdChan24Bit ();
AFE_val[2]=_RdChan24Bit ();
AFE_val[3]=_RdChan24Bit ();
AFE_val [4]=_RdChan24Bit ();
AFE_val[5]=_RdChan24Bit ();
AFE_val[6]=_RdChan24Bit ();
AFE_val[7]=_RdChan24Bit ();
archDelay (200);//满足 t_SCCS (>4 t_CLK ~ 2.0 us、在 CS=1之前)*/
IO_SET (AFE_CS);
archDelay (100);//符合 t_CSH (> 2 t_CLK ~ 1.0 CS=1脉冲持续时间)*/

=

正确读取通道1-4、反映外部施加的电压和/或测试信号、第5个通道为无常量值、第6至8个通道为应用于通道1-3的值。 读数看起来需要更长的时间、但情况并非如此@ 12.5MHz SPI 时钟(在示波器上检查)。 我计划进行更多调查、但希望您已经了解了调查内容、并能提供一些关于尝试哪些内容的想法。

谢谢、

Martin M.

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

    Martin、


    如果在您期望通道6-8的情况下、后者读取的数据会作为通道1-3的读取而返回、那么您可能会在转换完成后错误地对 ADC 的读取进行计时。

    当 ADC 进行转换时、它们会根据数据速率定期输出数据。 一旦转换完成、它们应该被立即读取并且读取应该在下一组转换完成前完成。

    在您的情况下、您可能正在读取前4-5个数据的转换、然后完成一组新的转换。 此时 DOUT 将加载新数据、并在您完成读取时再次从通道1读取到通道3。 当器件向您提供另一组转换数据时、您的读取会中断。

    您可以使用逻辑分析仪或示波器对此进行检查。 查看8个通道的读数、查看是否在第5次读数之后指示/DRDY。

    这是我对您所看到的内容的最佳猜测。 如果这不是一个问题、请将问题发布回我们可以继续进行处理。


    吴约瑟

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

    您好、Joseph、

    感谢您的回答。

    我已使用施加在所有通道上的内部测试电压"(AVDD+AVSS)/2"执行测量:

    下面是配置:

    _WrCmd (SDATAC);/*停止连续读取数据模式                    */

    _WrReg (CONFIG1_REG、0b11010011);// 24位输出、8ksps            *

    _WrReg (CONFIG2_REG、0b11110100);

    _WrReg (CONFIG3_REG、0b01000000);//关闭内部基准    电源*/

    _WrReg (CH1SET_REG、0b00010001);

    _WrReg (CH2SET_REG、0b00010001);

    _WrReg (CH3SET_REG、0b00010001);

    _WrReg (CH4SET_REG、0b00010001);

    _WrReg (CH5SET_REG、0b00010001);

    _WrReg (CH6SET_REG、0b00010001);

    _WrReg (CH7SET_REG、0b00010001);

    _WrReg (CH8SET_REG、0b00010001);

     

    并在示波器上测量了以下 SPI 波形:

    通道1 =/DRDY

    通道2 =/CS

    通道3 = DOUT

    通道4 = SCLK (3.125MHz)

    请注意、/DRDY 脉冲每125us (8kHz)发生一次。

    读取状态+前5个通道的详细信息:

    请注意、返回的值很小、为负、但第5通道值更少常量0xc08000、并且值错误。 如果我继续读取第9个通道(不存在)、那么我读取的是小负值。  

     

    SPI 通信详细信息:

     

    下面是我们 PCB 上的 ADS131E08器件连接:

     

    有什么建议、请尝试其他什么?

    只需阅读数据表、DAISY_IN 应接地-将在明天试用。

    谢谢、

    Martin M.

     

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

    Martin、


    感谢您提供示波器图和原理图。 它们确实有助于缩小问题的范围。

    以下是需要注意的两个方面:

    首先、您能否显示 RDATA 命令的图解和以下结果? 分辨率应该足够、以便我可以看到 RDATA 命令和生成的数据。 您可能需要触发读取的范围、然后调整时分以查看命令和216位信息。 我希望确保有一条 RDATA 命令、然后在器件通道读取期间 DIN 保持低电平。

    第二、确保遵循数据表第61页中所示的时序。 上电时序部分对此进行了说明。 我在这里的问题是、如果加电不正确、器件可能会认为它被编程为 ADS131E04四通道器件而不是八通道器件。 这可能说明了四通道读取的良好结果。 我还将回顾图53、其中描述了上电时的初始流程。

    通过所有寄存器(包括 ID 寄存器)进行读操作也会很有用、这样可以确保器件正确响应。



    吴约瑟

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

    您好、Joseph、

    感谢您提供有关要检查的其他内容的建议。 尚未检查您建议的所有内容、但在读取通道期间从 MCU 捕获了 MOSI 信号。 在空闲状态下、MOSI 信号被驱动为高电平、但会导致 ADS 接收到0x00 SPI 命令–请参阅下面的内容:

    通道1 = DIN

    通道2 = /CS

    通道3 = DOUT

    通道4 = SCLK (3.125MHz)

    这是否是问题的根本原因?

    请注意、在闲置模式下、我无法在 MCU 级别轻松更改 MOSI 输出极性、但必须在 PCB 上添加一个外部反相器来解决该问题-因此在进行 PCB 更改之前先征求意见。

    此致、

    Martin M.  

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

    尊敬的 Joseph:
    我检查了加电顺序、发现时序没有偏差。 此外、软件现在在 SDATA 之后读取 ID 控制寄存器;器件返回0xC0{4通道器件、第4位无效!} -请参阅以下内容:

    请注意、在上电序列期间、哪种器件会将其认为是四通道器件而不是八通道器件?   

    此致、
    Martin M.  

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

    Martin、


    ADS131E08具有一组内部寄存器(用户无法访问)、可用于设置在最终测试期间编程的器件配置。 这些寄存器用于对器件的功能和特性进行编程。

    加电期间、通常有一个加电复位、此复位允许电源有时间稳定至最终值、然后从寄存器中获取配置。 但是、如果电源不能正确启动、这个上电复位可能不能正常执行、并且内部寄存器可能无法正确读取。 如果发生这种情况、则器件可能看起来会编程为四通道 ADS131E04、而不是八通道 ADS131E08。

    当然、我会仔细检查数据表中的加电序列、并确保器件复位、以便器件返回读取内部编程的寄存器。


    吴约瑟

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

    尊敬的 Joseph:
    这个问题似乎是/PWDN 和/RESET 输入上的外部下拉电阻器。 偶数 MCU 上电所需的时间超过130ms ADS131E08的 tPOR 时间在软件中/PWDN 和/RESET 输入设置为1后开始。  在 SW 中设置/PWDN =/RESET = 1后添加额外的130ms 延迟、导致 ADS131E08器件以8通道模式引导。 Savignn 说过、我将把这两个引脚上的外部下拉电阻更改为外部上拉电阻、因此 tPOR 时间中还将包括 MCU 初始化的一部分、从而实现更快的应用启动。  

    非常感谢您的支持、请将此问题视为已解决!

    此致、
    Martin M.

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

    Martin、

    我很高兴您能够启动并运行系统。 如果您有任何问题、请随时将任何问题回帖。


    吴约瑟