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:CMPSS 偏移

Guru**** 2540720 points
Other Parts Discussed in Thread: TMS320F28379S

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/906414/tms320f28379s-cmpss-offset

器件型号:TMS320F28379S

您好!

我们将 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;

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

    您好 Mojo、

    您能不能澄清几个问题。 我注意到您在低比较器上启用了反相、并且您也在使用迟滞、因此我需要您澄清您所期望的逻辑。

    您是否希望低电平比较器在正输入电压超过 DACL 时变为高电平、反之亦然?

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

    您好!

    我们希望进行以下访问:

    -输入电压高于 DACH。

    -输入电压低于 DACL

    这就是反相的原因。

    我们实际上采用了从 IDDK_PM_Servo_F2837x 示例设置 CMPSS 的示例(对 DACL 寄存器进行了一些修复)。

    似乎存在一些偏移、但这可能是迟滞? 但数字(~200点)似乎太大。

    谢谢!

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

    Mojo、

    您会看到 DACL 的增益和偏移误差组合。 迟滞会从这些值中减去、因此您看到的结果非常大。 几个问题:

    1.这种行为是针对所有 CMPSS、还是仅针对一个 CMPSS?

    2.禁用迟滞时会发生什么情况、您是否仍然看到这个较大的 Δ 值?

    CMPSS 需要时间上电。 写入此寄存器"COMPCTL.bit.COMPDACE = 1"后、您的代码是否在某个位置存在延迟?

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

    你(们)好、Frank

    这在所有 CMPSS 上都可见。 但是、它们的配置都是相同的。。。

    2.将进行检查和更新。

    3、是的、我们有延迟。 但我们还会检查 JTAG、以便在长时间上电后直接写入寄存器...因此我在这里不会有任何问题。

    非常感谢、很快就会更新

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

    您好!

    我们找到了问题的根源。

    我们将 Vrefhi=3V 用于 ADC。

    但是、比较器的 VDDA 为3.3V。

    我们的信号在硬件中偏移约为1.5V、而不是1.65V -这就是我们看到的偏移。

    我们还需要在设置比较值时考虑增益3.3/3。

    这有道理吗?

    数据表最好强调一下这一点...

    谢谢!

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

    您好 Mojo、

    很高兴您的问题得到解决、是的、这是有道理的。 如果您同时使用 ADC 和 COMPDAC、则需要缩放其中一个使用不同基准电压的值。