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.

[参考译文] 编译器/LAUNCHXL-F28377S:有关 F28377S CMPSS CMPIN1P 引脚的帮助

Guru**** 2609945 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/678185/compiler-launchxl-f28377s-help-with-f28377s-cmpss-cmpin1p-pin

器件型号:LAUNCHXL-F28377S

工具/软件:TI C/C++编译器

尊敬的社区:

我将使用 F28377S launchpad 为三相有源功率滤波器实现数字控制器。  

首先、我使用10个 ADCIN 引脚来感测所需的电流和电压、并在 DSP 中执行基准电流计算。 然后、我将考虑使用 CMPSS 构建迟滞电流控制器。 我基本上已经弄清楚了如何设置 CMPSS、 如何使用数字比较来生成 DCAEVT2和 DCBEVT2、以及动作限定器事件 T1将从 DCAEVT2获得、T2源从 DCBEVT2获得。 最后、生成 EPWM 信号以触发 IGBT。

对于 CMPSS 正输入(CMPIN1P)、我想使用在 DSP 内部计算得出的基准电流来连接 CMPIN1P。

我的问题是:

1) 1) CMPSS 正输入 CMPIN1P 必须是模拟信号?

2) 2)我是否必须使用 DAC 将基准电流转换为模拟值、然后将其连接 到外部的 CMPIN1P 引脚?

3) 3)另一个问题是我正在使用10个 ADCIN。 F28377S 上总共有14个 ADCin 引脚。 在本例中、我仍将使用 ADCINA2、ADCINA4和 ADCINB2作为 CMPSS 输入。 DAC 引脚也会与 CMPSS 输入引脚发生冲突。 这是否意味着我的应用无法在 F28377S 上实现?  

非常感谢您能抽出时间查看我的问题。 谢谢!

 

此致、

 

