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.

[参考译文] ADS9324:ADS9324 寄存器读取在 SDOUT 上返回常量 0x5C0190(无法读取 DEVICE_ID 0x21)

Guru**** 2782485 points

Other Parts Discussed in Thread: ADS9324

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1619560/ads9324-ads9324-register-read-returns-constant-0x5c0190-on-sdout-cannot-read-device_id-0x21

部件号: ADS9324

尊敬的 TI 团队:

我尝试使用数据表序列读取 ADS9324 DEVICE_ID:
-表 7-18(单通道 SDOUT 的 init)
-表 7-17(寄存器读取序列)

器件/文档:
- ADS9324
-数据表: SBASB22(2025 年 12 月)

硬件:
- ADS CS 在 GPIO24 上是手动的(低电平有效)
- GPIO15 上的 CONVST、在寄存器访问期间保持高电平
-其他 SPI 器件 CS 线路被强制为高电平以避免总线争用
- DRDY 目前未用于此测试
-请参阅随附的数字引脚接线原理图片段(SDI/SDOUT/SCLK/CS/CONVST/RESET +上拉电阻)

image.png

观察到的流量:

image.png

A 阶段(表 7-18):
1) 0x01 0x00 0x02 (SW_RST)  -> SDOUT:0x5C 0x01 0x90
2) 0x02 0x00 0x01 (BANK_SEL) -> SDOUT:0x00 0x00 0x00 0x00
3) 0x0A 0x00 0x32 (GEN_CFG3) -> SDOUT:0x00 0x00 0x00 0x00

image.png

B 相(REG_ADDR=0x21 的表 7-17 读取):
F1) 0x02 0x00 0x01       -> SDOUT:0x5C 0x01 0x90
F2) 0x01 0x21 0x01       -> SDOUT:0x5C 0x01 0x90
F3) 0x01 0x21 0x01       -> SDOUT:0x5C 0x01 0x90
F4) 0x00 0x00 0x00 0x00       -> SDOUT:0x5C 0x01 0x90

 

image.png

预期:
-对于读取命令帧、SDOUT 应为 0x000000
- SDOUT[23:8]上的 DEVICE_ID 预期为 0x0004

观察到:
- SDOUT 反复返回 0x5C0190、从不返回 0x0004

问题:
1) 表 7-17 读取序列是否正确(CS 针对每个 24 位帧进行切换)、或者 CS 必须在多个帧之间保持低电平?
2) 在 SDOUT 上运行 REG_RD_EN 回读之前、是否需要任何额外的寄存器/配置?
3) 寄存器读取模式是否有强制性的 CONVST/DRDY/RESET 时序条件?
4) 重复 0x5C0190 是否表示已知状态或回退输出模式?

 

