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.

[参考译文] MSP430F2232:在信息闪存部分10F6-10FF 中有关 DCO 校准数据的生产问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/978150/msp430f2232-production-issue-regarding-dco-calibration-data-in-info-flash-section-10f6-10ff

器件型号:MSP430F2232

大家好、

我在内部 DCO 晶体的校准数据方面有问题。

我们使用具有8MHz DCO 的 MSP430F2232器件。 在生产最终测试中、新闪存发货中的多个器件在时序问题上失败。

我们对该误差进行了局部化处理、发现在写保护信息区域内刷写8MHz DCO 的错误校准数据。

生产从几年以来一直在进行、直到现在、我们都没有问题。 我们检查了信息区域、它已被加亮、表明我们在闪烁时不触摸此区域。

请就此主题提供帮助吗? 有关校准数据的更多信息会有所帮助。 在 TI 生产线上刷写校准数据时是否可能存在问题?

如果有用、我可以在此处发布数据代码。

有关详细信息、请参阅两个附加的图像:

(图1:MSP 数据表/图2的表14:校准数据比较-刷写良好和不良的 MSP)

此致、非常感谢您的帮助

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

    尊敬的 Max:

    很抱歉耽误你的时间。  我查看了器件勘误表、这些器件上的 TLV 数据似乎没有任何已知问题。  此外、MSP430F2xxx 系列目前非常成熟、因此我不希望出现任何新的勘误表/生产问题。   

    查看从 TLV 校准数据中提供的数据、预期会因器件而异、因此默认情况下数据不会因数据不同而出现错误。  如果我们看一下每个16MHz 校准、我们会得到以下结果:

    "良好"

    •  CALBC1_16MHz = 0x8F
      • RSEL = 0x0F = 15
    • CALDC0_16MHz = 0x7D
      • DCOx = 3
      • MODx = 29

    "错误":   

    •  CALBC1_16MHz = 0x8F
      • RSEL = 0x0F = 15
    • CALDC0_16MHz = 0x61
      • DCOx = 3
      • MODx = 1

    因此、它看起来唯一真正的区别是 MODx 位、这是频率选择中最微调的部分。   

    您能否详细介绍一下这些器件如何未通过频率精度测试?  他们离得有多远?   

    谢谢、

    JD

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

    JD、您好!

    感谢您的回复。

    关于时序、我们测量约35%的舍入差值(系数1.35)。 我们的软件使用基于 DCO 的内部 MSP 计时器。 它不是偏移、而是系数。 我们测量的时间总是比预期的要长。 我们进行了频率测试、以70ms 的周期切换 MSP 的 GPIO 引脚。 我们测量的周期约为95ms、而不是70ms。

    您能不能看一下我们使用的是8MHz DCO 的校准数据吗?

    关于8MHz、我看到以下差异:

    良好的设备:

    CALBC1_8MHz 0x10FD = 8D

    Rsel = 0x0D = 13

    CALDCO_8MHz 0x10FC = 7B

    DCOx = 3

    MODx = 28

    错误设备:

    CALBC1_8MHz 0x10FD = 8C

    Rsel = 0x0C = 12

    CALDCO_8MHz 0x10FC = D1

    DCOx = 6

    MODx = 17

    从我的观点来看、RSEL/DCOx 的差异 表明、时间安排彼此相差甚远?

    我对受影响的寄存器 BCSCTL1和 DCOCTL 是否正确? 您能否检查我对8MHz 值的解释?

    谢谢、此致、

    最大

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

    您好、Max、

    如果您有可用的 GPIO、您能否直接在 GPIO 上输出时钟信号并进行测量?  此外、您能否共享用于配置时钟和加载校准值的代码?     

    至于您对 TLV 数据的解码、我认为它是正确的。  虽然这些值看起来非常不同、但实际上很难说它们之间的距离是否非常远。  该值在 RSEL 中下降一级、但在 DCOx 中上升3级、因此会产生一些取消效果。  RSELx 曲线之间存在一些重叠。   

    根据用户指南:  

    以及 F22x2数据表中的以下内容:  

    我们不指定 RSELx 的典型步长、但仅举个例子、假设 RSELx 的平均步长约为35%、DCOx 为~ 10%。  (MODx 为~DCOx/32、或 每个为~.3%)。   因此、您可以看到、从技术上讲、有相当多的解决方案可以达到相同的近似频率。  

    因此、对于上面列出的8MHz、它会下降1个 RELX (例如:~-35%)、但随后会恢复几乎3倍的 DCOx 步长(例如:~+33%)。  因此它们实际上可能非常接近。  

    当然、所有这些步长和频率可能因器件而异、因此我不希望任何两个器件具有完全匹配的校准数。  

    如果我对其余的校准值进行解码、并且基本上做得好-坏、这些是我看到的大约 MODx 增量:

    • 1MHz =-20 MODx
    • 12MHz =-24 MODx
    • 16MHz =-28 MODx

    因此、坏单元的校准设置确实较低、但与"好"单元相比、不同频率之间的分组看起来相当接近。  我假设由于这些值较低、因此该单元中的内部振荡器默认运行速度稍快、并且会进行补偿。   

    谢谢、

    JD    

     

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

    JD、您好!

    好的、感谢您的反馈。 我真的很困惑:-(.

    我们的初始代码中是否可能缺少一个寄存器加载? 可能是 DCOCTL?

    下面是主时钟模块的初始化代码:

    #define PROC_SPEED CALBC1_8MHZ //主时钟:8MHz
    // Timer A 运行时钟/8 ->秒
    
    [...]
    
    //设置基本时钟模块
    BCSCTL1 = PROC_SPEED + DIVA0;//设置 DCO 和处理器速度
    BCSCTL2 = SELM_0 + DIVM_1; // MCLK 源= DCO;MCLK 分频器= 1
    // SMCLK 源= DCO (SELS = 0);SMCLK 分频器= 2 (DIVs=1) 

    此致、

    最大

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

    您好、Max、

    很抱歉耽误你的时间、希望你能在平均时间解决这个问题!   

    是的、您需要为您尝试加载的频率写入具有 CALDCO_xxxx 值的 DCOCTL。   

    下面是一个显示加载8MHz 校准数据的代码示例: https://dev.ti.com/tirex/explore/node?node=AOEH3qdVvIfqg7-xxL49Tw__IOGqZri__LATEST 

    希望这能解决您的问题。   

    谢谢、

    JD

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

    JD、您好!

    是的、这可以解决我们的问题。

    感谢您的支持、

    此致、

    最大