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.

[参考译文] TMS320F28379S:TMS320F28379S:在低温下比较器在无输入的情况下切换

Guru**** 2515960 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1541977/tms320f28379s-tms320f28379s-comparator-toggling-without-input-at-cold-temperatures

器件型号:TMS320F28379S


工具/软件:

当我的另一个帖子被锁定时、我重新发布了此内容、抱歉我没有收到通知、我收到了回复、

我们的处理器有一个奇怪的问题,我想看看是否有任何指导为什么这可能发生. 一位客户发现、在温度低于–15C 时、比较器 5 将开始 跳闸、而没有任何输入到处理器上的引脚。 此处理器上的程序已经过验证、在相同配置下没有其他设备遇到此问题。 我们已验证此器件的输入引脚上没有外部噪声、并且连接到该比较器的 ADC 结果寄存器没有出现任何值突变。 比较器状态通过 Code Composer Studio 调试会话验证为在没有任何外部输入的情况下进行切换、仅受低温的影响。 这只是一个有缺陷的元件吗?

自我最初发布帖子以来、其他一些细节有助于澄清、

在具有相同生产日期代码的不同处理器中、我们发现这可能发生在任何比较器上、或者根本不发生。 通常、每次似乎只有一个受到影响、直到最近、我们已经使用这些处理器几年没有出现问题。

比较器的“输入引脚“是指比较器在内部连接到的 ADC 引脚、我们已经验证在此事件期间 线路上仅存在 mV 并且不会悬空。 ADC 结果寄存器也读回接近零、表示 ADC 模块似乎正常工作。

我们发现、一旦器件进入该状态、器件就会保持在该状态、直到处理器处于暗下电上电、并且我们已经验证了在冷电压与环境电压之间没有奇怪的现象。

编辑:

想为问题的确切含义添加一些额外的上下文:

在正常运行期间、我们使用的比较器在 ADC 达到 DACVAL 设置的阈值后切换 COMPSTS 寄存器。 在环境和冷操作下、我们通常会看到这种工作没有问题。

最近发生的情况是、COMPSTS 值在 ADC 上没有任何输入的情况下自行开始切换、特别是在低温(处理器上的温度低于~15°C)下加电时。 即使器件恢复到环境温度、COMPSTS 值也将继续以这种方式运行、并且只会在处理器完整下电上电后解析自身。 我们有来自同一批处理/生产日期代码的多个处理器、每个处理器要么没有问题、要么至少有 1 个比较器出现问题。 我们在比较器 2、3 和 5 上特别指出了这一点。

我们已验证未对器件固件进行任何修改、并验证在调试会话期间进入此状态并切换受影响比较器的 COMPACE 寄存器也不能解决该问题。 到目前为止、我们的解决方案只能进行完整的下电上电

我发现、在其余配置后、只需将 COMPACE 寄存器设置为的位置移动即可解决这个问题。 不过、我很难找到任何资料、说明为何会出现这种情况

