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.

[参考译文] TMP107:在关断模式下丢失读数

Guru**** 2615705 points

Other Parts Discussed in Thread: TMP107

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/574973/tmp107-missed-reading-in-shutdown-mode

器件型号:TMP107

(1)我在工作台上串联了三个传感器、使用 RaspberryPi 和9600波特运行数天。  有一次、第一个传感器返回时温度为0.1 C、而另外两个传感器仍在22 C 左右读取环境温度。 这是在经过处理后、因此我没有其他详细信息可以添加到公式中。 它们都在关断状态下运行、这是我的读取温度代码。  TDLY 仅为几毫秒。  即2 x 字符时间

/***** 读取温度 TMP107s **** /
浮点读取温度(AA)
 内部 AA;                   /*器件型号*/

 内部 ITEMP;
 float rTemp;
 fprintf (stdout、"\n3:");
 serialPutchar (ftmp,cCAL);   //写入 OneShot 的校准字节*/
 延迟(TDLY);
 serialPutchar (ftmp,(AA <<3));      /*地址设备*/
 延迟(TDLY);
 serialPutchar (ftmp, 0xA0+cCONFIG);   /*临时寄存器*/
 延迟(TDLY);
 serialPutchar (ftmp,(cSHUTDOWN+cONESHOT)& 0xFF );/* LSB OneShot */
 延迟(TDLY);
 serialPutchar (ftmp、((cSHUTDOWN + cONESHOT)>> 8)和0xFF);/* MSB 关断*
 serialFlush(ftmp);
 延迟(TDLY);
 readByte(5);                /*读取预期的字节*/
 printByte(5);
 延迟(22);                /****延迟22毫秒**/

 serialPutchar (ftmp,cCAL);   //读取温度的校准字节
 延迟(TDLY);
 serialPutchar (ftmp,cREAD +(AA <<3));   /*读取设备*/
 延迟(TDLY);
 serialPutchar (ftmp, 0xA0+cTEMP);      /*临时寄存器*/
 serialFlush(ftmp);
 延迟(22);                         /****毫秒**/
 readByte(5);
 printByte(5);
 
 ITEMP =(rByte[3]>> 2)+(rByte[4]<< 6);// 20170210解码温度*/
 IF (ITEMP & 0x2000)                   /*-ve 符号集*/
 {
   ITEMP =~ITEMP & 0x3FFF;   /*一补码、0高位*/
   ITEMP = ITEMP ^-1;      /*异或带-1 */
 }
 rTemp = ITEMP * tLSB;      /* Scale to LSB *
 flog = 1;
 返回 rTemp;             /*°C */

在发送 OneShot 命令请求数据和读取数据之间、我有22毫秒的延迟、但我希望这足够了、只是想知道在0x55命中线之前、是否值得丢弃0xFF 或一些唤醒调用?

(2)我假设我必须同时传输 OS 和 SD 才能触发单次触发、并且仍然使器件处于关断模式。  这是真的吗?

(3) TMP107数据表显示 OS 位始终读为零(表5)、但为了响应使用以下代码读取配置、我似乎接收到0x1800:

/***** 读取配置 TMP107s **** /
内部 readConfig (AA)
 内部 AA;                            /*器件型号*/

 fprintf (stdout、"\n4:");
 serialPutchar (ftmp, cCAL);
 延迟(TDLY);
 serialPutchar (ftmp,cREAD +(AA <<3));   /*设备*/
 延迟(TDLY);
 serialPutchar (ftmp, 0xA0+cCONFIG);   /*配置寄存器*/
 serialFlush(ftmp);
 延迟(22);                         /* msec */
 readByte(5);                         /*读取预期数据*/
 printByte(5);
 返回(rByte[3]和0xFF)+(rByte[4]<< 8);// config */

(4)出于您的兴趣、我的"实验室"商店没有包含合适的 TxD 接口缓冲器、因此我使用了4N37光耦合器。  我仅运行9600波特、但即使我必须将晶体管基极接地100K 以改善信号边沿时间、也是如此。

David Whiteley

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

    让我们来回顾一下、有人会与您联系。

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

    很抱歉耽误你的时间。

    1.我不熟悉 RaspberryPi。 您能告诉我 serialPutchar 命令是否在发送数据包之前保持微控制器执行? 因为您没有中断例程或标志检查、所以它看起来确实如此。 如果是这种情况、则不需要 delay 语句。 执行 readByte 时、可能需要禁用或扩展任何超时功能。 当您从 TMP107命令集执行全局命令时尤其如此。 无需按照您的建议发送其他数据。

    2.是的,是的。 配置寄存器值应包含 OS 和 SD、以触发和保持关断模式。

    3.您的沟通可能会受到破坏;让我们来解决我的其他问题、然后回到这个问题。

    4.看到您的波形的示波器图片会有所帮助。

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

    Raspberry Pi 操作系统是 Debian Linux 的衍生产品 Raspbian。  大多数"设计"都是在后台运行的、4个内核的频率为1.2GHz、我认为它甚至不知道我在那里!

    我同意我可能不需要字符之间的延迟、只是让我感到很模糊、看着它们是分开的。

    延迟是操作系统调用、我认为它对串行接口活动没有任何影响、但我不能说我的超时不会产生问题。您可能会对我的Individual Read at 9600 baud波形捕获尝试感到微笑。  示波器是一款30岁、20MHz 的飞利浦3214、我正尝试在连接到 Win7笔记本电脑的网络摄像头上进行"拍摄"。  遗憾的是、它相当引脚化、但我认为您可以看到配置应答的最后一个字节中包含0x18 (OS +SD)、而不是数据表(P24、表5)中的0x08 (SD)。  RXD 捕获显示为9600波特时的0x55、0A、A1、00、18。

    此设置的现场版本运行了一个多月、在这段时间内、我只看到另一个读取缺失、外部温度有时会达到-20°C。  我只是问"Read Configuration"、因为在我的系统中、0x1800表示 OS+SD、而数据表显示"OS 始终读取为零"、这是一个有趣的问题。  

    我有一个朋友希望我尝试测量他的蜂窝内的温度、这样第二个装置很快就会在加拿大冬天里燃烧、而不是被我的熔炉所吸引!

    David Whiteley

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们的一些器件在转换处于活动状态时读回 OS=1。 在这些器件中、当转换完成时 OS 位变为0、以指示数据就绪。 如果在 TMP107中实现此功能、则意味着操作系统的数据表错误。

    我认为、除非您能够捕获事件、否则我们将无法解决您最初关于间歇性回读错误的问题。 除了您似乎正在正确通信并充分理解这一事实之外、很难从示波器收集任何信息。

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

    为了您的兴趣、我附上了四个 TMP107s 探头的最新图表、其中三个位于一组蜂窝内。  蜂窝-2很早就死了、它的传感器被留在外面以跟随空气温度。  渥太华机场温度是从加拿大天气档案馆获取的。

    HIV-1最优、在夜间温度达到-20°C 时几乎不会低于20°C。  HIV-3在我们安装了探头后不久便开始执行潜水、但随后恢复、现在与 HIV-1一起在30C 时恢复。  Barn 探头位于大约18英尺外的 RaspberryPi 顶部。

    在这42天的时间内、我没有看到错误的0C 读数。

    e2e.ti.com/.../Bee201704.pdf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    真是个好消息。 感谢您分享有关您的应用的信息。