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.

ADS1299: 读取寄存器有问题

Part Number: ADS1299

在读取寄存器ID时一直不成功,用示波器检查发现可以正常发送数据,但是接收数据方面一直没反应,DOUT引脚无变化,但是SCLK引脚和DIN引脚都正常,且CS 引脚在命令发送时一直为低,请问这是什么问题呢

  • 您好,

    但是接收数据方面一直没反应,DOUT引脚无变化

    检查下主从SPI 通信电平是否兼容,即主控端发送信号的电压电平,ADS1299是否可以识别:

    且CS 引脚在命令发送时一直为低,

    对于ADS1299,CS pin 是其输入管脚,因此不是 ADS1299 这边的原因使其一直为低。CS pin 受SPI 主控端控制,建议检查主控端设置。

    另外,下面FAQ分享给您,希望对您调试SPI 有帮助:

    [FAQ] 【常见问题解答】ADS129x问题咨询

    [FAQ] ADS1298: ADS129x:如何验证 ADS129x 器件是否仍然正常工作?

  • 我检查了sclk和MOSI的引脚状态发现没有问题,主控端发送的电压点评高电平为3.3,低电平为0v,ADS1299应该可以识别,CS引脚是在命令发送时为低,其余时候为高,这证明CS引脚应该没有问题吧

  • ADS1299 DVDD是几伏电压供电?是3.3V供电吗?

    在 datasheet Figure 67. Initial Flow at Power-Up有初始化顺序,您是按照这个流程初始化的设备吗?

    建议您用示波器抓一下SPI 读取一个寄存器值的波形图,我看下读取时序是否有异常。

  • 这是发送了SDATAC命令,是要先配置好所有寄存器才能读寄存器么,在读寄存器时的START引脚要置1么,希望您能解答我的疑惑

  • 如果设备处于RDATAC模式,则必须先发出SDATAC命令,然后才能向设备发送任何其他命令。

    是要先配置好所有寄存器才能读寄存器么,

    不是的,发送了 SDATAC命令就可以读寄存器了,因为上电后设备默认处于RDATAC模式。

    在读寄存器时的START引脚要置1么,

    不需要。

  • 你好我又重新焊了板子,但是MISO还是一样的问题,他现在有变化但是都不熟数据,下面是波形,这是为什么呢,蓝色时miso线,黄色是SCLK线,这种波形是什么原因导致的呢

  • 您可以附上一个完整的SPI 读取一个寄存器值的波形图吗?上面波形图无法看到您输入的命令,也无法对照看输出的数据。datasheet 如下截图部分有寄存器读和写时序图:

  • 因为示波器只有两通道,不能i显示完整的SPI通信,我在上面的图片里发了MISO和SCLK的波形和MOSI 和SCLK的波形不知道可不可以,另外我想问如果使用内部时钟的话clk引脚有输出么

  • 我在上面的图片里发了MISO和SCLK的波形和MOSI 和SCLK的波形不知道可不可以,

    我没看到您发的这两个波形,最好有CS信号,这样可以看完整的一帧数据是怎样的。

    另外我想问如果使用内部时钟的话clk引脚有输出么

    寄存器配置上电默认是没有输出的:

  • 蓝色部分是MISO,黄色部分是SCLK,我目前只是想读芯片ID,所以还没配置其他寄存器,上面的图片您可以看见么

  • 这张图片蓝色是MOSI,黄色是CS,先发送了SDATAC再发送了RREG的指令,这张图有什么问题么

  • 读寄存器的话,如下时序图,需要发送两个命令,一个命令: 001r rrrr,r rrrr是开始读的寄存器地址。第二个命令是 000n nnnn,n nnnn是需要读取寄存器的数量-1。发送完这两个命令后,DOUT 会输出相应地址寄存器值。在这整个读取过程中CS是一直拉低的,通过拉低cs启动读时序:

    看您第二个图,CS在整个读取过程中不是一直拉低的,因此主控端发送的命令会被忽略:

  • 第二幅图没有显示,重新附一下:

  • 你好,我现在可以正常读写寄存器,但是当我配置成内部测试方波后,dout引脚仍然没有任何输出,DRDY的时序也是正常的,在第一个下降沿读取,这是什么原因,如果我配置成了内部方波,那么我可以在模拟输出引脚看到波形么,希望尽快得到回答

  • 但是当我配置成内部测试方波后,dout引脚仍然没有任何输出,

    您可以附上您配置的寄存器值吗,我看下?

    同时测量下供电电压、参考电压、VCAPs电压是否正常:

    dout引脚仍然没有任何输出,DRDY的时序也是正常的,

    您是否发送了读取转换数据命令RDATA或者RDATAC?示波器看下读取命令是否正常?

    如果我配置成了内部方波,那么我可以在模拟输出引脚看到波形么,

    不可以,内部方波是芯片内部产生的模拟输入信号以代替ADC外部模拟输入。使用内部测试方波可以用来排查ADC模拟输入端的问题。

  • ADS_REG(WREG|CONFIG1,0x95); 
    Delay_us(1);
    ADS_REG(WREG|CONFIG2,0XD0);//测试信号内部产生
    Delay_us(1);
    ADS_REG(WREG|CONFIG3,0XE0); //使用内部参考电压,
    Delay_us(1);
    ADS_REG(WREG|CH1SET,0X05); //amplified x1
    Delay_us(1);
    ADS_REG(WREG|CH2SET,0X05); //amplified x1
    Delay_us(1);
    ADS_REG(WREG|CH3SET,0X05); //amplified x1
    Delay_us(1);
    ADS_REG(WREG|CH4SET,0X05); //amplified x1
    Delay_us(1);
    ADS_REG(WREG|CH5SET,0X05); //amplified x1
    Delay_us(1);
    ADS_REG(WREG|CH6SET,0X05); //amplified x1
    Delay_us(1);
    ADS_REG(WREG|CH7SET,0X05); //amplified x1
    Delay_us(1);
    ADS_REG(WREG|CH8SET,0X05); //amplified x1
    Delay_us(1);

    我发送了RDATAC命令,并且DRDY可以顺利产生中断,但是Dout引脚就是数据一直为零

  • 您好,我刚才用示波器检查了一下DIN的输入,我发现我=我没有成功写入第八个通道的值,而且发送的RDATA命令也不对,但是我仍然在DRDY引脚上产生了中断,并且SCLK与DRDY的对应也是正确的,这是为什么呢

  • 在DRDY引脚上产生了中断与是否发送RDATA命令没有关系,只有您发送START命令或拉高START 管脚以启动AD转换,DRDY管脚就会有脉冲信号产生以指示AD转换完成。

    发送RDATA命令是用来读取AD转换结果的,启动了AD转换但不去读取AD转换结果也是可以的,这不影响DRDY信号的产生。

  • 你好,我现在已经可以读取内部测试的方波数据但是我发现它存在漂移,正值为1.23mV,负值为2.51mV左右,这种数据是正常的么

  • 您将寄存器MUXn[2:0] 配置001,看输出幅值多少?

x 出现错误。请重试或与管理员联系。