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.

[参考译文] ADC128D818:更难读取和解释16位通道寄存器

Guru**** 2513185 points
Other Parts Discussed in Thread: ADC128D818

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/663717/adc128d818-more-difficulty-reading-and-interpreting-the-16-bit-channel-registers

部件号:ADC128D818

虽然我可以对8位寄存器执行完全读/写操作,但我在使用16位通道寄存器时遇到了问题。 我已通过读取制造商ID寄存器0x3E 1和修订版9来验证我的读/写能力 ,我还可以将值写入 中断屏蔽寄存器并读回它们,因此我认为我的硬件或基本理解没有任何问题。

但是,如图31所示,16位通道值读数对我来说毫无意义。 作为基本测试,我期望读取通道7中的温度(使用模式0)。 第一个问题是根据我从数据表中了解的内容解释格式。 除了阅读数据表之外,我还搜索了这些论坛,但对于如何填充通道值,仍然没有明确的答案。 不管怎样,我无法猜测任何解释都能理解我获得的值。

因此,将IC初始化到模式0 (按照9.2 .2.2 1快速启动)后,我总是在通道7中获得没有意义的温度读数,尽管当我轻轻地加热/冷却零件时,这些值会增加/减少。 我分析了I2C总线和一个示波器,并在微控制器和SDA之间放置了100R (在从属侧SDA和SCL上有1K上拉),这让我可以检查它是主控还是从属断路。 我认为一切都正常,微控制器接收和报告的数据与示波器上显示的数据一致。 以下示波器快照序列显示了问题:

(注意从属设备的SDA声明显示为0.2V的跌落)

我理解数据表中说,16位值首先读回MSB,填充位于较高的值位位置(但未明确说明)。 温度为x 2,因此我预计22°C的环境温度将返回44°C。 但我看不到这种情况。 我注意到,如果忽略数据表并将第二个字节的顶部位作为十进制0.5 处理,那么第一个字节实际上就像温度(以度为单位)一样有意义,小数部分在LSB中分割。  这实际上是一个合理的编码方案。

假设我可以解决上述问题,我的另一个问题是,通过预设第一个地址并按照"图31"所示的两字节读取连续的字节计时来读取所有信道是否合法-即 只需根据需要为任意数量的对计时。

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

    欢迎来到我们的e2e论坛! ADC128D818中读取的温度仅为9位。 所以我相信你看到的是二进制0.00110001亿 (LSB用零填充),但它是0x31或十进制49,即24C。 如果您有烤箱,您可以将板浸泡在较高的温度下几分钟,然后查看您得到的值。 我不确定您问题的第二部分-关于背靠背阅读所有频道。 我怀疑这不会给您预期的结果,但我会检查并告知您我发现的内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Tom,感谢您的帮助。 事实上,正如我之前尝试的那样,将两字节读数视为与位15 (如图29和31所示)顶部对齐的9位值,当我人为加热和冷却IC (位7加权为0.5C)时,确实与外部温度计相当一致

    计算该值的一种简洁方法是浮点除以256的完整16位读数。  

    但是,我在任何地方都看不到数据对齐的明确描述,在设计审阅中,我希望能够将我的实施与数据表中提供的相关信息相关联。 如果我错过了某个地方,我肯定会欣赏到它的载体。

    ——关于我问题的第二部分,通过进一步的尝试,我发现不重复频道读取寄存器地址的设置而连续读取频道的功能不像我所希望的那样。 数据表提示我,当它谈论" 预设内部地址寄存器"时,可能会出现这种情况:

    图26. 串行总线接口写入示例1 -仅限内部地址寄存器集

    图28. 串行总线接口读取示例1 -使用预设内部地址寄存器读取单字节

    图29. 串行总线接口读取示例2 -使用预设内部地址寄存器读取双字节

    但它只是允许反复读取同一个寄存器,而不是每次都寻址它。 遗憾的是,自动递增地址寄存器不是此设备的功能,当使用多个信道时,这是一种耻辱。

    谢谢,我想我们现在都完成了。