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.

[参考译文] TMS320F28377D:闪存 API 初始化获取 Fapi_Error_Invalid HclkValue

Guru**** 2447250 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1524902/tms320f28377d-flash-api-initialization-getting-fapi_error_invalidhclkvalue

工具/软件:

您好、

我尝试让闪存 API 正常工作、并遵循常见问题解答及其他资源。 我已设置链接器文件来存储闪存 API 库、并遵循以下步骤。 但是、我使用的是 Device_init () 函数、它执行步骤 b。在步骤 a 之前、但除此之外、其他一切都是按相同的顺序进行的。 当我调用 Fapi_setActiveFlashBank (Bank0) 时会发生问题;我收到返回的 Fapi_Error_Invalid Fapi_Flash 错误。 我不确定会出现什么问题? 系统时钟配置为 200MHz。

a.配置 PLL

b.将闪存初始化代码从闪存复制到 RAM

c.将闪存 API 从闪存复制到 RAM

d.初始化闪存等待状态、回退功耗模式、性能特性和 ECC

e.使用泵信标获取闪存泵的所有权(不适用于某些设备,例如 TMS320F28004x)。

f.应在调用闪存 API 函数之前执行 EALLOW (C28x) 或 MWRALLOW (ARM) 以允许对受保护的寄存器进行写入。 这是 Concerto、F2837xD 和 F2807x 器件需要的。

G.应在调用闪存 API 函数后执行 EDIS 以禁止对受保护的寄存器进行写入。 这是 Concerto、F2837xD、F2837xS 和 F2807x 器件所必需的。

h.通过提供闪存寄存器基地址和工作频率来初始化闪存 API

Fapi_initializeAPI (F021_CPU1_BASE_ADDRESS、200);

i.初始化闪存组和 FMC 以进行擦除和编程操作

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

    您好、

    您能否确认您的等待状态是否针对频率进行了适当设置?

    谢谢。此致、

    Charles

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

    如果我理解正确、则 RWAIT 在进行 Fapi_调用 时为 3、如寄存器屏幕截图所示。

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

    您好、Spencer、

    是的、那么该值应该正确。 问题、Fapi_Error_Invalid   即使对于该器件的现有闪存示例、HclkValue 也是否显示?

    谢谢。此致、

    Charles

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

    这是我最近开始潜水的地方。 它没有在示例中显示。 因此、我将代码移植到我的工程中、最终发现真正的问题只是 我包含的头文件不是正确的要使用的文件。 它与项目中也存在的自检应用程序 (STA) 代码混用。