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-F28P65X:添加器件支持模块并排除 device.c 后、PWM 赢了't Come live

Guru**** 2893150 points

Other Parts Discussed in Thread: SYSCONFIG, LAUNCHXL-F28P65X

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1639413/launchxl-f28p65x-after-adding-device-support-module-and-excluding-device-c-pwms-won-t-come-alive

器件型号: LAUNCHXL-F28P65X
主题中讨论的其他器件: SysConfig

我使用 SysConfig 创建了一个小型工程、以在 1MHz 上运行两个具有死区时间的 ePWM。 我可以成功编译工程、并在调试中运行工程、并在示波器上查看 PWM 波形。  

但是、我想编辑时钟树、将 EPWMCLKDIV 设置为 1(默认值为 2)、以提高死区时间控制的分辨率。 该工具指示我包含器件支持模块、因此我添加了该模块、并且(正如我在此处的论坛中看到的)从构建中排除了 device\device.c 文件。  

现在、当我编译工程并在调试中运行时、示波器上根本不会显示任何波形。 我不会收到任何错误、电路板上的 LED 亮起、但 ePWM 没有输出。 我已经尝试了包含和不包含“Use Standard Code Start Branch“选项的工程(使用时不包括 f28p65x_codestartbranch.asm 文件)、但仍然可以获得相同的结果。 image.png

如果删除了器件支持模块、重新启用 device.c 文件、然后重新编译/重新运行该工程、我的波形将返回。 我在做什么?

我的工程设置如下:

image.png

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

    您好:Mark、

    您可以在 syscfg 中添加器件支持、也可以将器件文件夹添加到您的项目。 现在、您的 device.h 已取消注释、这会造成问题。 如果要使用 ClockTree、请将器件支持保留在 Suscfg 中、并在工程工作区中完全删除/取消注释器件文件夹。

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

    我排除了完整的“设备“目录、但仍然没有出现任何问题。 我仍然可以构建没有错误的工程、但在调试运行工程时、ePWM 不会激活。

    和以前一样、如果我移除器件支持模块并重新包含器件目录、EPWM 输出将恢复。  

    排除设备目录的配置快照、以防我弄错了其他内容:

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

    我尝试过的其他一些事情:  

    • 使用 CPU1_LAUNCHXL_RAM 配置与 CPU1_RAM 配置进行构建、两者都可以在没有器件支持的情况下正常运行、但启用器件支持后不会显示任何输出。  
    • 确保在 SysConfig 中选择了 clocktree.h。

    我还在 empty_driverlib_main.c 中添加了一些基本代码、以使电路板上的 LED 闪烁、从而表明它正在通信并运行 main.c 文件。 供电  使用 加载器件支持时闪烁、即使 ePWM 静默也是如此。 因此、我在与器件通信或运行代码时没有遇到问题、但出于某种原因、我在 SysConfig 中定义的 PWM 没有出现。  

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

    您好、Mark、

    使用内部振荡器还是外部晶体? 硬件上使用的任何内容都需要在固件设置中匹配。 请检查您的时钟树以及时钟源设置为什么。

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

    根据我从 LaunchXL-F28P65X 原理图可以看出、X1 上有一个缓冲并馈入的 25MHz 时钟。 我一直使用的 SysConfig 时钟树似乎已正确配置为使用该时钟:



    缩放:

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

    大家好、您使用的是晶体还是内部振荡器? 由于现在您已在上述多路复用器中选择了 X1_XTAL 选项、但在下面的多路复用器中选择了 X1、这会产生不匹配。

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

    如果我弄错了、请纠正我的错误、但我认为 OSCCLKSRCSEL 多路复用器应从外部时钟源(X1_XTAL 设置)与内部时钟源 (INTOSC1/2) 中进行选择。 X1_XTAL 输入应用于 X1 或 XTAL 外部时钟输入。  

    根据 Launchpad 原理图、外部单端缓冲 25MHz 时钟在 X1 引脚上馈入、因此我在 XTAL_OR_X1 多路复用器上选择的是将 25MHz 时钟发送到 OSCCLKSEL 多路复用器:

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

    您好:Mark、

    Stevan 在下一个星期一之前不在办公室。 当星期二回到办公室后、请期待他的答复。

    谢谢

    Srikanth

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

    标记、

    是否可以尝试单步执行 Device_init() 函数? 如果代码没有到达 Device_initGPIO()、则表示时钟配置不正确。