暂停

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

    您好、Hang、

    1) 1) CMPSS 正输入 CMPIN1P 必须是模拟信号?

    [FA]是的、它必须由外部提供。

    2) 2)我是否必须使用 DAC 将基准电流转换为模拟值、然后将其连接 到外部的 CMPIN1P 引脚?

    [FA]是的、这是可能的。 您可以使用缓冲 DAC 从外部驱动 CMPIN1P。

    3) 3)另一个问题是我正在使用10个 ADCIN。 F28377S 上总共有14个 ADCin 引脚。 在本例中、我仍将使用 ADCINA2、ADCINA4和 ADCINB2作为 CMPSS 输入。 DAC 引脚也会与 CMPSS 输入引脚发生冲突。 这是否意味着我的应用无法在 F28377S 上实现?

    [FA]缓冲 DAC 引脚与 CMPSS 引脚不冲突。

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

    您好、Frank、

    非常感谢 您的明确回答。

    我还有另一个问题 希望您能提供帮助。

    对于 CMPSS 的内部 DAC、其行为是否与缓冲 DAC 相同? 例如、如果我已经在 DSP 中计算了一个名为"Result1"的结果、我可以写入"dacaRegs.DACVALS.all = Result1;"以使 daca 等于 Result1。 我可以对 CMPSS 的内部 DAC 执行同样的操作吗? 比如、"cmps1Regs.DACHVALS.bit.DACVAL = Result1"? 以便 CMPSS 的负输入可以读取 Result1。

    此致、

    暂停

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

    是的、COMPDAC (CMPSS 的内部 DAC)的行为与缓冲 DAC 相同。 它们都是12位。 您的上述描述应该起作用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很好。

    谢谢 agian!

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

    再次感谢您以前的帮助。

    对于我的项目的更新:只有当负输入(内部 DAC)为固定值(例如2048)时、CMPSS 才会成功触发 ePWM。 但是、在我的应用中、我将需要来自 DSP 中断内部计算的 CMPSS 负输入(基准电流)。 它是一个根据 ADC 输入进行计算的变量。 当 CMPSS 的负输入来自此类源时、它将停止工作。 那么、这是否意味着 CMPSS 的负输入只能是一个固定值?
    我真的很困惑、希望您能给您一个机会。 如果您需要更多详细信息、请告诉我。 提前感谢。

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

    您好、Hang、

    对于 CMPSS、通常其中一个输入被扫描、另一个输入保持静止。 根据您的描述、CMPIN1P 是固定的、正在扫描由 DACH 提供的 CMPIN1N。 这是您的应用的正确描述吗?

    ACH 的输出将是 DACHVALA 中的任何值。 假设您已设置为立即加载(SWLOADSEL=0) ACH、任何对 DACHVALS 的写入都将立即加载到 DACHVALA 中。 您是否已验证您要写入 DACHVALS 的值是否符合您的期望?

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

    您好、Frank、

    感谢您的快速回复。

     

    几分钟前、我将 CMPSS 初始化代码放入中断中、然后 CMPSS 开始工作。 之前、我的 CMPSS 初始化代码位于主循环中。 现在、每次中断计算出新结果后、中断都会立即加载到 CMPSS 中。 我是对的吗?

    对于第二个问题:我要写入 DACHVALS 的值来自一个外部信号、该信号由 ADC 感测、并由 cmps1Regs.DACHVALS bit.DACVAL = value 赋予 DACHVALS。 是的、这正是我所期望的。 但输出 ePWM 波看起来真的很奇怪。 我使用三个 CMPSS、将实际电流与计算得出的上限(基准电流+阈值)和下限(基准电流-阈值)进行比较。 当实际电流低于下限时、T2强制 ePWM 为高电平;当实际电流高于上限时、T1强制 ePWM 为低电平。 下面是由三个 CMPSS 触发的 ePWM 信号。 当我配置 ePWM 时、我没有使用死区、因为我不确定如何初始化它、这是一个大问题吗?  

    此致、

     

    暂停

     

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

    CMPSS 初始化代码不应处于中断或循环中、因为初始化代码只应在器件启动后运行一次。 在本例中、我可能会误解您的意思、即初始化。

    CMPSS 是它自己的模块、具有进入 ePWM 的输出信号。 尽管它们被设计成可以很好地协同工作、但在调试时、通常最好分别查看它们。 我的意思是、进入 ePWM 的 CMPSS 输出也直接输出在 GPIO 上。 您能否查看该信号以了解它是否符合预期?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我同意您的观点、即 CMPSS 初始化代码不应出现在中断中。 但在我的测试中、当 CMPSS 代码位于主程序中时、CMPSS 的内部 DAC 将无法读取我最近计算的变量。
    然后、如果在主程序中调用 CMPSS 初始化、则内部 DAC 的输入由"value"给出。 但是、在每次中断后、我将计算一个需要提供给内部 DAC 的新"值"。 此变量是否会自动更新? 或者、也许我可以要求命令"cmps1Regs.DACHVALS.bit.DACVAL = value;"在我的 CMPSS 初始化中。 如果它只运行一次、DACHVALS 能否从每个中断的计算中获得新的"值"?
    很抱歉、我的解释不好。 希望您能理解。

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

    挂起、

    我将初始化解释为启用 CMPSS 并在启动后首次进行配置。 在首次配置完成为初始化后、我不考虑更新 COMPDAC。 是的、要更新 COMPDAC、您必须对其进行写入、因此在您的情况下、在中断中更新 COMPDAC 是合理的。

    我认为您应该通读 CMPSS 一章、以便您更好地了解它的工作原理。 这不是一个冗长的章节。 正如我在之前的响应中提到的、尝试直接查看 CMPSS 输出、看看它是否符合您的期望。

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

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

    尊敬的 Frank:

    感谢您的提问。

    我将代码"cmps1Regs.DACHVALS .bit.DACVAL = ICA_COMP_HI;"移动 到我的中断中、并将 void InitCMPSS (void)移动到 main 中、它现在起作用。 我是说 CMPSS 器件现在在工作。 再次感谢您的帮助。 现在、我要做的是调整控制器以获得我所需的结果。  

     

    此致、  

    暂停

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

    很高兴听到它正在工作! 如果遇到其他问题、请务必告知我们。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    需要将内部 DAC 置于中断中以进行实时修改。 您可以查看该示例的 HVDMC_Protection ()函数原型。 这是一个过流保护代码、使用比较器产生跳闸并通过 PWM。 它与您正在调试的迟滞电流控制器大致相同。 您可以查看一下。