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-F280025C:TMS320F280025C-Q1、DRV8323RS

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1392900/launchxl-f280025c-tms320f280025c-q1-drv8323rs

器件型号:LAUNCHXL-F280025C

工具与软件:

采用新的 F280025c/DRV8323RS PCB 设计、并采用了 LaunchXLf280025C/DRV8323RS 测试设置。

LaunchXLF280025CrevA 使用 XTAL、我需要更改为 OSC2时钟。  使用 CC12.7.1和通用电机控制实验4.0...驱动15A 无传感器 foc 感应电机。  实验1-4将正常运行。  只有一个 GPIO 更改为新的 PCB 并禁用了未使用的项目。

加载独立 F280025C 时、调试器显示、时钟始终通过 SYSCTL_OSCSRC_XTAL:在 SYSCTL_selectOscSource (uint32_t oscSource)中执行、 当然、它以无限循环结束、因为新 PCB 没有 XTAL。

您是否有关于 launchxL->standalone clk 更改为 OSC2的示例?   Hal.h 具有 extern 函数"extern void HAL_setupClks (HAL_Handle handle);但我找到的任何地方都不存在。

如果您能提供帮助、我将不胜感激。

我已经审查了一个旧的2E2显示一个 device.h 更改 dor device_setclock_CFG,但这并没有改变 iscsourcecase 跳转到... XTAL 而不是... OSC2在 SysCtl_selectOscSource() 。

我还 在 device.h 中设置了  USE_PLL_SRC_INTOSC、它似乎使用了不同的 device_setclock_CFG 设置。  因为我是该代码的新手、所以这里多个地方令人困惑。

谢谢你

Al Lehman

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

    AL、

    我很乐意提供帮助。 我会 详细回答您的问题。

    为了事先总结、您似乎在正确的轨道上。 "USE_PLL_SRC_INTOSC"是要使用的正确#define、但您还需要确保 USE_PLL_SRC_XTAL 未启用。

    详细的答案、  包括一个使用 大型工程的非常有用的提示:

    1. 关于 HAL_setupClks (-)、您是正确的。 它似乎是一个旧函数、该函数已被删除-我不知道代码中是否仍然存在对它的引用。 感谢您发送编修。

    2. 我强烈建议使用一个功能、尤其是对于具有大代码库的项目:
      1. 转至工作区设置:
      2. 启用"显示高级设置"并搜索"折叠"选项:
      3. 选中以下复选框并点击"Apply and Close":
      4. 这将使您能够根据项目的#defines 和预定义符号折叠代码的未使用段:
        1. 请注意、代码会从308跳到324、因为我的项目中未启用 USE_PLL_SRC_INTOSC! 这个功能将为你省去很多麻烦。
      5. 关闭并重新打开您当前所在的任何文件以重新加载它们并启用此功能。

    3. 搜索" #define USE_PLL_SRC_XTAL " device.h。 应用要求  注释掉这行代码。 在其下方添加"#define USE_PLL_SRC_INTOSC"
      1. 默认情况下、这应该会使您的项目使用以下时钟配置、默认情况下使用 OSC2:
        1.  
      2. 您也可以将其视为关于切换时钟源的教程、您只需调整位于 device.h 中的时钟配置宏即可!

    我希望所有的一切都是有帮助的!

    此致、
    Jason Osborn

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

    非常乐于助人-现在就在工作,明天我会给你一个状态!!!  我经常想知道不能查看已使用的代码。   很好。   

    谢谢你!!

    AL

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

    其他信息- 我在确保您的建议到位后一步一步。  我现在陷入了一个我不明白的有趣的"切换"情况不匹配。   

    在 SYSCTL_selectOscSource()调用时。  输入为 uint32_t oscSource 值0x00000000。  8个零点。  单步进入"SWITCH"、该值仍为十六进制"0"。  下一步是 Case ...XTAL (值= 0x0010000)而不是 OSC2 Case (值为0x00000000)。

    什么会导致这种情况发生??   这就是为什么我永远不能让 OSC2工作?  它始终进入 XTAL?

    单步执行是否会影响这里的任何东西?   

    请提供帮助。  我可能在这里丢失了一些东西。

    谢谢

    AL

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

    另一项-如果我进行调试、 oscSource 的结果是 OSC2值=0x0000000。   仅运行正常 oscSource =0x000007FF 时。  有任何提示吗?  我将在 launchXL 上测试时钟选择。  XTAL 代码仍然有效(只是检查更改)。  现在我要尝试 OSC2。

    AL

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

    我至少能看到调试断点发生了什么。

    • 选择"driverlib.lib"文件。 右键点击、选择"Exclude from Build"。
    • 选择"driverlib" 文件夹。 右键点击、 取消选择"Exclude from Build"。

    Re -构建您的项目并尝试 prev。 单步执行。 请告诉我发生了什么变化。

    此致、
    Jason Osborn

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

    谢谢你。   我移除了这两个部件并重建了。  相似的结果。  我现在还将优化设置为关闭、并将_X1、X2 GPIO 19、18设置为 OUT (在 GPIO 上没有差异)   

    以下是结果、该结果现在是一致的、但仍然会选择 XTAL。   

    device_init ()->sysCtlsetClock (cofig) in SysCtl.c -> CONFIG=0x8015001E

    下一步未检测到故障->#else->绕过 PLL 部分 (除非我误解了这个跳转至#else)

    接下来的三个设置

    oscclksrcsel= 0x0000 //只有16位?  多少电

    xtalval = 0x0000

    前两个|(OR'D) and not= compare 给出 oscSource = 0x00000001 =>

    关闭 PLL 部分

    然后选择 SYSCTL_selectOscSource 且 oscSource =0x00010000 或 XTAL。  开关盒工作正常并进入 XTAL。

    注意: 当我选择 driverlib.lib 文件、然后选择文件夹时、 仍然有一个 driverlib.lib 文件没有消失。  仅供参考-谢谢您 Al

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

    好消息-我在 sysctl.h 中添加了缺失的一行(至少是我使用的版本)、新的 PCB 运行正常!  由于启动时是 launchXL 代码、然后更改为 OSC2不构成问题?   或者我正在使用的4.0x 版本需要更新?   不管怎样,我很高兴,学到了很多。

    在 SysCtl_setClock()向下 至[#if ((oscclksrcsel | xtalval) != oscSource]中、 PLL 关闭、 然后有一个 SysCtl_selectOscSource()调用。

    我在这里只有一个()条目、它是..(CONFIG & SYSCTL_OSCSRC_M)、因此可以在处理过程中添加0x00010000、而不是全零。

    我为新的 PCB 定义添加了#if 、为(CONFIG & SYSCTL_OSCSRC_OSC2)添加了()。  [&&!defined()允许我在 launchXL 上测试相同的代码。

    现在、实验1将运行、并对实验4进行 AM 测试。   

    感谢您让我进入这个领域。  你是一个梦幻般的帮助,包括关于折叠代码的提示!!!

    谢谢

    AL

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

    我指的是 SYSCTL.c、而非 SYSCTL.h

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

    Jason -我是指 sysctl.c 不是 sysctl.h thanx