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.

[参考译文] ADS7142-Q1:无法从数据缓冲区读取数据

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1589658/ads7142-q1-not-able-to-read-data-from-data-buffer

器件型号: ADS7142-Q1

您好:
我使用带热敏电阻的 ADS7142Q1 转换器作为温度传感器。 在自主警报后模式下使用它。 在这里、我无法从数据缓冲区读取数据、也无法理解数据缓冲区之后的读取序列。  

请提出解决方案

此致、

Anshoo Tiwari

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

    尊敬的 Anshoo:

    您是否能够共享您的序列或逻辑分析仪捕获结果以帮助进行调试?

    此致、
    Joel

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

    你好 Joel、

    来配置我使用的 IC  

    按以下顺序-

    对于写入[开始+写入地址+操作码 (x08)+寄存器地址+写入数据(8 位)]

    对于读取[开始+写入地址+操作码 (x10)+寄存器地址+重新启动+读取地址]

    但对于数据缓冲区、[开始+写入地址+操作码 (X30)+重新启动+读取地址]

    此致、

    Anshoo Tiwari  

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

    尊敬的 anshoo:

    很抱歉耽误你的时间。 若要从数据缓冲区读取、无需提供操作码。 您需要提供 I2C 读取、然后以 2 的倍数读取字节。  

    此外、您提到您使用的是自主模式、在警报后数据模式下、对吧? 您是否能够共享对这些寄存器的寄存器写入? 否则、我也可以尝试提供您可以遵循的配置序列。

    此致、
    Joel

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

    尊敬的 Joel:

    好的、我只使用 I2C 读取命令进行尝试。
    这些是我用于后置警报自主模式的寄存器配置、

    6'd0:SET_STEP (IC2_ADDR、1'b0、操作码_WR、8'h1f、8'h01); //中止序列
    6'd1:SET_STEP (IC2_ADDR、1'b0、操作码_WR、8'h15、8'h01); //校准
    6'd2:SET_STEP (IC2_ADDR、1'b0、操作码_WR、8'h24、8'h03); //输入通道配置 reg — 单端配置中的两个通道都启用
    6'd3:SET_STEP (IC2_ADDR、1'b0、操作码_WR、8'h1C、8'h06); //自动排序的自主模式
    6'd4:SET_STEP (IC2_ADDR、1'b0、操作码_WR、8'h20、8'h03); //为自动排序选择两个通道
    6'd5:SET_STEP (IC2_ADDR、1'b0、操作码_WR、8'h28、8'h02); //选择数据缓冲器输出配置(具有通道 ID 和数据有效位的 12 位数据)
    6'd6:SET_STEP (IC2_ADDR、1'b0、操作码_WR、8'h18、8'h01); // osc_sel
    6'd7:SET_STEP (IC2_ADDR、1'b0、操作码_WR、8'h19、8'h00); // nCLK_SEL
    6'd8:SET_STEP (IC2_ADDR、1'b0、操作码_WR、8'h2C、8'h06); //数据缓冲器操作模式
    6'd9:SET_STEP (IC2_ADDR、1'b0、操作码_WR、8'h37、8'h01); //启用数字窗口比较器
    6'd10:SET_STEP (IC2_ADDR、1'b0、操作码_WR、8'h34、8'h03); //启用 CH0 和 CH1 的 ALERT
    6'd11:SET_STEP (IC2_ADDR、1'b0、操作码_WR、8'h38、8'h4A); // CH0 高阈值 LSB 寄存器
    6'd12:SET_STEP (IC2_ADDR、1'b0、操作码_WR、8'h39、8'h06); // CH0 高阈值 MSB 寄存器
    6'd13:SET_STEP (IC2_ADDR、1'b0、操作码_WR、8'h3A、8'h00); // CH0 低阈值 LSB 寄存器
    6'd14:SET_STEP (IC2_ADDR、1'b0、操作码_WR、8'h3B、8'h08); // CH0 低阈值 MSB 寄存器
    6'd15:SET_STEP (IC2_ADDR、1'b0、OPCDE_WR、8'h3C、8'h4A); // CH1 高阈值 LSB 寄存器
    6'd16:SET_STEP (IC2_ADDR、1'b0、OPCDE_WR、8'h3D、8'h06); // CH1 高阈值 MSB 寄存器
    6'd17:SET_STEP (IC2_ADDR、1'b0、操作码_WR、8'h3E、8'h00); // CH1 低阈值 LSB 寄存器
    6'd18:SET_STEP (IC2_ADDR、1'b0、OPCDE_WR、8'h3F、8'h08); // CH1 低阈值 MSB 寄存器
    6'd19:SET_STEP (IC2_ADDR、1'b0、OPCDE_WR、8'h40、8'h20); // CH0 比较器迟滞寄存器
    6'd20:SET_STEP (IC2_ADDR、1'b0、操作码_WR、8'h41、8'h20); // CH1 比较器迟滞寄存器
    6'd21:SET_STEP (IC2_ADDR、1'b0、操作码_WR、8'h1E、8'h01); //启动序列
    6'd22:SET_STEP (IC2_ADDR、1'b1、8'h30、8'h00、8'd0);

    在第 0 步到第 21 步中、我将为相同配置 IC、并在第 22 步使用该配置来读取数据缓冲区。 如果您在此处发现任何错误、请提供配置顺序。 使用地址'h1B

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

    尊敬的 Joel:

    我们正在等待您的反馈和建议。 请你做必要的一举一动。

    此致、
    Anshoo

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

    尊敬的 Anshoo:

    寄存器配置看起来正确。 现在、由于使用了警报后、您是在之后检查 ALERT 引脚还是 ALERT 寄存器? 发生警报事件后、数据缓冲区应更新、然后可以通过 I2C 读取命令读取、如上所述。  

    此致、

    Joel