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.

[参考译文] MSP430FR5889:ScanIF 如何在重启后通过而不进行重校准

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/702692/msp430fr5889-scanif-how-to-pass-without-recalibration-after-restart

器件型号:MSP430FR5889

您好!

我有一个简单而困难的问题。 I 基于 MSP430TM 扩展的 LC 传感器旋转检测
扫描接口(ESI)- SLAA639–2014年7月。

校准和重校准似乎运行良好。 我的问题是、是否可以通过某种方式将校准(TSM 状态和其他 scanif 元素)参数存储到 FRAM 中、并在 MSP 硬件重启后使用它们。 重新启动后、无需重新校准过程即可立即进行测量。 我提出这一要求是因为我有一个引导加载程序来远程更新固件(通过3G 调制解调器)、因此在固件完成后需要重新启动以加载新代码、但再次进行校准可能会非常困难。

有人能帮我解决问题吗?

谢谢

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

    我认为您应该能够在运行第一个校准例程后保存这些参数。 校准后、我会将数据保存到 FRAM 中、然后在启动时更改代码以写入相应的寄存器。

    我有疑问:
    您的系统处于哪种环境? 如果环境发生任何变化(温度、湿度、移动设备等)、则实时读数可能会偏离先前校准的范围。 在这种情况下、需要重新校准系统。

    谢谢、

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

    您好 Mitch、

    问题是我不知道应该存储哪些参数。 我有与我在文章 LC 水表中提到的文档中相同的电路。 我考虑使用 AFE2进行定期重校准。

    您能不能与我分享哪一个应该存储。

    谢谢

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

    我将进一步研究这一点、并将尽快提供更多信息。

    谢谢、

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

    首先感谢大家的参与。 我想我找到了一个解决方案。 正确校准完成后、我读取并存储以下寄存器

    scanifcfg.ESIAFE_Value = ESIFE;
    scanifcfg.ESITSM_Value = ESITSM;
    scanifcfg.ESIPSM_Value = ESIPSM;
    scanifcfg.ESIOSC_Value = ESIOSC;
    scanifcfg.ESICTL_Value = ESICTL;
    scanifcfg.ESIDAC1R0_Value = ESIDAC1R0;
    scanifcfg.ESIDAC1R1_Value = ESIDAC1R1;
    scanifcfg.ESIDAC1R2_Value = ESIDAC1R2;
    scanifcfg.ESIDAC1R3_Value = ESIDAC1R3;
    scanifcfg.ESIDAC2RIDAC0_ESIDAC0_Value = ESIDAC0_ESIDAC0_RESIDAC0_VALUE
    scanifcfg.ESIDAC2R1_Value = ESIDAC2R1;
    scanifcfg.ESIDAC2R2_Value = ESIDAC2R2;
    scanifcfg.ESIDAC2R3_Value = ESIDAC2R3;
    scanifcfg.ESIINT2_Value = ESIINT2; 



    复位后、我只需更新上述寄存器、当然会设置一些标志。 Scanif 在该操作后工作正常。 如果我是对的、请确认我是否正确。

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

    嗨、 Michal、

    您显示的内容也与我找到的内容一致。 我将附上用户指南中 ESI 寄存器的图片。 您似乎不必存储 ESIDAC1、ESIDAC2和 ESITSM 寄存器(请参阅图中突出显示的内容)、因为它们在复位时是"不变的"。

    由于这些寄存器在复位时"不变"、它们将在复位后保留其值。 当然、为了安全起见、您仍可以将这些内容保存在内存中。 如果您有任何问题、我建议查看表中的其他读取/写入寄存器。

    以下是用户指南的链接、供参考:

    如果您需要其他信息、请告诉我!

    Mitch

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

    您好 Mitch、

    感谢您提供的全面答案。 是的、您无需更新所提到的寄存器、我还会在调试期间进行检查。 这种设置允许正确处理 scanif 接口。 我还有两个关于 scanif 接口(AFE2重校准)的问题、但我想我将创建一个新线程。

    再次非常感谢

    此致

    Michal