这是相关比较器的配置:

    Cmpss5Regs.COMPCTL.bit.COMPDACE = 1;        // Power up Comparator locally
    Cmpss5Regs.COMPDACCTL.bit.DACSOURCE = 0;    // DACsrc; // 0 - DACHVALA is updated from DACHVALS; // 1 - Internal ramp for slope compensation

    Cmpss5Regs.COMPCTL.bit.ASYNCHEN = 1;        // 1 Asynchronous comparator output feeds into OR gate with latched digital filter output
    Cmpss5Regs.COMPDACCTL.bit.RAMPSOURCE = 7;   // Determines which voltage EPWMSYNCPER signal is used (n-1 -> EPWMnSYNCPER)

    Cmpss5Regs.COMPCTL.bit.COMPHINV = 0;        // Comparator Output passed
    Cmpss5Regs.COMPHYSCTL.bit.COMPHYS = 2;      // 3x typical hysteresis
    Cmpss5Regs.DACHVALS.bit.DACVAL = 2500;      // 
    Cmpss5Regs.COMPDACCTL.bit.SWLOADSEL = 0;    // 0 DACxVALA is updated from DACxVALS on SYSCLK
    Cmpss5Regs.COMPDACCTL.bit.SELREF = 0;       // 0 VDDA is the voltage reference for the DAC

    Cmpss5Regs.CTRIPHFILCTL.bit.THRESH = 3;
    Cmpss5Regs.CTRIPHFILCTL.bit.SAMPWIN = 5;

    EPwm8Regs.HRPCTL.bit.PWMSYNCSEL = 1;       // PWM SYNC generated at CTR = ZRO for synchronizing internal ramp

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

    您好、

    向 CMPSS 块所有者分配延迟的道歉。  

    BR、

    Nilesh  

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

    尊敬的 Thomas:

    感谢详细的问题陈述。 您是否有设备的预计使用寿命? 我想知道、在您当前的代码中、是否有任何校准例程在启动时或整个操作过程中执行?  老化和温度都可能对器件产生影响、尤其是对于较敏感的模拟部分、这些模拟部分通常会在芯片测试期间进行修整并加以考虑。 包含定期校准例程也可能会有影响、因为您说这种情况在器件达到较低温度后发生、仅在电源复位后停止

    此致、

    彼得

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

    您好、Peter:

    我们在首次使用带有生产日期代码的器件时会遇到此问题 41. 33 。 其他经测试的生产日期代码 ( 1C、38、31 ) 不要出现问题。 在冷启动导通期间、在固件中配置比较器后会立即发生问题。  调整跳变阈值没有影响、因此不清楚校准例程是否会产生任何影响。 目前、我们不会为受影响的比较器运行校准例程。

    自我初始发布以来的主要发现:

    • 比较器配置后该问题立即出现;更改跳变阈值没有影响。
    • 受影响和不受影响的器件之间的初始化时序相同。
    • 传输到已知良好的 PCB 时、处理器出现问题。
    • 在启用和配置比较器之间引入~400ns 延迟(如我的原始代码片段,第 1 行和第 2 行)可消除该问题、但根本原因未知、这不能视为长期解决方案。

    根据勘误表(表 5-54)、更改了比较器上电时间规格。 您能否确认此更改何时引入、以及它是否可能导致我们看到的冷启动行为?

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

    尊敬的 Thomas:

    在启用和配置比较器之间引入~400ns 延迟(如我的原始代码片段中的第 1 行和第 2 行)可消除该问题、但根本原因未知、这不能视为长期解决方案。

    这是我要强调的重要一点。 这里为 CMPSS DAC 推荐了启动时间、为了在自动生成的代码中进行良好测量、我们启用了 500us 启动延迟。 请参阅下面的代码片段

    void myCMPSS0_init(){
        //
        // Sets the configuration for the high comparator.
        //
        CMPSS_configHighComparator(myCMPSS0_BASE,(CMPSS_INSRC_DAC));
        //
        // Sets the configuration for the low comparator.
        //
        CMPSS_configLowComparator(myCMPSS0_BASE,(CMPSS_INSRC_DAC));
        //
        // Sets the configuration for the internal comparator DACs.
        //
        CMPSS_configDAC(myCMPSS0_BASE,(CMPSS_DACVAL_SYSCLK | CMPSS_DACREF_VDDA | CMPSS_DACSRC_SHDW));
        //
        // Sets the value of the internal DAC of the high comparator.
        //
        CMPSS_setDACValueHigh(myCMPSS0_BASE,0U);
        //
        // Sets the value of the internal DAC of the low comparator.
        //
        CMPSS_setDACValueLow(myCMPSS0_BASE,0U);
        //
        //  Configures the digital filter of the high comparator.
        //
        CMPSS_configFilterHigh(myCMPSS0_BASE, 0U, 1U, 1U);
        //
        // Configures the digital filter of the low comparator.
        //
        CMPSS_configFilterLow(myCMPSS0_BASE, 0U, 1U, 1U);
        //
        // Sets the output signal configuration for the high comparator.
        //
        CMPSS_configOutputsHigh(myCMPSS0_BASE,(CMPSS_TRIPOUT_ASYNC_COMP | CMPSS_TRIP_ASYNC_COMP));
        //
        // Sets the output signal configuration for the low comparator.
        //
        CMPSS_configOutputsLow(myCMPSS0_BASE,(CMPSS_TRIPOUT_ASYNC_COMP | CMPSS_TRIP_ASYNC_COMP));
        //
        // Sets the comparator hysteresis settings.
        //
        CMPSS_setHysteresis(myCMPSS0_BASE,0U);
        //
        // Configures the comparator subsystem's ramp generator.
        //
        CMPSS_configRamp(myCMPSS0_BASE,0U,0U,0U,1U,true);
        //
        // Disables reset of HIGH comparator digital filter output latch on PWMSYNC
        //
        CMPSS_disableLatchResetOnPWMSYNCHigh(myCMPSS0_BASE);
        //
        // Disables reset of LOW comparator digital filter output latch on PWMSYNC
        //
        CMPSS_disableLatchResetOnPWMSYNCLow(myCMPSS0_BASE);
        //
        // Configures whether or not the digital filter latches are reset by PWMSYNC
        //
        CMPSS_configLatchOnPWMSYNC(myCMPSS0_BASE,false,false);
        //
        // Enables the CMPSS module.
        //
        CMPSS_enableModule(myCMPSS0_BASE);
        //
        // Delay for CMPSS DAC to power up.
        //
        DEVICE_DELAY_US(500);
    }

    如果您按照示例中配置 CMPSS 模块的顺序(主要是在配置结束时启用和延迟)、这是否也可以消除该问题?

    如果可以查看器件的修订 ID 并确保它们都是相同的器件修订版本、我也很感兴趣

    此致、

    彼得

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

    您好、Peter:

    我上一篇帖子的几处更正/说明:

    • 仅在生产日期代码中发现了该问题 41. 器件(如前所述,不是 33 个)。 我们目前有两个受影响的商品、带有以下标记: 3LC-41A4Y7W 3LC-41A731W
    • 我参考的表来自数据表 SPRS881K 部分 10.2.1.1. 、其中比较器 DAC 上电时间指定为 500µs。 您能否确认此值与之前的 10µs 规格相比何时发生了变化?

    根据您的建议、将 CMPSS 启用调用移动到配置序列末尾确实可以消除问题、即使不添加 500µs 延迟也是如此。 不过、仍不清楚具体是什么导致 COMPSTS 寄存器意外切换、以及为什么以前没有看到这种情况。

    进一步的测试表明、当 COMPHOUT 多路复用到 GPIO 时、在故障条件下不会切换。 这指向与驱动 COMPSTS 的数字滤波器相关的问题。

    我们通过将 CTRIPOUTHSEL 设置为 2(数字滤波器的输出)而不是 0(原始比较器输出)来确认这一点。 使用示波器在 GPIO 上测量时、数字滤波器输出在故障条件下会以~100MHz 振荡。

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

    尊敬的 Thomas:

    我需要跟踪我们的一些库存专家,因为很难仅通过生产日期代码了解 — 这些专家可能在 2 个不同的 FAB 上生成、这可能与行为差异有关。 我假设修订 ID 相同、但最好仔细检查。

    我们的指导通常是在启用外设之前对其进行编程、我想启用会导致一些边沿条件、即在更改一些必要的寄存器时设置 CMPSS、并导致模块出现问题

    我查看了文献错误存储库、没有看到有记录的 10 -> 500 US 的任何报告、因此我无法指出记录的具体日期。

    此致、

    彼得

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

    您好、Peter:

    感谢您的澄清。 我们也将继续缩小我们这边的生产日期代码信息的范围。

    我们想确认的一些关于 500us 上电时间的项目:

    • 如果在比较器启用时未观察到此延迟、是否只会在初始 500us 窗口内出现任何由此产生的不良行为?
    • 违反这一要求是否会导致模块在启动期之后出现此故障状态?

    我们目前对该规格的理解是、500us 周期可确保上电窗口期间的输出稳定、在此之后、无论初始化顺序如何、比较器/DAC 都应正常工作。 您能否确认正确无误?

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

    尊敬的 Thomas:

    感谢您的耐心。 请参阅以下对您的问题的回答

    如果在比较器启用时未观察到此延迟、是否只会在初始 500us 窗口内出现任何产生的不良行为?

    指导可能源于这样一个事实:CMPSS 主要用于安全目的、以避免出现过流情况、因此在 CMPSS “准备就绪“之前尝试使用 CMPSS 可能会导致系统故障、我认为不良行为仅限于此启动周期。

    违反此要求会导致模块在启动期之后出现此故障状态吗?

    我无法确定这一点、因为我无法找到有关启动窗口时间增加原因的情况的任何详细信息。 这可能基于您在原始调查结果中详细介绍的情况、在 CMPSS 的配置阶段使用任何 CMPSS 都可能会对比较器模块的未来行为产生影响。 我认为在启动阶段、由于操作过程中没有发生寄存器访问、因此这种风险不太可能发生。

    此致、

    彼得

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

    您好、Peter:

    感谢您对此的持续支持。 我们还收集了一些其他数据点、这些数据可能有助于:

    • 我们现在已确认带有标记的器件出现故障 3LC-427FYW 3LC-41A4YCW 、这表明问题可能与晶圆制造代码有关 ( 3L )。

    • 我们已验证器件上没有带有以下标记的问题:

      • 7美元C-31AXGVW

      • YFC-8BA4DNW

      • YFC-38ASFHW

    我们使用晶圆制造代码隔离了四个器件批次 3L 不是这些批次中的每台设备都出现故障。 由于观察到每个器件的故障模式是一致的、因此可以放心地假设这些批次中的屏蔽通过器件在生产中可靠使用吗?

    最后、因为 10µs→500µs 错误存储库中未跟踪更改、TI 能否确认是否所有器件批次都始终需要~500µs、并且 10µs 值只是文档错误?

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

    您好:  

    专家将离开办公室直至 9/2/25。  

    此致、

    Carlos

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

    尊敬的 Thomas:

    [报价 userid=“655134" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1541977/tms320f28379s-tms320f28379s-comparator-toggling-without-input-at-cold-temperatures/5996356

    由于观察到每个器件的故障模式是一致的、因此可以放心地假设这些批次中的屏蔽通过器件在生产中可靠使用吗?

    [/报价]

    根据您的测试、该行为似乎与器件的制造有关。 我无法确定该器件、因为其他因素(如电路板制造,亚稳态和老化)可能会影响该器件。  

    最后、从开始 10µs→500µs 错误存储库中未跟踪更改、TI 能否确认是否所有器件批次都始终需要~500µs、并且 10µs 值只是文档错误?

    我认为这样说是安全的、因为我们所有器件的所有代码生成工具都使用此 缓冲区持续时间

    此致、

    彼得

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

    您好、Peter:

    感谢您对此的帮助。

    接下来、我们将确保遵循建议的配置顺序。 为了清楚地实现、是否需要为每个比较器单独应用 500µs 延迟(例如,为 CMPSS1 配置→Ω ENABLE→WAIT 500µs、然后对 CMPSS2 重复等)、或者是否足以依次配置和启用所有比较器、然后在最后应用单个 500µs 延迟?

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

    尊敬的 Thomas:

    理想情况下、500us 延迟应该会在启用 CMPSS 模块后立即发生、但只需一次性完成、即可允许所有 CMPSS DAC 上电。 因此、最佳方法是配置每个 CMPSS 模块。 然后、在配置所有 CMPSS 模块后、随后依次启用 CMPSS 模块。 然后、您可以在这些启用呼叫之后应用单个 500us 延迟。

    3L 晶圆厂代码对应于我们已开始生产 F28379S 器件的一家较新的晶圆厂、因此我 正在与我们的质量团队合作

    此致、

    彼得

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

    您好、Peter:

    感谢您的澄清。 至于我们当前的项目、我很好奇地想看看晶圆代码与我们看到的问题之间是否存在关联。

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

    尊敬的 Thomas:

    我们可能在内部对此进行了调查、可能已要求您为受影响的器件发出故障分析申请、以便我们可以对这些器件进行一些分析。 谢谢!

    此致、

    彼得