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.
您好,
但是接收数据方面一直没反应,DOUT引脚无变化
检查下主从SPI 通信电平是否兼容,即主控端发送信号的电压电平,ADS1299是否可以识别:
且CS 引脚在命令发送时一直为低,
对于ADS1299,CS pin 是其输入管脚,因此不是 ADS1299 这边的原因使其一直为低。CS pin 受SPI 主控端控制,建议检查主控端设置。
另外,下面FAQ分享给您,希望对您调试SPI 有帮助:
ADS1299 DVDD是几伏电压供电?是3.3V供电吗?
在 datasheet Figure 67. Initial Flow at Power-Up有初始化顺序,您是按照这个流程初始化的设备吗?
建议您用示波器抓一下SPI 读取一个寄存器值的波形图,我看下读取时序是否有异常。
是3.3V供电,而且上电时序也符合流程,这是SCLK引脚和MOSI引脚/resized-image/__size/640x480/__key/communityserver-discussions-components-files/58/pastedimage1705910425389v1.jpeg
您可以附上一个完整的SPI 读取一个寄存器值的波形图吗?上面波形图无法看到您输入的命令,也无法对照看输出的数据。datasheet 如下截图部分有寄存器读和写时序图:
读寄存器的话,如下时序图,需要发送两个命令,一个命令: 001r rrrr,r rrrr是开始读的寄存器地址。第二个命令是 000n nnnn,n nnnn是需要读取寄存器的数量-1。发送完这两个命令后,DOUT 会输出相应地址寄存器值。在这整个读取过程中CS是一直拉低的,通过拉低cs启动读时序:
看您第二个图,CS在整个读取过程中不是一直拉低的,因此主控端发送的命令会被忽略:
但是当我配置成内部测试方波后,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引脚就是数据一直为零
在DRDY引脚上产生了中断与是否发送RDATA命令没有关系,只有您发送START命令或拉高START 管脚以启动AD转换,DRDY管脚就会有脉冲信号产生以指示AD转换完成。
发送RDATA命令是用来读取AD转换结果的,启动了AD转换但不去读取AD转换结果也是可以的,这不影响DRDY信号的产生。