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.

[参考译文] TMS320F28027:对 PWM 寄存器编程时遇到问题

Guru**** 2563960 points
Other Parts Discussed in Thread: C2000WARE, DRV8353

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1035554/tms320f28027-trouble-programming-the-pwm-registers

器件型号:TMS320F28027
主题中讨论的其他器件:C2000WAREDRV8353

您好!

我正在尝试在2802中设置 PWM 寄存器、但它们仍保持复位为0。 如果我在调试模式下使用 CCS 手动尝试此操作、它们仍会恢复为0。 与 ADC 寄存器类似。

我可以使用相同的方法更改 CPU 内核寄存器和 GPIO 寄存器、这些值不变。 可以有人帮助吗?

oid init3ph(){
        volatile Uint32 *pwm1BaseAddr;
        volatile Uint32 *pwm2BaseAddr;
        volatile Uint32 *pwm3BaseAddr;
       // volatile Uint32 *pwm4BaseAddr;
        Uint16 regOffset;
        Uint16 reg_data;
        pwm1BaseAddr = (Uint32 *)0x6800;
        pwm2BaseAddr = (Uint32 *)0x6840;
        pwm3BaseAddr = (Uint32 *)0x6880;
      //  pwm4BaseAddr = (Uint32 *)0x68c0;

        EALLOW;
        // setup code goes here..
        //TBCTL
        regOffset = 0x00;
        reg_data = 0x0;
        pwm1BaseAddr[regOffset] = reg_data;
        pwm2BaseAddr[regOffset] = reg_data;
        pwm3BaseAddr[regOffset] = reg_data;
        //TBSTS tb Status
        regOffset = 0x01;
        reg_data = 0;
        pwm1BaseAddr[regOffset] = reg_data;
        pwm2BaseAddr[regOffset] = reg_data;
        pwm3BaseAddr[regOffset] = reg_data;
        //TBHSHR Extension for HRPWM Phase Register
        regOffset = 0x02;
        //TBPHS Time base Phase Register
        regOffset = 0x03;
        reg_data = 0;
        pwm1BaseAddr[regOffset] = reg_data;
        pwm2BaseAddr[regOffset] = 360;
        pwm3BaseAddr[regOffset] = 720;
        //TBCTR Time-Base Counter Register
        //TBPRD Time-Base Period Register
        regOffset = 0x03;
        reg_data = 1080;
        pwm1BaseAddr[regOffset] = reg_data;
        pwm2BaseAddr[regOffset] = reg_data;
        pwm3BaseAddr[regOffset] = reg_data;

}

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

    您好!

    您能否重新检查您所做的配置?

    我在您的代码中看到如下流程:TBCTL - 0、TBSTS - 0、 TBPHS -更新、TBPRD -更新  

    如何配置 PWM 占空比? 通过"在调试模式下使用 CCS 随意尝试此操作"、您是否意味着您尝试在 CCS 中更新监视变量?

    谢谢、

    Aditya

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

    我正在使用280027技术参考手册中的示例代码、尝试在 GPIO 0 -5上生成一个三相序列。

    代码会编译并运行、但代码不会更改 PWM 寄存器。 尝试使用寄存器查看器或 CCS 中的存储器查看器手动更改它们也不起作用。 它不仅是 PWM 寄存器、还包括 ADC 无法响应。 几乎就像处理器的这些部分被关闭一样,但技术手册中没有任何内容可以说这是缺省状态....

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

    这些配置是否是您在 PWM 方面所做的唯一配置? 您可以查看位于的 C2000Ware 中提供的 ePWM 参考示例 。 您可以从这些示例中获取代码的初始化部分。

    Aditya

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

    否:问题的关键是我无法从任何 PWM 的 ADC 和其他外设中编程和读回寄存器值。 我可以成功地对 GPIO 进行编程。

    如果我尝试在调试模式下使用 CCS 直接编辑寄存器(GPIO 和处理器内核除外)、则也不会发生任何情况。   该处理器似乎工作正常、因为它与 Instaspin 程序配合使用。 我需要知道的是:这是 CCS 的一个问题、还是在对这些外设进行编程之前、我缺少启用这些外设的一些东西? 到目前为止、问题似乎出在 CCS -因为为 F28002x 处理器提供的文件中存在许多其他错误。

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

    Mike、

    感谢您的澄清。 我可以建议一些方法来解决这个问题。

    1.您使用的是哪个版本的 CCS? (虽然 CCS 版本不太可能出现问题)。 只要您有 C2000支持可用、就无需在 CCS 中启用任何内容来运行程序(CCS 中已经提供了支持、否则构建代码也会是一个问题)。

    2.您可以使用参考示例并尝试在设置中运行该示例。 这些示例经过验证、应在硬件上按预期工作。

    此外、您已经标记了器件'F28027'的问题、并且提到了'f28002x'的文件。 您能否验证您正在使用的器件? 如果您仔细观察、器件编号中会有一个额外的零! 我希望这不是问题。  

    Aditya

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

    1)

    Code Composer Studio
    版本:10.4.0.00006

    操作系统:Linux、v.4.19.0-16-AMD64、x86_64 / gtk 3.24.5
    Java 版本:1.8.0_112

    2) 2)我已经为 F2802x 尝试了三个不同的示例、其中没有一个示例是无故障编译的、Lab05、lab01和 GPIO_ex1 =我最终达到了编译、加载和运行的阶段。 但是、ti 对 GPIO 进行编程、但随后处于无限循环中、等待已禁用的计时器中断。

    3) 3)实际器件是作为 DRV8353评估套件的一部分提供的 F28027f。 我对我花的时间不是很远感到失望。

    Mike。

    最后取得一些成功:

    我设法让 ADC 温度传感器示例加载并运行-现在还可以编辑 ADC 和 PWM 寄存器、这是我以前无法做到的-我认为2802x 和28002x 器件型号之间可能存在混淆!!

    Mike。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="496330" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1035554/tms320f28027-trouble-programming-the-pwm-registers/3833287 #3833287"]我设法获取 ADC 温度传感器示例以加载并运行-现在还可以编辑 ADC 和 PWM 寄存器、这是我以前无法完成的-我认为2802x 和28002x 器件型号之间可能存在混淆!!

    28002x 是另一类器件、其驱动程序显然无法在 F2802x 上运行。 很高兴您解决了这个问题。  

    谢谢、

    Aditya