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.

[参考译文] TMS320F28386D:GPREG2使用和 MPOST 配置

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1252173/tms320f28386d-gpreg2-usage-and-mpost-configuration

器件型号:TMS320F28386D

当查看此部分 GPREG2用法和 MPOST 配置的详细信息时。

我想启用 MPOST。 但我只有一个 F28386D 电路板、我担心下面的问题。

 Z1-GPREG2寄存器是 OTP?   Z2-GPREG2寄存器是   Z1-GPREG2寄存器的超级区域。

这是否意味着我只有两次用于配置运行 MPOST 的模式?  

(一次配置 Z1-GPREG2、另一次配置 Z2-GPREG2  )

0x0 = MPOST 在启用 PLL 的情况下运行以实现高速(110MHz)。

0xC = MPOST 在启用 PLL 的情况下以中速(80MHz)运行。

0x3 = MPOST 在启用 PLL 的情况下以低速运行(60MHz)。

0x9 =在禁用 PLL (10MHz)的情况下使用 INTOSC2运行 MPOST。

任何其他值= MPOST 不运行。

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

    另一个问题:

    我可以使用 TI 提供的任何示例尝试此 MPOST、如下所示。

    以 adc_ex3_temp_sensor 为例

    #pragma DATA_SECTION (Z1_GPREG_VALUE、"otp_Z1_gpreg")
    CONST uint64_t Z1_GPREG_VALUE = 0x5AFFFF0F;//0x0 = MPOST 运行时启用 PLL 以实现高速(110MHz)。
    #pragma Retain (Z1_GPREG_VALUE)

    在  adc_ex3_temp_sensor.c 的开头、如下所示添加

    并在 link.cmd 文件中添加以下代码、

    内存
    {
    OTP_Z1_GPREG:origin = 0x0007 800A、length = 0x00000002

    部分
    {
    OTP_Z1_GPREG:> OTP_Z1_GPREG

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

    在将设置写入 OTP 之前、可以使用 EMUBOOT 模式来测试这些设置。  如您所说、您有两个机会可以使用 Z1配置或 Z2配置来修改它。  下面来自 TRM 的第714页

    就在 OTP 中写入 GPREG 而言、如果您向下滚动位以显式对这些位置进行编程、CCS 在其闪存工具中具有此功能。

    如果您希望从.out 文件中加载文件、那么您的选择就对了、我将与其他人进行核实、以确保使用的字长正确无误。  我"认为"您的 uint_t 64应该是32;但我还想确保我们传递到闪存 API 的地址边界没有限制。

    此致!

    马修

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以在将设置写入 OTP 之前使用 EMUBOOT 模式来测试这些设置。

    使用 EMUBOOT 模式进行测试非常棒。 但我不知道如何使用  EMUBOOT 模式执行这种类型测试。

    是否有我可以参考的文档?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    就在 OTP 中写入 GPREG 而言,如果您向下滚动某个位来显式地对这些位置进行编程,CCS 的闪存工具中就具备此功能。

    这意味着什么? 显式地对这些位置编程。 如何执行?

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

    我发现、在 片上闪存中调试期间、似乎也可以更改 OTP 设置。 这种方法是否有效?

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

    wz、

    正确、您可以使用它直接对值进行编程。

    我被误认为能够将 EMUBOOT 区域用于 MPOST、它有其他的 GPREG 用于引导引脚和引导模式、但没有控制 MPOST 的 GPREG2。

    您之前演示的如何通过向项目中添加来进行编程的示例是正确的、闪存一次对64位/ECC 进行编程、因此我们要将其定义为64位值。

    我认为在链接器中、您应该将其定义为4个字与2个字、因为即使我们没有对高32位进行编程、我们也会将64位常量传递到该空间。

    在任何情况下、闪存工具都会为您完成上述操作。

    此致!
    马修