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.

[参考译文] ADS1258:ADS1258数据读取

Guru**** 672920 points
Other Parts Discussed in Thread: ADS1258, ADCPRO
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1268194/ads1258-ads1258-data-read

器件型号:ADS1258
主题中讨论的其他器件: ADCPro

大家好、

我使用的是 ADS1258。 我将在固定扫描模式和单端输入下使用它。 我将通过 SPI 传递寄存器写入命令和寄存器数据。 数据正在正常发送。 我通过通道数据读取寄存器获取数据。  

正在发送读取命令0x30。 因此、数据表中提到了在不使用 DRDY 时、建议进行通道数据读取(寄存器格式)。

那么、我如何在不使用 DRDY 的情况下获得实时 ADC 值。

谢谢!  

法哈德·克里

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

    尊敬的 Fahad K R:

    如数据表中所述、如果不使用 DRDY 来指示新数据何时就绪、请使用通道数据读取命令。 您需要轮询 STATUS 字节以查看新数据何时就绪。 数据表的这两个部分如下所示

    -Bryan

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

    您好、Bryan

    我传递了所有寄存器值、并 将 CLKENB 设置为高电平。 在通过寄存器配置后、我切换复位、然后我没有获得时钟输出。 我要检查 ADC 是否在工作。

    谢谢!  

    法哈德·克里

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

    尊敬的 Fahad K R:

    Bryan 目前不在、我会尽力帮您解决问题。  你到底想要实现什么?  当您将新配置写入 ADS1258、然后复位该器件时、您之前设置的所有配置设置都将丢失、ADS1258将恢复为默认设置。

    为了使器件正常运行、必须连接一个外部时钟源或一个晶振。  您使用什么时钟源以及如何设置 CLKSEL 引脚?  您能否提供原理图?

    此外、PDWN 引脚必须为逻辑高电平、并且模拟和数字电源都在标称电压下运行。  

    此致、

    鲍勃 B

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

    尊敬的 Bob:

    我使用的是 ADS1258评估板。 我正在配置寄存器、发送值是正确的(已通过 DSO 检查)。现在我读取所有寄存器、但我得到了不同的值。 有什么建议吗?

    法哈德·克里

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

    尊敬的 Fahad K R:

    请记住、您非常熟悉您尝试做的事情、但我不是。  关于如何将物品从外部处理器连接到 EVM 板、您提供的信息很少。  请提供更多详细信息。  您的设置图片和通信的示波器截图会很有帮助。

    从 ADS1258读取/写入时、CS 必须在整个通信事务期间保持低电平。  如果您使用 SPI 外设的 CS (SS)引脚、则该引脚可以在字节/字之间切换、因此应使用 GPIO 来控制 CS。  在通信事务期间切换 CS 是尝试使用不同控制器检查或开发软件的客户的一个常见问题。  当 CS 变为高电平时、ADS1258的 SPI 复位。

    另一个常见问题是未遵循正确的 SPI 时序。  验证时序和数据转换是否遵循 ADS1258数据表中的 SPI 时序图。

    此致、

    鲍勃 B

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

        cs(LOW);
    
        uint8_t dataTx = OPCODE_RREG | OPCODE_MUL_MASK | (startAddress & OPCODE_A_MASK);
        //send the read command
        spiSendReceiveByte(dataTx);
    
        uint8_t i;
        for (i = startAddress; i < (startAddress + count); i++)
        {
            // Read register data bytes
        	spiReceiveByte(0x00,&data[i]);
        	//data[] array will store the get value 
        	R_OS_TaskSleep(100);
    
        }
        cs(HIGH);

    我已向 GPIO 分配了 CS。 读取数据表时、它被清除。

    下面提供了配置数据

    CONFIG0_INUSE ((uint8_t) 0x2A)

    CONFIG1_DLY_64us           ((uint8_t) 0x41)

    MUXSCH_INUSE (MUXSCH_INUSE)            ((uint8_t) 0x10)

    MUXDIF_默认值            ((uint8_t) 0x00)

    MUXSG0_INUSE            ((uint8_t) 0x01)

     MUXSG1_INUSE            ((uint8_t) 0x00)

    系统默认值            ((uint8_t) 0x00)

    GPIO_停用             ((uint8_t) 0x00)

    GPIOD_默认值             ((uint8_t) 0x00)

    以下是我的代码流程

    延迟(50ms)

    PWDN 由硬件上拉

    Start_pin ()

    延迟(5)

    toggle_reset();

    WRITE_THE_DATA()

    Read_the_data ()

    这有什么问题吗?

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

    尊敬的 Fahad K R:

    无需切换复位引脚。   当 AVDD-AVSS 等于3.2V 时、POR 会释放。  因此、ADS1258此时应该可以完全正常运行。  如果你做 toggle_reset (),我建议在 writing_the_data ()之前增加一些额外的延迟。  通过这种方法、可以确保已完成重置操作。

    此致、

    鲍勃 B

     

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

    尊敬的 Bob:

    我在写入寄存器之前和写入寄存器之后读回寄存器值、但在这两种情况下、都在缓冲区中显示0xFF。 我正在分享 DSO 的图片  

    黄色-时钟

    蓝色- MISO (向我的处理器发送数据)

    谢谢!  

    法哈德·克里

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

    尊敬的 Fahad K R:

    • 您要读取哪个寄存器?
    • 您要对寄存器进行什么写入?
    • 是否发送了正确的命令和正确的时序?
    • 您说您使用的是 ADS1258评估板、但您似乎有自己的代码(这意味着您没有使用提供的 GUI 软件)。 您是否正在使用连接到 ADS1258EVM 的外部处理器板?
    • 您是如何将处理器板连接到 EVM 的? 您能提供图片吗?
    • EVM 能与 GUI 软件配合使用吗?
    • 查看完整数据事务的逻辑分析仪、而不仅仅是单个寄存器的范围快照会很有帮助。 通过这种方法、我们可以看到您发送到 ADC 的所有内容、以及 ADC 的响应方式、同时验证时序。 您是否有逻辑分析仪?

    如果不知道这些问题的答案、并且您不提供完整的逻辑分析仪数据而不是示波器截图、就很难帮助您进一步诊断此问题

    正如 Bob 之前提到的、请向我们提供完整信息。 到目前为止,你只提供了位和一些信息,而没有整个"图片",我们无法帮助你非常多

    -Bryan

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

    您好、Bryan:

    我将 ADS1258评估板与我的处理器 RZA2M 结合使用。 我正在分享以下图片。

    我正在使用站点中提供的示例代码。

    我正在发送读取命令 [ opcode_RREG  ((uint8_t) 0x40)]  的内部 SPI。

    我正在读取寄存器的默认值、  [ REG_ADDR_CONFIG0  ((uint8_t) 0x00)]  以验证 SPI 通信。 我正在阅读 readSingleRegiste R ()  配置 API。

    我使用 DSO 检查了传输数据、没错。 但是、获得价值 0xFF 所有寄存器的记录。  我在写入后检查了、它也显示相同 为0xff。

    我连接了 J5A 连接器中的3.3V、5V 和 GND、并连接了 START 引脚、RESET 引脚和 SPI (MISO、MOSI、CLK、SS)。

    我没有使用 ADCPro 软件检查电路板。 我直接与处理器板相连。

    我相信提供的详细信息足以理解问题所在。

    谢谢。此致、

    法哈德·克里

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

    尊敬的 Fahad K R:

    感谢您提供更多信息

    您是否可以将 START 引脚置为高电平并探测 DRDY 引脚? 您无需将 DRDY 连接到控制器(看起来似乎没有连接)、只需使用示波器对其进行探测即可。 DRDY 引脚应以近似的1/data 速率进行脉冲、与下图类似。 这表示 ADC 至少在工作(电源有效且晶体/时钟正常工作)。 请让我知道您是否能够看到这种行为、

    我还注意到、在示波器屏幕截图中、您发送的 DOUT 始终为高电平(您说看到的是0xFF)。 控制器中的这个引脚上是否有一个上拉电阻器? 我预计 DOUT 在某个时候会返回低电平、但在您的系统中似乎并非如此。 如果 DOUT 引脚由控制器驱动、则在数据闪存中

    告诉我

    -Bryan