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.

[参考译文] ADS1298:满量程问题

Guru**** 2813875 points

Other Parts Discussed in Thread: ADS1298

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/872297/ads1298-full-scale-issue

器件型号:ADS1298

你(们)好

我一直在n´t 一些与满量程范围相关的问题、因为我从 ADS1298接收到值为0x7fff 和0x800000 的数据、我的器件会饱和、我不知道如何修复它。

我将 ADS1298与 STM32F407相连。 该器 件提供 AVDD=2.5V、AVSS=-2.5V 和 DVDD=3.3V 电压。 我使用了"如何将 ADC 输出代码转换为电压?" 论坛作为指南、但幸运 的是、我的数据检索始终为0x7fff 或0x80000、无论我是连接还是测试信号、还是只是为了控制环境、都不会对数据进行搜索。

我的寄存器配置如下:

Reg0x01=0x06
Reg0x02=0x20
Reg0x03=0xCC
Reg0x05=0x60
Reg0x06=0x60
Reg0x07=0x60
Reg0x08=0x60
Reg0x14=0x00
Reg0x17=0x08
Reg0x18=0x08
Reg0x19=0xD4

我不使用它们的其他寄存器。

不知道是软件问题还是硬件问题。  

有人请帮我、我很久以前就一直坚持这么做了。

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

    尊敬的 Carlos:

    您的输入信号是什么?

    您的基准电压是多少?  

    什么是 PGA 增益设置?  

    请参阅 数据表的第9.3.1.4节模拟输入。  

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

    您好、Alexander、感谢您的回复。

    输入信号=我已经尝试使用内部测试信号并将自己连接到器件以获取我的心脏信号。 结果是相同的。  

    VREFP = 2.4V、我不知道是否必须更改 CONFIG3寄存器的 VREF_4V 位并将其设置为1。  

    我的 VREFN =-2.5V

    每通道 PGA 增益= 12

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

    尊敬的 Carlos:

    是否可以使用 BIOS 常见问题解答确认设备仍然正常工作?

    您能否显示数字通信的示波器截图? MISO、MOSI、CS、启动?

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

    你(们)好。

    该器件允许对寄存器进行写入和读取、我可以读回我对每个寄存器的写入内容。  

    我可以读取 ID 寄存 器、VCAP 的电压似乎与 BIOFAQ 的值一致。   

     

    MISO 连接到 DOUT

    MOSI 连接至 DIN

    CS 是由我选择的引脚、我将引脚复位并手动设置  

    START 未连接、因此我可以根据需要发出命令  

    e2e.ti.com/.../Communication.docx

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

    尊敬的 Carlos:

    是否可以看到您的通信的示波器屏幕截图?  

    如果使用的增益为1而不是12、结果是否会变化?  

    您能否提供 PCB 布局的原理图和图片?  

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

    你好。

    不幸的是、这里没有示波器。 我逐步调试 MCU、然后直接查看器件提供的内容。

    对于增益1、我接收到相同的数据。 0x7ffff 和0x800000。

    这里是我用于稳压器和 ADS1298的原理图。

    e2e.ti.com/.../Esquemas.pdf

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

    尊敬的 Carlos:

    明白了。 目前、请勿配置 WCT 和其他杂项寄存器。 我建议仅启用内部基准和调试所需的输入通道、将所有其他寄存器保持默认状态、看看这是否有用。  

    如果正确返回器件 ID、则电源应正确加电。 由于更改增益或输入信号不会影响满量程结果、因此这不应该成为问题。 这意味着它要么必须是基准被错误配置的东西、要么是代码中的错误。  

    该基准的原理图看起来不错、但如果可能、请在 PCB 上确认电容器已正确布线并连接到引脚。  

    如果您可以通过某种方式访问示波器、这将非常好、因为我们可以确认器件正确输出数据、并且代码存在错误。   

    请告诉我。  

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

    亚历山大

    我已按如下方式配置 Nexts 寄存器、其他寄存器默认由器件进行配置。   

    REG Config3 = 0x80仅启用内部基准缓冲器
    RegCH1Set = 0x10仅启用增益为1的 FIRT 通道  

    我将自己连接到器件、有时只返回0x7FFFF、有时仅返回0x80000、但没有不同的值、因此我尝试 将 电缆留在空气中、只是为了适应环境、以查看是否有任何变化、但不会 我没有一个信号发生器可以尝试已知信号、因此我不知道我还可以尝试其他什么。  

    不知道这是否是代码错误、但这就是我将数据转换为电压的方法、正如我在"如何将 ADC 输出代码转换为电压?"  论坛。

    它在 Python 中、所以...

     导入序列

    将 NumPy 导入为 NP

    从 matplotlib 导入 pyplot 作为 plt

    Dato=NP.ZEs (3000)

    contador=1

    Puerto = serial.Serial ('COM3'、230400、timeout=1)

    VREF=2.5

    增益= 1   

    MSB= 0x800000

    samples=int (input('ingrese numero de muestras a graficar\nMuestras ='))

    LSB=(((2*VREF)/增益)/(2**23)

    contador <=样片:

      CH = Puerto。Read (3)

      valordato=ch[0]<16或 ch[1]<8或 ch[2]

      dataoMSB = valordato & MSB

      如果 dataMSB = 0:

        data=valordato*LSB

      否则:

        DATA=(2**24)-valordato)*LSB

      Dato[contador ]=数据

      contador+=1.

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

    尊敬的 Carlos:

    您能否在 VREFP 和 VREFN 之间进行测量?  

    在上一篇文章中、它看起来实际的差值是4.9V?

    我不确定这是否是 Python 语言,但 LSB=(2*VREF)/GAIN (2**23)和  DATA=(2**24)-valordato)*LSB 中的“**”应该是“^”的幂。

    LSB 也应为 LSB =(2 x VREF)/增益/(2^24 - 1)。 请注意、未从指数24中减去1。  

    valordato 是数字的十进制等效值、对吧?

     data=(2**24)-valordato)*LSB 应为  data=(valordato-(2**24))*LSB

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

    尊敬的 Carlos:  

    祝你好运?  

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

    您好、Alexander、

    是的、在 python 中、"^"运算符由"**"表示。

    请注意,我将公式上的-1减去,因为开头 的 LSB=((2*VREF)/增益)/(2**23),因为指数不是24-1,而是23,无论如何,我会按照您的建议进行计算。 因此、它将是  LSB =(2 * VREF)/增益/(2**24 - 1)。

    正确、valordato 是我从器件接收的24位通道数据。  

    哦,还可以! 我更正了,因此数据方程现在是 data=(valordato-(2**24))*LSB。  

    问题 仍然 是、我从 ADS1298获得的大部分时间仅为0x80000或0x7FFFF、没有其他值。  

    我更改了编程、而不是发送 RDATA 命令    我使用数据表图93中的 RDATAC、它不仅发送了不同的值0x7fff 或0x80000、而且我不确定它是否正常工作、因为我得到的是测试信号...  

    (每条通道的情况相似)

    (与每个通道类似) 这包含更多样本。

    (与每个通道类似)、当我连接自己时。

    我真的看不出我想在上面看到什么。 我将采样500 SPS、但它没有显示测试中的方波信号以及具有噪声或其他内容的心脏信号的应具有的值、因此我不知道。  

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

    您好、Alexander、

    是的、在 python 中、"^"运算符由"**"表示。

    请注意,我将公式上的-1减去,因为开头 的 LSB=((2*VREF)/增益)/(2**23),因为指数不是24-1,而是23,无论如何,我会按照您的建议进行计算。 因此、它将是  LSB =(2 * VREF)/增益/(2**24 - 1)。

    正确、valordato 是我从器件接收的24位通道数据。  

    哦,还可以! 我更正了,因此数据方程现在是 data=(valordato-(2**24))*LSB。  

    问题 仍然 是、我从 ADS1298获得的大部分时间仅为0x80000或0x7FFFF、没有其他值。  

    我更改了编程、而不是发送 RDATA 命令    我使用数据表图93中的 RDATAC、它不仅发送了不同的值0x7fff 或0x80000、而且我不确定它是否正常工作、因为我得到的是测试信号...  

    (每条通道的情况相似)

    (与每个通道类似) 这包含更多样本。

    (与每个通道类似)、当我连接自己时。

    我真的看不出我想在上面看到什么。 我将采样500 SPS、但它没有显示测试中的方波信号以及具有噪声或其他内容的心脏信号的应具有的值、因此我不知道。  

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

    尊敬的 Carlos:

    您的距离越来越近!  

    记住您的操作顺序和 PEMDAS减影之前处理指数(2^24)。 因此、对于(2^24-1)、它实际上是((2^24)-1)。  

    其他几件事... 不要将0x80写入 CONFIG3。 这是无效的、详细信息请见第69页、但是请注意第二个位必须为1。 写入0xC0、而不是0x80。  

    此外、请注意、基准电压实际上为2.4V、而不是代码中写入的2.5V。 这将返回无效的 LSB 大小。  

    进行这些更改后、您能否返回 LSB 大小、以便我们确认程序是否正确计算了它?  

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

    您好、Alexander、  

    好吧,我不知道它是((2^24)-1)。 我已经全部更改了它。  

    我已经使用这个结果测量了电压。

    VREFP=1.4V  

    VREFN=-2.3V

    因此 VREF= 3.7V (注意:启用内部缓冲器)

    VCAP1 =-1.1

    VCAP2 = 0.4v

    VCAP3 = 4.4V

    VCAP4 = 1.4V

    我已经将 Config3上的 VREF_4V 位设置为0、因此 VREF 设置为2.4、但是、正如我在前面提到的、硬件中的电压降低了一伏。  

    这是问题吗?  

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

    尊敬的 Carlos:

    这当然是问题所在。 安装或调试时是否可能损坏器件?  

    这是用手焊接还是在电路板上焊接的?  

    您可能需要尝试更换设备、以查看是否有用。  

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

    您好、Alexander、  

    这当然是一个坏消息、因为这不是我尝试运行此项目时第一个器件损坏。   

    实际上,我用手焊接了它,但 我尽可能小心。  

    是否有办法在不更换器件的情况下提升这些电压? 我是说、我认为它没有损坏、因为它允许我读取和写入回电容器和 ID。 我连接了设备、正如您在上面看到的文章。 那么、我是否可以采取任何措施来增强该电压问题?  

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

    尊敬的 Carlos:

    可能是基准缓冲器已损坏。 您也许可以尝试在外部基准中进行接线。  

    最后一种可能是加电期间出现一些错误、导致基准未正确配置。 但是、我认为这不是问题、因为 ID 正在正确返回。  

    尽可能使用 ESD 腕带和放大工具。  

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

    您好、Alexander、  

    我已经达到了提升 VREFP 电压的目的、现在该引脚为2.4且 VREF=4.7V。  

    当我输入测试信号时、我得到以下结果:

    通道1

    通道2.

    信道3.

    当然、自我提升该电压以来、这已经取得了进展。 第一个通道似乎出现故障、但我现在不知道为什么会损坏?第二个通道将方形测试信号与噪声隔离、我猜它起作用了?第三个通道是最好的信号、这可以解决这个问题。 然而、当我连接自己时、我仍然无法获得所需的器件信号。

    这是 python 中用于获取数据并将其转换为电压的代码。  

    VREF= 2.4
    增益= 1
    MSB= 0x800000
    Muestras =int (input ('ingrese numero de muestras a graficar\n Muestras =')

    LSB=(((2*VREF)/增益)/((2**24)-1)

    contador <= muestras 时:

    CH = Puerto。Read (3)
    valordato =(ch[0]<< 16)或(ch[1]<< 8)或 ch[2]
    dataoMSB = valordato & MSB

    如果 dataMSB = 0:
       data=valordato*LSB
    否则:
       DATA=(valordato-(2**24)*LSB
    Dato[contador ]=数据
    contador+=1.

    这就是我配置 ADS1298的方式

    寄存器0x01 = 0x86
    Reg0x02=0x00
    Reg0x03=0x40 (外部基准)
    Reg0x05=0x10
    Reg0x06=0x10
    Reg0x07=0x10
    Reg0x08=0x10
    Reg0x14=0x00
    Reg0x17=0x08
    Reg0x18=0x08
    Reg0x19=0xD4

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

    尊敬的 Carlos:

    此时、如果没有适当的调试设备、很难准确地说出发生了什么。 我很高兴你能够取得进展,也许还有更多的工作要做。 我建议您仔细查看焊接连接并继续进行调试。 如果您对器件有任何具体问题或疑虑、请告诉我。