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.

[参考译文] TMS320F28022:只发送用于 C2000/AFE031应用手册、取代了 TMS320F28379

Guru**** 2391415 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/672604/tms320f28022-transmit-only-for-use-with-c2000-afe031-app-note-replaces-tms320f28379

器件型号:TMS320F28022

您好!

我们将移植本应用手册(http://www.ti.com/lit/an/sprac94b/sprac94b.pdf)的仅发送软件示例

这在 GPIO0和 GPIO2上使用2个 HRPWM 输出。

我们已经非常接近、但 HRPWM 输出仍然与所需的频率稍有不同。

  • GPIO0上的输出需要为131.25kHz、但我们得到的最接近结果是131.205kHz。 这是一个2.6ns 的变化或者大约14.5 HRPWM 周期。
  • 我们将  EPwm1Regs.TBPRD 寄存 器更改为1 +(CLK_FREQ / SPACE_FREQ)、使我们从17ns 关断至2.6ns 关断。

我们现在可以使用什么寄存器来微调最后的2.6ns 变化? 我们认为可能有一个可以改变的 HRPWM 寄存器。

谢谢!

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

    Nicholas、

    1. 您是否在运行 SFO? 如果是、频率如何? 这应消除因各种原因导致的一些小漂移。
    2. 您的 SYSCLK 输入的精确度如何? 您使用的是 XTAL 还是内部振荡器?  

    输出是否始终关闭 45Hz、或者有时会漂移 为50Hz 或40Hz?

    此致、
    Cody  

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

    您好、Cody、

    我正像这样运行 SFO、并且#ifdef 被打开或关闭:

    for (;;){
    
    #if 1
    status = SFO_INCOMPLETE;
    while (status=SFO_INCOMPLETE){//这应该自动设置 HRMSTEP,在 HRPWM_Config ()
    
    status = SFO ()之后执行此操作;
    如果(status =SFO_ERROR){
    
    error (错误);//如果发生错误并且 MEPSTEP/步进数数量超过了最大步长
    },SFO 函数返回2
    }
    
    状态= SFO_INCOMPLETE;//再次执行...
    
    nFinareFineMarkPeriod=(int)(mark_fraction *(float) MEP_SCALE_factor)<< 8;
    nCompareFineSpacePeriod=(int)(space_fraction *(float) MEP_SCALE_factor)<< 8;nCompareFineMarkDutyPeriod
    
    =(int)(mark_fraction *
    (float)<8)*(nCompet_scale dute_duty 系数)<8;nCompete_duty 系数
    
    
    (nCompete_dute_ty =(nCompete_duty)<8)*(nCompete_duty =(nCompete_tale duty)<_tage
    

    2802x 似乎默认为外部晶振、我已经使用和不使用此代码尝试将其切换到内部振荡器:

    CLK_Handle myClk = CLK_init ((void *) CLK_BASE_ADDR、sizeof (CLK_Obj));
    CLK_setOscSrc (myClk、CLK_OscSrc_Internal);
    

    我非常感谢您的任何见解。

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

    F2802x 上的输出漂移将在131.15kHz 至131.3kHz 之间、漂移可能需要半个小时。

    F2802x 的抖动比 F28379D 高出大约100倍。

    我看到的抖动量可能表明 HRPWM 有问题??

      F28379D 的 S-FSK 示例代码具有针对 CMPA、CMPB、TBPRD 和 TBPRDHR 的硬编码数字。  事实上、这些值不会将频率除数分数乘以 MEP_SCALE_FACTOR、而只是将频率除数分数乘以* 256即可得到 HRPWM 周期值。  在同一示例代码中、EPwm1Regs.HRMSTEP.bit.HRMSTEP 硬编码为55、初始化后似乎不调用 SFO。  然而、这是完美的。

    我已经尝试将频率除数乘以256、 并且在调用 SFO 后也尝试了这种方法:

    nCompareFineMarkPeriod =(int)(mark_fraction *(float) MEP_SCALL_factor)<< 8;

    哪种方法是正确的?  为什么 F28379D 乘以256并将 hrmstep 设置为55?

    我已经尝试将计数器模式设置为 TB_COUNT_updown、如果这样做、我的 PWM 周期定义为:

    #define MARK_PERIOD (((float) CLK_FREQ /(float) MARK_FREQ)/2)  

    如果我将其设置为 TB_COUNT_UP、则 TBPRD 定义为

    #define MARK_PERIOD (1 +((float) CLK_FREQ /(float) MARK_FREQ)  

    不知道为什么我在 F2802x 上看到的抖动多100倍。

    谢谢!

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

    在经过 SFO ()循环后、MEP_ScaleFactor 似乎在117和118之间抖动。  如果它与正确的频率保持同步、它看起来是正确的做法...

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

    我不建议持续运行 SFO。 它实际上只需要在初始化时运行、或者当系统中的条件发生变化(温度或电源电压)时运行。 如果您无法确定系统条件何时发生变化、则可以根据您对系统条件可能发生变化的预期速度将其设置为定期运行。 对于此调试、我们只需将其设置为在初始化时运行一次、我们就可以在使其他一切正常工作后进行定期集成。

    您能否发布您正在使用的代码? 您的帖子中有一些小数位和小数位、但我认为这将有助于您看到大画面。 具体而言、初始化例程和任何修改比较或周期值的控制循环。

    要回答您的一些问题:

    - MEP 换算系数乘以256、因为该值存储在寄存器的高8位中。 这只是在将其写入寄存器之前将其移动到位。
    -不要对 HRMSTEP 值进行硬编码。 使用 SFO。 我将着手进行更新。

    为您提供的更多问题:
    -您的 SYSCLK 频率是多少?
    - TBCLK 的频率是否= SYSCLK?

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

    您好、Kris、

    我非常感谢您的帮助。

    就 SFO()而言,如果我连续运行或在初始化时只运行一次,我会得到相同的结果。

    我需要进一步阐明  F28379D 的 S-FSK 示例代码、它不是将256乘以8向左移位。

    这样做的目的是:  

    EPwm1Regs.TBPRDHR =(243U << 8);

    在这种情况下、243由:(200MHz/131.25kHz/4 (预分频器))* 256给出。  (我希望它乘以 MEP_ScaleFactor)

    然后、这个243被向左移动8位以位于高字节中。

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

    感谢您提供更多信息。 我想亲自参与您的项目、以便我可以在本地运行项目、并尽快让您回到正轨。 您能否压缩 CCS 项目(确保包含所有参考源代码)并将其上传到此处?

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

    您好、KRIS、

    我正在尝试清除我的代码。  是否可以通过电子邮件向您发送副本?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当然、我刚刚向您发送了一封电子邮件、其中包含与您的 myTI 帐户关联的电子邮件地址。

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

    问题是否已解决? 如果是、请关闭此帖子。