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.

[参考译文] RM57L843:OTP 温度传感器校准值

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/600140/rm57l843-otp-temperature-sensor-calibration-values

器件型号:RM57L843

您好!

我正在读取 RM57L843 (芯片上打印的 PRM57 L843ZWTT YFB-55AV86W)上温度传感器2和3的板载温度值、并在使用编程的 OTP 校准值时报告错误的温度。 193 - 200开尔文。

OTP 编程值为:

传感器1

 S2TEMP1 303K

 S2TEMP1VAL 1957

 S2TEMP2 233K

 S2TEMP2VAL 1533

 S2TEMP3 398K

 S2TEMP3VAL 2520

读取值:1331、转换值:198.877K

传感器2

 S3TEMP1 303

 S3TEMP1VAL 1882

 S3TEMP2 233

 S3TEM2VAL 1464

 S3TEMP3 398

 S3TEMP3VAL 2456

读取值:1281、转换值:202.751K

当芯片处于不同的环境中时、读数会按预期变化、所以我相信代码工作正常、并且怀疑 OTP 校准值是错误的。 这是否可能是问题、或者是否有其他因素会影响这一点? 我验证了引脚复用设置和 ADC 设置、并在多个不同的电路板上尝试了代码。 HDK 电路板的校准值为0xFFFF、因此我假设它们没有预制温度校准。  

如果我们要使用温度传感器、是否应预制内部温度校准?  

