您好!
我们将 TMS320F28379S 用于电机控制应用。
电流传感器与电机绕组同相。
我们已配置 CMPSS 和 ADC 对通道进行采样。
在 CCS 窗口中、我们可以看到 ADCRESULT 上的样本在中点附近稳定、即2040-2050。
我们尝试将 CMPSS 设置为以高值和低值进行跳闸、并为 PWM 设置 TZ。
我们已设置 DACLVALS = 1900和 DACHVALS = 2100。
但是、低比较会触发 TZ。
我们发现、我们需要降低到1800左右、以便不会触发低 COMP。
与进行高对比后、可以在不获得任何触发的情况下下降到1900左右。
比较输入上似乎存在大约200点的偏移。
有什么想法呢?
在 ADC 上、我们不使用任何 PPB 来偏移测量值。
谢谢!!
这是 CMPSS init:
EALLOW;
//启用 CMPSS
V->COMPCTL.bit.COMPDACE = 1;
//NEG 信号来自低电平比较器的 DAC
V->COMPCTL.bit.COMPLSOURCE = NEGIN_DAC;
//NEG 信号来自高比较器的 DAC
V->COMPCTL.bit.COMPHSOURCE = NEGIN_DAC;
//使用 VDDA 作为比较器 DAC 的基准
V->COMPDACCTL.bit.SELREF =参考 VDDA;
//将 DAC 设置为 H~75%和 L ~25%值
V->DACHVALS.bit.DACVAL =高电平;
V->DACLVALS 位 DACVAL =低电平;
//比较器输出"不"反相、以实现高比较事件
V->COMPCTL.bit.COMPHINV = 0;
//比较器输出针对低比较事件被反转
V->COMPCTL.bit.COMPLINV = 1;
//配置数字滤波器-高电平
//最大 CLKPRESCALE 值可在两次采样之间提供最多的时间
V->CTRIPHFILCLKCTL.bit.CLKPRESCALE = clkPrescale; //30; //最大计数为1023 */
//最大 SAMPWIN 值可提供最大数量的样本
V->CTRIPHFILCTL.bit.SAMPWIN = sampwin; //0x1F;
//最大阈值要求整个窗口的静态值
// THRESH 应该大于 SAMPWIN 的一半
V->CTRIPHFILCTL.bit.THRESH = THRESH; //0x1F;
//复位滤波器逻辑&开始滤波
V->CTRIPHFILCTL.bit.FILINIT = 1;
//配置数字滤波器-低
//最大 CLKPRESCALE 值可在两次采样之间提供最多的时间
V->CTRIPLFILCLKCTL.bit.CLKPRESCALE = clkPrescale; //30; //最大计数1023 */
//最大 SAMPWIN 值可提供最大数量的样本
V->CTRIPLFILCTL.bit.SAMPWIN = sampwin; //0x1F;
//最大阈值要求整个窗口的静态值
// THRESH 应该大于 SAMPWIN 的一半
V->CTRIPLFILCTL.bit.THRESH = THRESH; //0x1F;
//复位滤波器逻辑&开始滤波
V->CTRIPLFILCTL.bit.FILINIT = 1;
//配置 CTRIPOUT 路径
//数字滤波器高输出馈送 CTRIPH 和 CTRIPOUTH
V->COMPCTL.bit.CTRIPHSEL = CTRIP_FILTER;
V->COMPCTL.bit.CTRIPOUTHSEL = CTROK_FILTER;
//数字滤波器低输出馈送 CTRIPH 和 CTRIPOUTH
V->COMPCTL.bit.CTRIPLSEL = CTRIP_FILTER;
V->COMPCTL.bit.CTRIPOUTLSEL = CTRIP_FILTER;
//确保异步路径比较高事件和低事件
//不会进入带有锁存数字滤波器输出的或门
V->COMPCTL.bit.ASINCHEN = 0;
V->COMPCTL.bit.ASINCLEN = 0;
//比较器迟滞控制,设置为2个典型值
V->COMPHYSCTL.bit.COMPHYS =4;
// DAC 值在 sysclock 上更新
V->COMPDACCTL.BIT.SWLOADSEL = 0;
//斜坡被绕过
V->COMPDACCTL.bit.DACSOURCE = 0;
//清除锁存的比较器事件
V->COMPSTSCLR.bit.HLATCHCLR = 1;
V->COMPSTSCLR.bit.LLATCHCLR = 1;
EDIS;