ADS131M04: 无法正确写入寄存器和读取adc数据

Part Number: ADS131M04

通过SPI通道发送读取寄存器命令字节数为3;0xA0 0X80 0X00,舍去fifo中的第一次异常值后能读取到status寄存器数据。

但是当我在写入MODE寄存器时,发送字节数为4的写入命令后(如下图),再次读取时还是默认值0510.

请问是什么原因导致的,我查阅了示例代码并导入到我的工程中,配置相关gpio却无法正确运行,所以希望自己进行寄存器配置和数据读取。

我的最终目的是希望实现64khz采样速率下的adc读取,能告知我如何发送命令去读取adc通道1和2的数据吗?我并没有在datasheet中找到直接的读取命令,spi命令帧显示在芯片返回的数据中可以获取,能麻烦给出获取方式吗?thanks

  • 已经能读取adc数据,但是写入寄存器后再读取寄存器 数据和写入值不一样,是正常现象吗?我看示例代码中读取寄存器是直接取的头文件内的寄存器值。

  • 您好,

    通过SPI通道发送读取寄存器命令字节数为3;0xA0 0X80 0X00,舍去fifo中的第一次异常值后能读取到status寄存器数据。

    您是否能够正确读取状态寄存器? 您说过发送到 ADC 的命令是0xA0 0x80 0x00、但图像中显示的数据是0xA1 0x00 0x00。 客户发送至 ADS131M04 ADC 的实际数据是多少? 如需在我的响应底部读取寄存器、请参阅我的时序示例。

    但是当我在写入MODE寄存器时,发送字节数为4的写入命令后(如下图),再次读取时还是默认值0510.

    请问是什么原因导致的,我查阅了示例代码并导入到我的工程中,配置相关gpio却无法正确运行,所以希望自己进行寄存器配置和数据读取。

    默认情况下、ADS131M04上的字长为24位、发送到 ADC 的所有命令都应遵循此格式。 如果您希望对模式寄存器进行编程、应至少将两字数据(6个字节)发送到 ADC。 使用0x05 12数据写入 MODE 寄存器的正确命令和格式应为0x61 00 00 05 12 00。 如果您发送包含6个字的整个帧、ADC 也会正确响应。

    只要上述命令格式正确、ADC 就应按预期运行。

    下图显示了写入寄存器和读取寄存器的正确时序:

    WREG 用于将数据写入 GAIN 寄存器(地址04h) 0x0005:

    RREG 读取已在前一帧中写入0x0700的 CFG 寄存器:

    读取状态寄存器和所有通道的转换数据的正常操作时序。 请注意、NULL (全0)用于从 ADC 检索转换数据:

  • 最开始提问时候还是3字节,之后第二次回复时候读取寄存器已经是正确6字节读取了。非常感谢。

    软件配置如上,由MCU发一个8M左右的基准时钟脉冲给ad芯片。

    现在遇到一个新的问题,在外围电路空载的情况下,测试到ADCP1和ADCP2两路信号都有-131mV的负电压,电路上不存在负电源,请问是什么原因导致的?下面是原理图和测试的电压值:

  • 您好,

    两个测试点1 (AIN2P 和 AIN1P)之间是否以差分方式测量了-131mV? 您的电路板上的 GND 和 AGND 之间是否存在任何连接? 原理图未显示它们之间的任何连接。

  • 两个测试点均测量的对地电压值,AIN1P对地电压-131mv,AIN2P对地电压-130mv左右;AGND和GND之间用磁珠相连。

    芯片读取ADC和万用表测试探测点 都是一样的负电压数据

  • 您好,我会检查详细信息并尽快与您联系。 

  • 您好,

    如果您在输入悬空时使用万用表检查测试点、这没有任何意义。 您可以将精密信号应用于 ADC 输入端或将 ADC 输入端短接以进行测量。

    绝不建议将磁珠用于接地平面之间的连接、也建议使用实心接地平面。 这种电路/布局设计可能会导致性能问题。

    请注意、此 ADC 在每个通道上集成了一个负电荷泵、以支持对直接负输入信号的测量。