提前感谢。

 

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

    您好 Josu、

    感谢您的发布。 您正在评估 ADS9324 用于哪种应用程序/项目?

    表 7-18 所示的示例初始化序列将 SDOUT 引脚设置为仅显示单通道模式转换数据、而不显示寄存器读数数据。 在本例中、这会导致  0x5C0190 的最后一次转换数据持续在 SDOUT 上输出。 如果希望在 SDOUT 上输出寄存器读取数据、您可以将寄存器 0x0A 设置为 0x0030、从而将转换输出模式设置为 1 通道(D7 上)、寄存器数据仍在 SDOUT 上输出。 如果不起作用、请告诉我。

    此致、

    Samiha

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

    您好、Samiha、

    首先感谢您的答复。

    我们正在开发一种具有更高功能的电力 HiL/Automation DAQ 系统。 目前、我们仅通过单通道 SPI 与 ADS9324 进行简单的 RPI 连接来检查可行性、但我们考虑到了 FPGA 实施。

    在您的指导下、我们能够正确读取 DEVICE_ID、实际上、我们是在单通道模式下从 SDOUT 获取转换数据的。 我们的错。

    现在、我们讨论的是开放式主题、如果可能、我想澄清一些问题:

    1-可以在单次模式下运行转换、我是指在 CONVST 中发送单个脉冲、并在 CONVST 上具有固定频率的情况下读取数据。 在数据表中、最低频率为 100kHz、即使在较低的频率下也能按需 CONVST 吗? 是否有方法可以在不将 GPIO 物理连接到 CONVST 的情况下、从 SPI 通信触发转换?

    2-现在我们已经能够读取 DEVICE_ID、我们正在尝试在器件启动时执行 ADC_CAL 例程(增益+偏移量)、但我们看到了一些我们认为不寻常的东西。  CALIB_BUSY_FLAG 始终为 1、我是指即使 在重新启动后读取 CALIB_BUSY_FLAG、已经为 1 而不执行任何校准。 我将向您发送一些示波器波形。

    ...

    PI 设置:总线=0 器件=1 模式=0 速度=100000Hz ADS_CS_GPIO=24

    1) GEN_CFG1 <= 0x0002 (SW_RST) TX 0x01 0x00 0x02 RX 0x00 0x04 0x00
    BANK_SEL <= 0x0001 TX 0x02 0x00 0x01 RX 0x00 0x00 0x00 0x00 0x00
    2) RB DEVICE_ID 和 DEVICE_STATUS

    帧 1:CMD TX 0x01 0x21 0x01/CMD RX 0x00 0x00 0x00 0x00

    帧 2: CMD TX 0x01 0x21 0x01/CMD RX 0x00 0x00 0x00 0x00

    帧 3:  CMD TX 0x01 0x1D 0x01/CMD RX 0x00 0x04 0x00

    帧 4:CMT TX 0x00 0x00 0x00/CMD RX 0xB2 0x89 0x00

    DEVICE_ID 0x0004(匹配!)

    Calib_Busy_flag = 1(校准模块正在运行...)

    ...

     

    尝试强制器件执行校准(单端增益+偏移)不会更改该位、DRDY 引脚在 CALIB 协议下的 CONVST 脉冲之后开始切换~100ms。

    4) 初始读取流水线后等待 2.0ms
    BANK_SEL <= 0x0001(重新选择)TX 0x02 0x00 0x01 RX 0xB2 0x89 0x00

    5A) DIG_FILTER <= 0x0002 (INT_TRIG_MODE=1) TX 0x14 0x00 0x02 RX 0xB2 0x89 0x00
    5B) ADC_CAL <= 0x0003(单端模式)TX 0x12 0x00 0x03 RX 0xB2 0x89 0x00
    5C) ADC_CAL <= 0x0103 (ADC_CAL_TRIG=1) TX 0x12 0x01 0x03 RX 0xB2 0x89 0x00
    5d) ADC_CAL <= 0x0003 (ADC_CAL_TRIG=0) TX 0x12 0x00 0x03 RX 0xB2 0x89 0x00
    5e) CONVST 单脉冲生成(结束状态高电平)、PULSE_US=2.000
    5f) 触发后的 DEVICE_STATUS:0xB289 (CALIB_BUSY_FLAG=1)
    6.1) DEVICE_STATUS:0xB289 (CALIB_BUSY_FLAG=1)
    6.2) DEVICE_STATUS:0xB289 (CALIB_BUSY_FLAG=1)
    6.3) DEVICE_STATUS:0xB289 (CALIB_BUSY_FLAG=1)
    6.4) DEVICE_STATUS:0xB289 (CALIB_BUSY_FLAG=1)
    6.5) DEVICE_STATUS:0xB289 (CALIB_BUSY_FLAG=1)
    校准超时:Calib_Busy_FLAG 在 5 次轮询后保持 1(每个周期 50ms)。

    3、这些测试之后,我还试图从 ADS 读取一些转换。 为此、我遵循了以下配置  

    7A) BANK_SEL <= 0x0001(通用)TX 0x02 0x00 0x01 RX 0xB2 0x89 0x00
    7B) GEN_CFG3 <= 0x0032 (16 位、单通道 SDOUT) TX 0x0A 0x00 0x32 RX 0xB2 0x89 0x00
    7C) ANA_CFG2 <= 0x000C (ADC_NUM_SEL=2Ch、ADC_CH_SEL=000 -> AIN1/AIN16) TX 0x11 0x00 0x0C RX 0x00 0x00 0x00 0x00
    7d) BANK_SEL <= 0x0002 (AIN1-8) TX 0x02 0x00 0x02 RX 0x00 0x00 0x00 0x00 0x00
    7E) PGA_CONFIG_AIN1_2 <= 0x0065 (AIN1 SE OWS +–12.5V、默认 AIN2) TX 0x08 0x00 0x65 RX 0x00 0x00 0x00
    7f) BANK_SEL <= 0x0004 (AIN9-16) TX 0x02 0x00 0x04 RX 0x00 0x00 0x00 0x00
    7G) PGA_CONFIG_AIN15_16 <= 0x0065 (AIN16 SE OWS +–12.5V) TX 0x08 0x00 0x65 RX 0x00 0x00 0x00 0x00
    7h) BANK_SEL <= 0x0001(通用)TX 0x02 0x00 0x01 RX 0x00 0x00 0x00 0x00


    8A) 启动 AIN1 和 AIN16 的转换环路(空白回车=下一次转换)
    8.1) ADC 数据 RX 0xF9 0x37 0xFA 0x0C -> AIN1=0xF937、AIN16=0xFA0C
    电压((+12.500V FS,二进制补码):AIN1=–0.662613V、AIN16=–0.581360V

    它正在工作。 相当不错。

    如果我激活 AIN1 AIN2 AIN15 AIN16、并在每次我像我将要展示的那样连续执行 CONVST DRDY 切换时尝试校准、而不是像以前具有 2 个通道时那样出现单个脉冲。

    我想 这可能与校准有关吗?

    此后、将能够重新配置 GEN_CFG3 并重新读取 DEVICE_ID

    9A) BANK_SEL <= 0x0001(通用)TX 0x02 0x00 0x01 RX 0xF9 0x3B 0xFA
    9B) GEN_CFG3 <= 0x0000(恢复默认值)TX 0x0A 0x00 RX 0xF9 0x3B 0xFA
    10) RB DEVICE_ID(转换后):0x0004 (CMD TX 0x01 0x21 0x01/CMD RX 0xB2 0x89 0x00/NOP TX 0x00 0x00/NOP RX 0x00 0x04 0x00)
    预期的 DEVICE_ID:0x0004

    我知道这个主题很长、但很有用、我想 ADC CAL 和转换问题与某些内容有关。  

    再次感谢!

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

    您好 Josu、

    感谢您提供更多详细信息。 我正在与团队核实“现场“转换、并将返回给您。 进行设计以节省 GPIO 资源或 FPGA 引脚限制的原因是什么?  

    关于校准、我认为该程序似乎对您来说运行正常。  在我的最后进行双重检查、看起来这是数据表错误、读取 CALIB_BUSY_FLAG 的正确寄存器为 0x1E 位 3、而不是 0x1D 位 3 。 我们将在下一个版本中修复此问题。 您还可以通过配置警报(DRDY 引脚)以输出 ADC_CAL_DONE 标志来读回此标志:

    此致、

    Samiha

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

    您好、Samiha、

    我们正在实现此 DAQ 和 ADC 函数并查看其多功能性、在某些应用中、系统在申请时需要高带宽、因此需要一个 FPGA、但在其他应用中、时序和申请配置文件可以通过 GUI 或 PC 按需进行查询、如果方便、可通过正常 SPI 轮询。 主要是测试接地、但我们认为 ADS9324 是一个不错的选择。 使用实现的滤波器、开路安全模式、SE 和差分模式、我们喜欢这些规格。

    希望了解有关单次转换或按需转换功能的信息。

    关于 0x1E 第 3 位的 CALIB_BUSY_FLAG 现在看到以下内容:

    SPI 设置:总线=0 器件=1 模式=0 速度=100000Hz ADS_CS_GPIO=24

    1) GEN_CFG1 <= 0x0002 (SW_RST) TX 0x01 0x00 0x02 RX 0x00 0x00 0x00 0x00
    BANK_SEL <= 0x0001 TX 0x02 0x00 0x01 RX 0x00 0x00 0x00 0x00 0x00
    2) PIPE RB DEVICE_ID + DEVICE_STATUS (CMD1 TX 0x01 0x21 0x01/CMD1 RX 0x00 0x00 0x00/CMD2 TX 0x01 0x01/CMD2 RX 0x00 0x04 0x00/NOP TX 0x00 0x00/NOP RX 0x00 0x04 0x00)
    校准前的 DEVICE_ID:0x0004
    3) 校准前的 DEVICE_STATUS:0x0004 (CALIB_BUSY_FLAG=0)
    4) 初始读取流水线后等待 2.0ms
    BANK_SEL <= 0x0001(重新选择)TX 0x02 0x00 0x01 RX 0x00 0x04 0x00
    5A) DIG_FILTER <= 0x0002 (INT_TRIG_MODE=1) TX 0x14 0x00 0x02 RX 0x00 0x04 0x00
    5B) ADC_CAL <= 0x0003(单端模式)TX 0x12 0x00 0x03 RX 0x00 0x04 0x00
    5C) ADC_CAL <= 0x0103 (ADC_CAL_TRIG=1) TX 0x12 0x01 0x03 RX 0x00 0x04 0x00
    5d) ADC_CAL <= 0x0003 (ADC_CAL_TRIG=0) TX 0x12 0x00 0x03 RX 0x00 0x14 0x00
    5e) CONVST 单脉冲生成(结束状态高电平)、PULSE_US=2.000
    5f) 触发后的 DEVICE_STATUS:0x0014 (CALIB_BUSY_FLAG=0)
    6.1) DEVICE_STATUS:0x0014 (CALIB_BUSY_FLAG=0)

     CALIB_BUSY_FLAG 位似乎是 0x1E 位 4、当检查位 4 标志时、校准大约需要 100ms。

    使用 ALARM 引脚输出 ADC_CAL_DONE 正常工作  

    1) GEN_CFG1 <= 0x0002 (SW_RST) TX 0x01 0x00 0x02 RX 0x04 0x7D 0x04
    BANK_SEL <= 0x0001 TX 0x02 0x00 0x01 RX 0x00 0x00 0x00 0x00 0x00
    2) PIPE RB DEVICE_ID + DEVICE_STATUS (CMD1 TX 0x01 0x21 0x01/CMD1 RX 0x00 0x00 0x00/CMD2 TX 0x01 0x01/CMD2 RX 0x00 0x04 0x00/NOP TX 0x00 0x00/NOP RX 0x00 0x04 0x00)
    校准前的 DEVICE_ID:0x0004
    3) 校准前的 DEVICE_STATUS:0x0004 (CALIB_BUSY_FLAG (bit3)= 0、STATUS_BIT4=0)
    4) 初始读取流水线后等待 2.0ms
    BANK_SEL <= 0x0001(重新选择)TX 0x02 0x00 0x01 RX 0x00 0x04 0x00
    5A) DRDY_ALARM_SEL <= 0x0006 (ALARM_SEL=ADC_CAL_DONE) TX 0x0C 0x00 0x06 RX 0x00 0x00 0x00 0x00
    5B) DIG_FILTER <= 0x0002 (INT_TRIG_MODE=1) TX 0x14 0x00 0x02 RX 0x00 0x06 0x00
    5C) ADC_CAL <= 0x0003(单端模式)TX 0x12 0x00 0x03 RX 0x00 0x06 0x00
    5d) ADC_CAL <= 0x0103 (ADC_CAL_TRIG=1) TX 0x12 0x01 0x03 RX 0x00 0x06 0x00
    5e) ADC_CAL <= 0x0003 (ADC_CAL_TRIG=0) TX 0x12 0x00 0x03 RX 0x00 0x06 0x00
    5f) CONVST 单脉冲生成(结束状态高电平)、PULSE_US=2.000
    5G) 触发后的 DEVICE_STATUS:0x0014 (CALIB_BUSY_FLAG (bit3)= 0、STATUS_BIT4=1)
    6.1) DEVICE_STATUS:0x0014 (CALIB_BUSY_FLAG (bit3)= 0、STATUS_BIT4=1)
    6.2) DEVICE_STATUS:0x0014 (CALIB_BUSY_FLAG (bit3)= 0、STATUS_BIT4=1)
    6.3) DEVICE_STATUS:0x0014 (CALIB_BUSY_FLAG (bit3)= 0、STATUS_BIT4=1)
    6.4) DEVICE_STATUS:0x0004 (CALIB_BUSY_FLAG (bit3)= 0、STATUS_BIT4=0)
    6.11) DRDY_ALARM_SEL <= 0x0000(ALARM_SEL=DRDY 转换完成)TX 0x0C 0x00 RX 0x00 0x04 0x00
    7A) BANK_SEL <= 0x0001(通用)TX 0x02 0x00 0x01 RX 0x00 0x04 0x00
    7B) GEN_CFG3 <= 0x0032 (16 位、单通道 SDOUT) TX 0x0A 0x00 0x32 RX 0x00 0x04 0x00
    7c) ANA_CFG2 <= 0x0008 (ADC_NUM_SEL=4Ch、ADC_CH_SEL=000 -> AIN1/AIN2/AIN15/AIN16) TX 0x11 0x00 0x08 RX 0x00 0x00 0x00 0x00
    7d) BANK_SEL <= 0x0002 (AIN1-8) TX 0x02 0x00 0x02 RX 0x00 0x00 0x00 0x00 0x00
    7E) PGA_CONFIG_AIN1_2 <= 0x6565 (AIN1/AIN2 SE OWS +–12.5V) TX 0x08 0x65 0x65 RX 0x00 0x00 0x00
    7f) BANK_SEL <= 0x0004 (AIN9-16) TX 0x02 0x00 0x04 RX 0x00 0x00 0x00 0x00
    7G) PGA_CONFIG_AIN15_16 <= 0x6565 (AIN15/AIN16 SE OWS +–12.5V) TX 0x08 0x65 0x65 RX 0x00 0x00 0x00
    7h) BANK_SEL <= 0x0001(通用)TX 0x02 0x00 0x01 RX 0x00 0x00 0x00 0x00
    8A) 启动 AIN1、AIN2、AIN15、AIN16 的转换循环(空白输入=下一次转换)
    8.1) ADC 数据 RX 0x04 0x7E 0x04 0x66 0xFF 0xDF 0xFB -> AIN1=0x047E、AIN2=0x0466、AIN15=0xFFDF、AIN16=0xFFFB
    电压((+12.500V FS,二进制补码):AIN1=+0.438690V、AIN2=+0.429535V、AIN15=–0.012589V、AIN16=–0.001907V

    感谢您的帮助 Samiha,希望我们能听到来自按需单次转换.

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

    您好 Josu、  

    谢谢分享。 我们正在研究单次触发模式的可能性、并有望在明天为您提供答案。

    此致、

    Samiha