谢谢!

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

    以下链接演示了如何使用片上温度传感器:
    www.ti.com/.../spna216.pdf

    我们将查看您的测量结果。

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

    文档已经过审核、我的代码与描述内容一致。

    OTP 校准值似乎错误。

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

    可以共享您的代码来读取温度、我们可能会更快地为您提供帮助、此致!

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

    float s2_sum_temp = otpREG->S2TEMP1 + otpREG->S2TEMP2 + otpREG->S2TEMP3;
    float s2_sum_val = otpREG->S2TEMP1VAL + otpREG->S2TEMP2VAL + otpREG->S2TEMP3VAL;
    float s2_temp_x_temp =((otpREG->S2TEMP1 * otpREG->S2TEMP1)+(otpREG->S2TEMP2 * otpREG->S2TEMP2)+(otpREG->S2TEMP3 * otpREG->S2TEMP3));
    float s2_temp_x_val =((otpREG->S2TEMP1 * otpREG->S2TEMP1VAL)+(otpREG->S2TEMP2 * otpREG->S2TEMP2VAL)+(otpREG->S2TEMP3 * otpREG->S2TEMP3VAL);

    s2_slope =(((s2_temp_x_temp * 3)-(s2_sum_temp * s2_sum_temp)))/((((s2_temp_x_val * 3)-(s2_sum_temp * s2_sum_val)))));
    s2_offset =(s2_sum_val -(s2_sum_temp / s2_slope))/ 3;

    float S3_sum_temp = otpREG->S3TEMP1 + otpREG->S3TEMP2 + otpREG->S3TEMP3;
    float S3_sum_val = otpREG->S3TEMP1VAL + otpREG->S3TEMP2VAL + otpREG->S3TEMP3VAL;
    float S3_temp_x_temp =((otpREG->S3TEMP1 * otpREG->S3TEMP1)+(otpREG->S3TEMP2 * otpREG->S3TEMP2)+(otpREG->S3TEMP3 * otpREG->S3TEMP3));
    float S3_temp_x_val =((otpREG->S3TEMP1 * otpREG->S3TEMP1VAL)+(otpREG->S3TEMP2 * otpREG->S3TEMP2VAL)+(otpREG->S3TEMP3 * otpREG->S3TEMP3VAL);)

    s3_slope =((s3_temp_x_temp * 3)-(s3_sum_temp * s3_sum_temp))/((s3_temp_x_val * 3)-(s3_sum_temp * s3_sum_val)));
    s3_offset =(s3_sum_val -(s3_sum_temp / s3_slope))/ 3;

    浮点偏移= 0.0;
    浮点斜率= 0.0;
    uint16_t val = 0U;


    开关(传感器)

    情况(TEMP_SENSOR_2):
    adcREG2->GxSEL[1U]= 0x80000000U;/*启动温度传感器*/
    偏移= s2_offset;
    Slope = s2_slope;
    中断;
    情况(TEMP_SENSOR_3):
    adcREG2->GxSEL[1U]= 0x40000000U;/*启动温度传感器*/
    偏移= S3_OFFSET;
    Slope = S3_slope;

    中断;
    默认值:
    返回-1;


    /*等待转换*/
    while (!(adcREG2->G1SR & 1)){/* Spin Wait */}

    Val = adcREG2->GxBUF[1U].BUF0和0xFFFU;/*获取值*/

    adcREG2->GxSEL[1U]= 0x0;//设置两个温度传感器*/


    返回((float) val - offset)*斜率;
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否有任何更新?

    我们是否应该在内部进行温度校准、而不是信任 OTP?

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

    我转到此主题的顶部以获取有关原始问题的更多信息。 如果 OTP 中的校准值正在读取0xFFFF、则从未对其进行编程。 这很可能是因为您有早期器件样片、而不是生产器件。 器件顶部标记的器件型号上是否有 TMP 而不是 TMS? tmp 部分是预生产的,在那里有一定百分比的生产测试被实施,而有些没有。 在这种情况下、似乎温度传感器校准尚未完成。

    我建议 OTP 中的值为0xFFFF、然后执行您自己的校准、但如果不是、则可以按原样使用它们。 这可能只是针对您的开发的权变措施、并在使用完整的生产器件时采用。 实际上、如果您从 OTP 中为生产器件读取0xFFFF、我会在制造测试期间将其失败并返回 TI 进行评估、因为这意味着部分生产过程被跳过。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复 Chuck、

    问题在于、这些值不是我所使用的芯片上的0xFFFF、而是 TI 提供的 HDK。

    OTP 中的值为:

    S2TEMP1 303K
    S2TEMP1VAL 1957

    S2TEMP2 233K
    S2TEMP2VAL 1533

    S2TEMP3 398K
    S2TEMP3VAL 2520


    使用这些值和读取的读取值:1331、转换后的值为:198.877K、这是不现实的。 从 OTP 值来看、如果您看到值1533读取233K、而我的 ADC 报告的是1331、这是合理的。

    我再次尝试使用以下值对另一个温度传感器进行双重检查:

    S3TEMP1 303
    S3TEMP1VAL 1882

    S3TEMP2 233
    S3TEM2VAL 1464

    S3TEMP3 398
    S3TEMP3VAL 2456

    我获得了一个读取值:1281、转换值:202.751K、同样、我们应该将 OTP 值看作一个被转换为233K 的1464。

    温度传感器读取的值在测试过程中、在凉爽或温暖的环境中绝对会发生变化、因此传感器工作正常。 编程的 OTP 值不允许我对温度进行彻底的解码。 这可以通过对温度读数进行内部校准而不是信任 TI OTP 值来缓解。 这是建议的步骤吗? 这只是前几批产品是否有缺陷?

    我尝试过几个 RM57芯片、结果相同、HDK 芯片没有在闪存中编程的值、因此无法在 TI 提供的电路板上进行测试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为这可能是 OTP 校准期间 ADREFHI 为3.3V 的问题、而系统 I AM 使用5V ADREFHI。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    情况可能是这样。 我不知道他们在什么条件下计算了 OTP 值。 我将与我们的 OTP 专家核实这一点、并与您联系。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Dmitri、

    我对这些 OTP 值进行了一些背景检查、实际上、它们是在3.3V 的 ADREFHI 下获取的。 应用手册中指出了这一点、QJ 之前指向、并提供了一个公式、说明如何转换 OTP 值以在 ADREFHI = 5V 时使用。

    应用手册中有一个电压转换公式:
    www.ti.com/.../spna216.pdf

    *返回的温度将需要按基准电压差进行缩放
    *在标称电压3.30V 下获得校准值。
    *
    *开尔文=返回值*(VccADrefHi - VccADrefLow)/3.30V
    *摄氏度=开尔文- 273.15;
    *
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢!