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.

[参考译文] LM95071:正常工作几天后温度读数停止准确

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/983041/lm95071-temperature-readings-stops-being-accurate-after-a-few-days-of-working-properly

器件型号:LM95071
主题中讨论的其他器件: LM71

大家好、

我的客户使用 LM95071通过 SPI 进行温度测量。 他们发现,经过一天或两天的运行时间后,它可能会一直发送相同的两个字节,有时设备 ID 就像处于睡眠模式一样,最近它的读数是14.6degC,不会对热量作出反应。  

读取函数每秒被调用一次。 我还附加了一个16个时钟脉冲的示波器快照、以获得使用的两个字节。 示波器速度较慢(50MHz)、因此时钟看起来是四舍五入的。 在第一个附件中、输出是器件 ID。 片选为绿色、LM95输出为蓝色、时钟为紫色。 第二个附件是重新启动后的正常输出、显示室温为21.21摄氏度

重新启动会始终修复它。 他使用以下代码从 STM32L431以10MHz 运行:

浮点 LM95071_GET_degC (空)

               int16_t MSB、LSB;

               int16_t 计数;

 

               //等待传输完成

               while (!LL_SPI_IsActiveFlag_TXE (LM95071_SPI_PORT)|| LL_SPI_IsActiveFlag_BSY (LM95071_SPI_PORT));//等待传输完成

               while (LL_SPI_IsActiveFlag_RXNE (LM95071_SPI_PORT))

               {//确保 FIFO 缓冲区为空

                               LL_SPI_ReceiveData8 (LM95071_SPI_PORT);//读取数据

               }

               LL_SPI_Disable (LM95071_SPI_PORT);//端口必须禁用才能更改相位和极性

               LL_SPI_SetClockPolarity (LM95071_SPI_PORT、LL_SPI_POLARY_LOW);

               LL_SPI_SetClockPhase (LM95071_SPI_PORT、LL_SPI_PHASE_2EDGE);

               LL_SPI_Enable (LM95071_SPI_PORT);//启用 SPI 端口

               LL_GPIO_ResetOutputPin (LM95071_CS_PORT、LM95071_CS_PIN);//将 LM95071 /CS 引脚拉至低电平

               LL_SPI_TransmitData8 (LM95071_SPI_PORT、0); //虚拟 TX

               LL_SPI_TransmitData8 (LM95071_SPI_PORT、0); //虚拟 TX

               while (!LL_SPI_IsActiveFlag_TXE (LM95071_SPI_PORT)|| LL_SPI_IsActiveFlag_BSY (LM95071_SPI_PORT));//等待传输完成

               LL_GPIO_SetOutputPin (LM95071_CS_PORT、LM95071_CS_PIN);//将 LM95071 /Cs 引脚拉高

               MSB=LL_SPI_ReceiveData8 (LM95071_SPI_PORT);//读取数据

               LSB = LL_SPI_ReceiveData8 (LM95071_SPI_PORT)和0xFC;//读取数据并清除2个 LSB

               count=LSB+(MSB<8);//转换为二进制补码整数

               return ((float) count* LM95071_degC_PER_LSB);//返回 degC

是否有任何可能出错的想法?

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

    您好 Lauren、

    我有几个问题可以帮助澄清。  

    1. 修复此问题的重启是否包括设备重启或仅重置控制器?
    2. 重新启动设备后,是否在几天后仍会再次发生故障?  
    3. 这是他们在单个器件还是多个不同器件上看到的吗?  
    4. 根据示波器捕获结果、我估计其时钟频率为5MHz、这是正确的吗?  

    此致、
    Brandon Fisher

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1. 修复此问题的重启是否包括设备重启或仅重置控制器?

      是的、重启电源后、控制器复位不起作用

    2. 重新启动设备后,是否在几天后仍会再次发生故障?  

      是的

    3. 这是他们在单个器件还是多个不同器件上看到的吗?

    它发生在两块电路板上、两块电路板都是原型、尚未投入生产。

    4、根据示波器捕获的数据、我估计其时钟频率为5MHz、这是正确的吗?  

    是的、他将其从10MHz 减至5MHz、看看它是否有用

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

    您好 Lauren、

    感谢您查看此内容。 10MHz 时钟速度将高于我们的规格限制、但5MHz 是可以接受的、因此这是一个很好的测试。

    他们的 I/O 线路上是否有其他未显示的流量?

    此外、很难在这些示波器快照上测量它们的时序。 他们是否有一个更快的示波器、可以在其中测量设置和保持时间以确保合规性?  

    另一个注意事项是、我在他们共享的原理图部分看不到这一点、但他们是否在控制器侧的线路上有10kOhm 电阻器以防止争用?

    此致、
    Brandon Fisher

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

    您好、Brandon、

    感谢您的帮助!

    它们仅连接到 MCU 上的 MISO、因此不连接10K、只读取数据、不写入 LM95。 他们将尝试查看他们是否可以获得更快的示波器截图。

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

    感谢 Lauren -我们期待着新的示波器照片

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

    嘿、Josh、

    下面看一下显示时钟和/CS 的500ns/div 的帧-这是否有帮助?

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

    您好 Lauren、

    考虑到下冲似乎超过了 LM95071的-0.3V 绝对最大值、下冲看起来有点令人担忧。 在高侧、它们似乎可以、或者至少略高于限制。  

    我知道他们已经从10MHz 减至5MHz、但他们能否进一步减慢时钟速度、看看这是否会改善上升和下降的过冲和下冲? 我想看看当电压处于绝对最大额定值范围内时、问题是否仍然存在。

    此致、
    Brandon Fisher

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

    您好、Brandon、

    实际上、振铃来自  其示波器探针、如果它们切换到10:1、则不存在。 他们真的认为这是固件方面的事情。

    您是否知道我们是否有任何代码可从其 STM32 MCU (UART)读取温度?

    谢谢、
    劳伦

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

    您好 Lauren、

    我一直在关注、似乎我们没有针对 STM32平台的任何代码、因为这不是 TI MCU。

    Linux 内核确实包括一些与 LM95071兼容的 LM71驱动程序 www.kernel.org/.../lm70.html。 我相信有一些 Linux 构建可以在 STM32发现套件上运行: https://elinux.org/STM32。 不过、我对 Linux 和 STM32的熟悉程度有限。

    编辑:请查看并告诉我 、如果您认为这有助于对代码进行故障排除。  

    此致、
    Brandon Fisher