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.

[参考译文] TMS320F28069F:闪存切换测试频率不正确

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/588294/tms320f28069f-incorrect-flash-toggle-test-frequency

器件型号:TMS320F28069F
Thread 中讨论的其他器件:controlSUITE

在硬件上运行闪存切换测试时、GPIO 输出上的频率不正确。 我确信 CPU_RATE 是正确的、但我更改了它只是为了查看它会如何影响频率、实际上 GPIO 输出频率没有变化。 它的有效期为25 μ s。 为了获得适合该测试的输出频率、我必须怎么做?

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

    您将无法以 CPU 频率进行切换、请查看此 wiki 文章:
    processors.wiki.ti.com/.../General_Purpose_IO_(GPIO)_FAQ_for_C2000

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

    感谢您的回复。 我绝不能明确指出我的问题。 我正在尝试运行闪存 API 算法 Flash_ToggleTest、以确保已正确设置所有内容以使用闪存 API。 我可以运行示例程序、在我的硬件上、一切都按预期工作(在 GPIO 引脚上测得的周期为100微秒)。 但是、当我尝试在我的应用程序代码中包含闪存 API 以便能够在应用程序代码中重新闪存时、我无法在 GPIO 引脚上获得所需的100微秒周期。 周期为25 μ s、与示例程序不同、更改 CPU_RATE 对周期没有影响! 我获得100微秒周期的唯一方法是将系统时钟频率从80 MHz 更改为20 MHz、这在我的应用中不起作用!

    此致、

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

    当您使用片上闪存编程器时、您是否看到了这个问题? (或)您是否正在使用软件闪存 API 库?

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在使用片上闪存编程器。

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

    Philip、

    很抱歉、这一个漏掉了裂缝。

    CPU_RATE 是 Flash2806x_API_Config.h 中的#define 定义 除非您使用的是闪存 API 软件库。 更改此值不会影响片上闪存编程器的闪存切换测试频率。


    此致、

    曼诺伊

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

    切换测试功能应在10KHz 时切换 GPIO 引脚。 如果您获得一些其他频率、则表明您的闪存 API 频率配置不正确。

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

    我在应用中使用的定义、库和变量与闪存示例程序中使用的定义、库和变量相同。 我可以通过更改 CPU_RATE 将示例项目中的切换频率调整为10kHz。 我无法在我的应用项目中执行此操作。

    除了更改 CPU_RATE 之外、如何更改项目中闪存 API 的频率配置?

    谢谢、

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

    根据您的消息、您正在使用闪存 API 软件库、而不是片上闪存编程器。

    1) 1)什么是 CPU_RATE 定义?
    2) 2)您的 SYSCLK 是否与 CPU_RATE 中的配置相匹配?

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

    以下是我在项目和示例项目中使用的库和包含文件:Flash2806x_API_Config.h、Flash2806x_API_Library.h 和2806x_BootROM_API_TABLE_Symbols.lib 算法存储在28069的引导 ROM 中。

    我们的应用以80MHz 的频率运行、因此我的 CPU_RATE 为12.500L。 借助示例程序、我可以使用内部振荡器(10MHz)或我们的外部晶体(16MHz)、通过调整 CPU_RATE、我可以在两种情况下获得所需的10kHz 切换频率。

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

    我将应用软件更改为只初始化时钟和 PLL (无外设),并在运行 Flash_ToggleTest()例程时最终能够在 GPIO 引脚上获得10kHz 信号。 遗憾的是、获得该频率的唯一方法是将时钟频率更改为90MHz。 更改 CPU_RATE 仍对切换频率没有影响、但无论如何我会将 CPU_RATE 设置为11.111L。

    我继续用 Flash_Eras()例程替换切换测试,只是发现它永远不会从例程返回,而是处理器在地址0x3ff4fa 处停止。 你对我有什么建议吗?

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

    您的 PC 可能处于等待引导模式、这表示可能存在复位源。 请尝试加载 bootrom 符号以进行确认。

    您是否已经尝试运行 controlSUITE 示例( \libs\utilities\flash_api\2806x\v100a)? 该示例正是这样做的。

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

    我可以运行示例程序、它在我的硬件上工作正常。 我可以使用内部10MHz 振荡器或外部晶体。 当我在示例程序中更改 CPU_RATE 时、我可以调整频率以在 GPIO 上实现10kHz 切换。

    我尝试设置的程序与示例程序完全相同。 我以为我的所有内容都是一样的,但现在看到示例程序调用了 InitSysCtrl(),但我没有包括它。 我将向程序中添加与 InitSysCtrl()中相同的初始化。

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

    您好、Manoj、

    我在项目中包含了 bootrom 符号库。 CCS 不显示此"等待引导模式"的任何源代码、但如果我打开反汇编窗口、程序已在"estop0"命令处停止。

    我想后退一步、向您介绍我要实现的目标。 我使用"proj_lab04"作为应用程序的基础项目。 这是使用扭矩命令运行电机的电机控制实验。 我添加了其他功能、包括 CAN 接口。 我希望能够通过从 CAN 接口接收数据并调用闪存 API 来擦除和编程应用、从而重新闪存应用。 为此、我向项目添加了闪存库、初始化和命令。 但这正是我遇到问题的地方:闪存算法无法正常工作。

    是否可以将闪存算法添加到电机控制项目中并成功重新闪存处理器?

    谢谢、Phil

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

    是的、您可以将闪存 API 算法包含在任何应用代码中。

    是否确保从 RAM 而不是闪存调用所有闪存 API 函数? 请密切注意示例代码中分配给代码段 ramfuncs 的函数、并确保您的应用代码中遵循相同的函数。

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

    您好、Manoj、

    是的、我在 ramfuncs 中放置调用闪存 API 函数的例程。 我最初为回调函数分配了一个空指针、但也尝试了回调函数(位于 RAM 中)、就像示例程序一样。 顺便说一下、我使用的示例程序来自 device_support/F2806x/flash_programming。

    是否需要包括以下内容:

    #pragma DATA_SECTION (Flash_CPUScaleFactor、"FlashScalingVar");
    uint32 Flash_CPUScaleFactor;
    #pragma DATA_SECTION (Flash_CallbackPtr、"FlashCallbackVar");
    void (* Flash_CallbackPtr)(void);

    我看到这是一些例子,但并非所有例子。

    谢谢、Phil

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

    Phil、

    该器件不需要它们。

    原因:-在此器件中、BootROM 包含闪存 API。 这两个变量都在引导 ROM 中定义。

    此致、
    曼诺伊