工具/软件:
当我的另一个帖子被锁定时、我重新发布了此内容、抱歉我没有收到通知、我收到了回复、
我们的处理器有一个奇怪的问题,我想看看是否有任何指导为什么这可能发生. 一位客户发现、在温度低于–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