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.

[参考译文] ADS1263:无法读取 ADC 值、但可以读回寄存器

Guru**** 2391415 points
Other Parts Discussed in Thread: ADS1263

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/992623/ads1263-could-not-read-the-adc-value-but-can-read-back-the-registers

器件型号:ADS1263

大家好!  有人可以提供帮助吗?  我使用的是 ADS1263 EVM 子卡。

我可以成功地从寄存器进行回写和回读。  但是当我读取 ADC 值时,包括 状态和校验和在内的所有6个字节都为0!

我选择了脉冲转换模式。  启动信号为每2ms 一次。 (通道1)

DRDY 在启动1.2ms 后变为低电平。 (通道2)

然后、我一次读取6个数据字节、但全部为0。 (通道3是 SCK、通道4是 DOUT)

我以前就明白了。  如上所述、一天失败。  我更换了 ADS1263。  保持不变。  可能是我不小心在软件中犯了一些错误、但寄存器值是相同的。  似乎不是软件问题。

当时钟选择开关位于 XTAL 侧时、我发现无法读回寄存器。  我在引脚15和晶振引脚上探测到、没有发现振荡。

然后、我切换到使用内部振荡器、其工作方式如上所述。  这是原因吗?  还是另一个问题?

感谢您帮助我解决这些问题。 谢谢!

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

    您好 Kenny、

    电路板最初发生故障的原因是什么? 这很可能是导致您发现问题的根本原因、如果电路板工作了一段时间、然后停止工作。 我想回顾一下当时发生的导致失败的事情。 请告诉我。

    我还会确保电源连接正确、子卡和通信板之间具有牢固、稳定的接地连接、因为子卡应硬连接到 MMB0主板。

    请告诉我是什么导致电路板最初出现故障的。

    布莱恩

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

    您好、Bryan、

    感谢您提醒我检查 MMB0主板。  让我找到电缆并稍后通知您。

    电源正常、3.3V、+/-5V。 (+5V 和+/- 2.5V 的结果相同)

    其前面的放大器的工作电压为+/-15V。  因此、我怀疑输入电压过高、以至于输入器件损坏。  但在更换 ADS1263并将放大器电压降低至+/-2.5V 后、它保持不变。

    SPI 在两个方向上都工作、因为它可以读回寄存器进行比较。

    供参考。  这是函数 ReadADC()。  一旦 DRDY_引脚变为低电平、就会调用它。

    ///////////////////////////////////////////////////////////////

    void ReadADC(){
      //读取转换后的结果
      //6字节 RxBuf[];
      //[0]是状态、
      //[1..4]是转换后的结果。
      //[5]校验和。

      unsigned char i;

      //从 ADC 读取数据
      PIN_ADC1_CS_= 0;//芯片选择 ADC
        对于(i = 0;i < 6;i++){//Rx 6字节、状态以及校验和
         _Clr_SPI_Rx_Buf_full;//SPSTA &=~RCVBF;//清除缓冲区已满标志

         SPDAT = 0;//启动 SPI
        while (SPI_Receiving ()){//(SPSTA & RCVBF)=0){//等待接收到1个字节。
         _nop_();
        }
        RxBuf[i]= SPDAT;
      }
      PIN_ADC1_CS_= 1;

    ////////////////////////////////////////////////////////////////////////

    这似乎是正确的、对吧?

    感谢您的帮助!

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

    您好 Kenny、

    您能告诉我您如何为 ADS1263子卡供电吗? 哪些电压连接到哪些引脚?

    此外、ADS1263子卡上没有需要+/-15V 的放大器、因此您能否解释这意味着什么? EVM 外部是否有放大器?

    您还可以读回您的寄存器并在此处发布结果吗?

    您还可以看到 DOUT 上存在噪声、并在您发出 SCLK 时启动。 这可能表示您的主板和子卡之间的连接不良。

    您提到您读取了6个数据字节、但您只会发出看起来像是8个 SCLK 或3个字节的三个组。

    布莱恩

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

    您好 Brian、

    感谢您的反馈!  以下是您的问题的答案:

     为 ADS1263子卡供电:

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

    您好 Brian、

    感谢您的反馈!  以下是您的问题的答案:

     为 ADS1263子卡供电:

    对于放大器和滤波器等所有其他子卡、这是相同的。  希望引脚8和9上的+/- 15V 不会损坏 ADS1263卡。  引脚1和2连接到 ADS1263的 AVDD 和 AVSS。  它为外部放大器和应变仪供电。

    2.是的、放大器是外部的。  它由+/- 15V 供电。  现已更改为+/-2.5V、如上所述。

    我确实读回寄存器进行比较。  结果为+ve、因为我可以在比较正确的位置断开。  请参阅我的代码。  这似乎表明 SPI 正确。  (我插入了代码,但它说"访问被拒绝","我没有权利.")

    4.感谢您指出 SCLK 脉冲时 DOUT 线路上的噪声。  解决它。

    5.我检查了范围。  当时基从250增加到100us 时、可以看到6组 SCLK。  因此、实际上接收到了6个字节。

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

    您好 Kenny、

    您能否发布整个系统的一些图片? 我不太清楚您是如何连接所有这些不同的 PCB 的。 我假设您没有使用 MMB0板、因为您最初的帖子专门询问了有关 ADS1263EVM 子卡的问题、但现在我不确定。

    此外、您能否在此处提供寄存器回读设置? 我想查看所有 ADS1263寄存器的所有寄存器值。

    布莱恩

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

    意外的是它现在正在工作!

    今天、我在 MMB0主板上插入子卡。  它很有效!  因此、子板已被证明是正常的。

    然后回到我的主板、它也能正常工作!  我还不知道为什么。

    供参考。  这些是我写入 ADC 的15个寄存器:

           代码 const unsigned char ADCsetting[]={

                   0x00、              //Reg 0x1、00000000     电平位移电压已禁用、内部基准被禁用

                   0x0D、              //Reg 0x2、00001101     SPI 超时、所需的状态字节、校验和被启用

                   0x41、//0x51、 //Reg 0x3、01010001     脉冲转换、斩波、 8.7us 延迟

                   0x00、              //Reg 0x4、00000000     sinc 1 (同时)、无传感器偏置电流

                   0x59、//0x89、 //Reg 0x5、10001001     PGA 旁路、增益= 1、 1200SPS (启用或禁用相同速率、SDO 无信号输出)

                   0x57、              //Reg 0x6、01010111     VINP = AIN5、VINN = AIN7

                    0、        //Reg 0x7、偏移校准

                    0、        //Reg 0x8、

                    0、        //reg 0x9、

                    0x40、  //reg 0xA、满量程校准、默认值0x400000

                    0、        //Reg 0xB、

                    0x40、  //Reg 0xC、

                    0xBB、  //reg 0xD、IDACMUX

                    0、        //reg 0xE、IDACMAG

                   0x24       //寄存器0xF、00100100      VAVDD 和 VAVSS 作为参考

           };

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

    您好 Kenny、

    好消息是、如果您确定导致电路板突然运行的原因、请告诉我。

    我还想说的是、在脉冲转换模式下运行 ADS1263并启用全局斩波时会遇到挑战-有关更多详细信息、请参阅以下文章: https://e2e.ti.com/support/data-converters/f/data-converters-forum/531007/ads1262-errata

    基本上、解决方案是在连续转换模式下使用全局斩波。 要在连续模式下仅执行单次转换(与脉冲转换模式类似)、请将 START 引脚设置为低电平、然后发出连续 START 和 STOP 命令(使用软件或硬件命令)。 链接到的帖子包含如何在软件中实现此功能的伪代码。

    只需向您指出这一点、因为它看起来您使用的是脉冲转换和全局斩波模式。

    布莱恩

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

    谢谢 Bryan!

    这样就完成了"无法读取 ADC 值"。

    将研究您为 CHOP +脉冲模式建议的链接。

    非常感谢您的帮助!

    肯尼