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.

[参考译文] TMP175:指针寄存器和温度转换

Guru**** 2609285 points
Other Parts Discussed in Thread: TMP175, TMP75B

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/666489/tmp175-pointer-register-and-temperature-conversion

器件型号:TMP175
主题中讨论的其他器件: TM4C123TMP75B

您好!

我正在尝试将 tmp175与 tm4c123 Tiva 系列微控制器配合使用。 这是我的第一个 i2c 承诺。 我目前已将其设置为100kbps、以便轻松捕获示波器。  

我已将器件配置为读取12位分辨率。 我对使用指针寄存器和读取2个字节的温度数据有疑问。  

根据数据表、12位分辨率对应的转换速率为220ms。 何时触发转换?  

此外、我当前将指针寄存器写入温度块(0x00)以结束传输。 我立即执行一个2字节寄存器读取。 调试代码时、有时看起来是正确的。 有时、它看起来非常不好。 这是正确的定序吗?

tmp175的数据表缺少实现帮助。

谢谢

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

    图9显示了温度读取事务。 在开始一个读取事务之前、应该使用一个写入事务来设定指针寄存器。 从器件将保留指针寄存器、如果您希望重新读取同一寄存器、则不必每次都写入指针寄存器。 由于您说您不熟悉 I2C、我想指出、一些从器件根本不会保留指针、并且要求主器件在一个通信突发中将起始地址写入 ACK-POINTER-ACK-ACK-REACK-REACK-REACK-REACK-REACK-REACK-REACK-ETY1-ETC 重发送到起始地址读取 ACK-Byte1-ETC。 此外、一些从器件会在每次成功读取一个字节后自动递增指向下一个存储器位置的指针。 这使您能够读取 EEPROM 的大块、例如在一个读取事务中。 我们的 TMP 器件没有这些功能。 指针将被保留、直到它被另一个写入事务或下电上电周期所更改。 希望这有助于消除您可能对指针寄存器产生的任何混淆。

    当配置寄存器中的 SD=0时、TMP175将连续进行测量。 这意味着每次完成一个转换时、将开始另一个220ms 的转换。 我们的现代传感器(如 TMP75B)通过显著缩短转换时间并将大部分时间置于空闲状态来节省功耗。 TMP75B 可配置为每秒启动四次转换、平均电流消耗为6.5uA。 与 TMP175相比、在更新速率大致相同的情况下、电流消耗减少了10倍。

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

    任您好、

    我查看了该图。 我不理解的是第二组消息、其中 SCL 和 SDA 在继续。 写入指针和寄存器、然后在单个 I2C 实例中读取? 我相信我会在总线上发出停止命令。 请参阅随附的示波器屏幕截图。 我还包括了我的配置命令的屏幕截图。  

    我觉得它有时会起作用、有时我会得到奇怪的读数。 它最令人沮丧的方面是读数错误(即读数看起来会偏离)、这是因为它永远不会触发我的范围。 这里可能有一些东西、但我仍在深入探讨。 现在、我想知道这些屏幕截图是否能让人对经过训练的眼睛有任何见解。  

    谢谢!

    Jeff

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

    尊敬的 Jeff:

    我标记了您的一张图片、以帮助您了解正在发生的情况。 您在该图像中具有正确的序列。 您的另一张图片仅显示一个读取事务。 如前所述、只执行读取事务将起作用、因为我们的器件会保留指针。 但是、最好始终在第一个映像中使用序列、在从器件读取之前设置指针。

    谢谢、

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

    任您好、

    我认为我的第二幅图像只是对配置寄存器的写(不读)。 我以单个序列执行该操作。 将指针寄存器写入0x01、然后立即将其配置为12位分辨率。 这至少是我的意图。 您可以确认吗?

    我似乎不正确地处理 Tiva 驱动程序中的一些错误条件。 我需要进一步深入探讨这一点。 即将推出更多内容!

    Jeff

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

    你是对的;第二个映像是写入事务。 值0x60被写入配置寄存器。 该值表示12位分辨率。

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

    我已完全启动并运行。 我缺少 I2CBusy 函数调用。 由于我不理解的原因、这让我成功读取了温度9/10、但定期失败。 添加此附加行、以及确认正确的消息传递方案和内容看起来非常有希望。 我毫无问题地跑了一夜。

    再次感谢、

    Jeff