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.

[参考译文] BQ40Z50-R2:使用 MCP2221器件进行温度校准

Guru**** 2589245 points


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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1387738/bq40z50-r2-temperature-calibration-with-mcp2221-device

器件型号:BQ40Z50-R2

工具与软件:

大家好!

SAGA 继续校准 BQ40Z50R2!

工作的最后一部分是校准温度读数、 同时仍使用 MCP2221 SMBus 器件。

我们应用一个已知温度、例如21摄氏度

然后、举例来说、我们读取内部温度的 TINT 偏移。

 -smbw=14、40 -slave8=17 -register=00 -PEC =关闭 (读取内部温度偏移、通常在0.1°C 下介于-128和127之间)

 -smbr=3 -slave8=17 -register=23 -PEC =关闭  

这给了我们  

SMBus 读取3字节、从器件= 0x17、寄存器索引= 0x23、PEC =关闭
0x20、0x7d、0x78  (忽略第一个字节)

其中、在 这种情况下的偏移为7D78 = 32,120,32767 - 32120 = 647 ??

然后从 DAstatus2读取温度(72)

 -smbw=72、00 -slave8=17 -register=00 -PEC =关闭

 -smbr=17 -slave8=17 -register=23 -PEC =关闭  

这给了我们

SMBus 读取17字节、从器件= 0x17、寄存器索引= 0x23、PEC =关闭
0x10、0xb、0xc、0x13、0xc、 0x13、0xc、0x55、0x12、0x59、 0x12、0x13、0xc、0、0、 0x13、0xc (忽略第一个字节)

其中 AAAA 为0C0B = 3083 = 308.3 K = 35.15°C

要找出新的偏移、请执行该计算  

计算温度偏移:
TINT 偏移= TEMPTINT–TINT + TINT 偏移  = 21.0 - 35.15 + 647 (同样、如果正确、不确定)= 633、因此新的偏移=  32767 - 633 = 32134 = 7D86


将新的 Internal Temp Offset 值写入数据闪存

 -smbw=03、14、86、7D -slave8=17 -register=44 -PEC =关闭

然后重新检查读数、查看是否接近21.0摄氏度

这似乎不起作用、是否有人对此有任何经验?

非常感谢

Steve

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

    Steve、您好!

    如果可能、您能否尝试从0x08函数读取温度读数? 我想看看报告的内部温度是否与您从 DAStatus2()中看到的相同35.15。

    此致、

    Anthony Baldino

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

    Anthony、您好!

    感谢您的答复

    来自 DAStatus2()

    SMBus 读取17字节、从器件= 0x17、寄存器索引= 0x23、PEC =关闭
    0x10、0x6F、0xb、0x72、0xb、 0x6F、0xb、0xc9、0x12、0x6b、 0x12、0x72、0xb、0、0、 0x72、0xb

    从0x08开始

    SMBus 读取2字节、从器件= 0x17、寄存器索引= 0x8、PEC =关闭
    0x72、0xb

    0X0B72 = 2930 = 293.0K = 19.85 °C

    我想我现在已经能够使用该方法对其进行校准。

    我有一个目标实际温度、然后将校准偏移值 YYXX 发送到所有温度值- IntTemp TS1和 TS2

     -smbw=03、14、XX、YY -slave8=17 -register=44 -PEC =关闭

     -smbw=03、15、XX、YY -slave8=17 -register=44 -PEC =关闭

     -smbw=03、16、XX、YY -slave8=17 -register=44 -PEC =关闭

    然后我读取温度、并递增或递减 YYXX 值、直到目标温度和读取温度之间存在+/- 0.5度差异、并进行了某种程度的自动调整。

    然后、将结束 YYXX 值(此示例为 EA40)用于下一零件、由于它们都处于相同的温度、因此在初始值设置后、它似乎是第一次获得、但如果它已设置、它将进行调整。

    这有道理吗?  这似乎是对我有用的!  

    非常感谢

    Steve

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

    Steve、您好!

    这个过程似乎应该起作用。 进行确认的是、您是否启用了任何外部温度检测引脚?  

    此外、在校准过程之后读出 Temperature 时、它是否反映了适当的温度?

    此致、

    Anthony Baldino

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

    Anthony、您好!

    是的、它通过校准源将其设置为温度目标值、之后保持正确、TS1和 TS2被启用、在这个阶段、它们都是相同的温度、就在 PCBA 上。


    感谢您的意见

    祝你一切顺利。
    Steve