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.

[参考译文] TMDSRSLVR:TMDSRSLVR 引文生成软件查询

Guru**** 2582405 points
Other Parts Discussed in Thread: CONTROLSUITE, TMS320F28379D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/732736/tmdsrslvr-tmdsrslvr-exitation-generation-sw-enquiry

器件型号:TMDSRSLVR
Thread 中讨论的其他部件:TMS320F28379DcontrolSUITE

您好!

我正在为旋转变压器接口开发一些代码、并将 F28335 (controlSUITE\development_kits\TMDSRSLVR_v1.0\Resolver_F28335)的旋转变压器代码移植到 TMS320F28379D。

我相信我理解了大部分代码、但有一个部分对我来说非常模糊:

PWM 的定义如下:

ePWM_1ch_CNF (&EPwm1Regs、TIMECNT_6p25uS、1、0); // 160KHz 时基生成
ePWM_1ch_CNF (&EPwm2Regs、sine_carrier、1、0); //正弦载波生成

"sine_carrier"也定义为:

#define SINE CARRIER (250*2.5)/* 2.5用于 Delfino,1用于 Piccolo */ 

现在 、EPwm1的初始化显然需要160kHz 的频率、但我不会拆分250 (对于 piccolo 为625)。

如果要每6.25us (160kHz)更新一次正弦波、其载波是否也应具有相同的周期?

这些250和625数字基于什么?

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sine Carrier 是旋变传感器正弦波的调制器@240KHz。 基本而言、载波正弦波通过 EPWM2生成、并经过滤波以获得10kHz 正弦波。 对于具有150MHz 时钟的 Delfino、625的 PRD 产生240KHz、对于 Piccolo @60MHz、250的 PRD 产生相同的载波频率。 这是承运人的承运人!!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ramesh、

    感谢您的回答:我现在看到了如何获得 sine_carrier 周期。

    我之前没有找到任何有关 sine_carrier 240kHz 的参考(可能我跳过了一些文档、不确定);我将使用该值进行检查并查看信号。  

    我很快就会联系到一些结果

    谢谢、

    Marco

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    选择的载波调制器频率高于更新速率、以获得更清晰的正弦波载波。 使用 Piccolo @60MHz 时钟时、240KHz 载波似乎是限制。 对于 Delfino、可以更高一些、并表示同意。 事后看来、所有这些都可以简化为以采样率更新。 尝试一下、看看您是否看到任何优势、一个优势比另一个优势更重要。
    BTW、我没想到图中会出现扭结。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我的正弦周期设置错误、明天我会再试一次... (离开625、我想、我必须重新计算它、使其适用于我在28379D 上使用的100MHz 时钟)。

    你回答得太快了、我后来意识到了我的错误、并更改了我的评论。 我很快将发布具有适当频率的视频。

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

    您好!

    正如承诺的那样、我再次检查了所有内容、 为160kHz 和 sine_carrier 设置正确的时序。

    我有一个初始断续、其中我的所有波形都具有双倍频率:根据 我之前在 F28379D 中查看的 TI 教程、我使用的是符号"_LAUNCHXL_F28379D"。

    但是、今天我了解到这不适用于我、因为我没有 LaunchPad!

    我建议将其添加到课程手册的末尾:C28x_Microcontroller_ODW_2-0.pdf。 硬件差异已明确指定、 但没有提及这个小软件细节... 现在、我还了解了为何我无法进入实时调试!

    返回到分解器代码:现在一切都是应该的。

    在"附加波形的屏幕截图:d0在10kHz 时切换、d1是 ISR 的 BUSY 引脚、而 d2是正弦生成的 PWM 输出。

    黄色和蓝色是160和240kHz 载波的 DAC 输出。 注意:当它们处于平坦状态时、表示 CPU 处于繁忙状态、没有时间更新值、无需担心

    再次感谢!

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

    您好、再说一次、

    我从旋转变压器中得到了非常好的正弦、如图所示。

    但是、我有一个更激烈的问题:代码如何知道在何处计算角度?

    阅读、它说它执行16的抽取、以便仅读取峰值("controlSUITE\development_kits\TMDSRSLVR_v1.0\~docs\resoler_TO_digit_conv.pdf"、第2.3.2章

    我找到了

    #define ADC_SAMP_INST 875 /* ADC 采样即时设置*/ 

    为了指定采样应在160kHz 周期内发生的位置(我认为默认值875太高、应低于625)

    但是、需要计算角度16个采样时间点中的一个、具体是什么? ISR 例程在第4次采样上似乎需要更长时间、这与实际峰值相当远(我尚未连接 Momen 的 A2D)、它是否会根据测量结果自行调整?

    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您提到第4个 ISR 例程需要更长的时间、这就是现在发生抽取的地方。 您可能必须将抽取瞬间定位为与正弦/余弦反馈的峰值匹配、以获得更高的 SNR。 更改 ADC_SAMP_Instant 以满足您的需求。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ramesh、

    我尝试更改该参数、但它仅在一个周期内移动采样、

    实际上、它在这里使用:

    EPwm7Regs.CMPA.bit.CMPA = ADC_SAMP_INST;//用于 ADC SOC 生成 

    但是、从我的上一张图片中可以看到、采样需要在2.5个周期之前发生。 0.5系数很简单、但我指定在哪里读取2个完整周期?

    根据我的理解、触发抽取的是分解器.c 中的这部分代码:

    if (resoler_algo 浮动())
    {
    EPwm7Regs.ETCLR.bit.INT = 1; //清除 EPwm1 INT 标志
    } 

    因此、当它是正弦波的峰值时、例程"resoler_algo 浮点"应该返回1。

    没有相关文档、因为它是 TI 库的一部分;它会自动检测峰值吗? 正如我说过的、我很谨慎、我还没有将正弦/余弦信号插入 ADC。

    谢谢

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

    好的、ADC_SAMP_INST 在12.5us (或6.25us)窗口内设置采样瞬时。 当采样窗口接近正弦波的峰值时、应将其调整为与正弦峰值同步。

    还有另一个称为'rslvrIn.firLag'的变量、用于设置峰值应发生的窗口计数。 根据正弦表中正弦波反馈的相移量、您可以选择该数字。 如果正弦表有8个条目、则应在表的第3个条目输出后出现对应的90度标记、该标记的索引为2。 您可以尝试调整这两个值并进行评估。

    希望这对您有所帮助。

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

    非常好、谢谢!

    我现在了解它的工作原理。

    我还在"controlSUITE\libs\app_libs\motor_control\libs\resoler\V101\~docs"中找到了库的一些文档

    感谢您的支持、一切都很好!