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.

[参考译文] TMDSRM48HDK:在 RM48 HDK 上访问 SDRAM 时遇到问题

Guru**** 2465890 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/654045/tmdsrm48hdk-trouble-accessing-sdram-on-rm48-hdk

器件型号:TMDSRM48HDK
主题中讨论的其他器件:HALCOGEN

我尝试访问 RM48HDK 上的 SDRAM。 我找不到 HalCoGen 中的任何示例。   我正在使用的 HalCoGen 版本是04.06.00。 我搜索论坛、找到一个构建于 HalCoGen 版本3.02上的示例。 但 HalCoGen 在版本4到版本3之间有很大的变化。 我无法使其正常工作  04.06.00.是否有人可以发布更新 EMIF 示例项目以使用  HalCoGen 04.06.00或 04.07.00读取和写入 SDRAM?

谢谢、

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

    您看过这些帖子吗? 每个模块都提供了相当体面的分步说明、说明了如何设置和使用 EMIF 来访问 HDK 上的 SDRAM。

    e2e.ti.com/.../237341
    e2e.ti.com/.../180728

    我相信您可能已经在上面的第二个链接中看到了该线程、您可以在这里下载 v3 Halcogen 项目。 即使是来自 Halcgoen v3.x、您仍然应该能够打开它并在4.07.00版中重新生成代码而不会出现问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Chuck、  

    180728中的5164.7215.EMIF.zip 就是我使用的示例。 我可以使用 V3 Halcogen 运行它、SDRAM 运行良好。 之后  、使用 Halcgoen V4打开 REAPLAN_2D_V1b.hcg 并重新生成代码。 我还按照 180728添加:  

    systemREG1->GPREG1 |= 1U <<31;  

    根据需要插入 sys_link.cmd SDRAM。

    我使用存储器浏览器从0x8000000检查 SDRAM、但无论我在那里写入什么内容、我都会得到全0。 我不知道如何解决这个问题、任何建议都值得欢迎。  

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

    明天我将更详细地了解这一点、因为我今天无法使用工作台。 同时、您能否比较 V.4和 V3 Halcogen 项目的输出以确定差异是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您帮助解决问题。  我尝试比较 Halcogen V3和 V4的输出文件。 没有太多不同。 我们 不再需要调用 EMIF_SDRAMInit()。 新 的一个 EMIF_SDRAM_StartupInit()从 system.c 调用   

    谢谢、

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

    进行比较并进行调整后、代码是否立即工作并解决您的问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我尝试我能做的事情、但它不起作用。
    谢谢、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Yi、

    很抱歉、我在几天内无法查看您的帖子。 您能否向我更新此状态?

    将不同版本的代码之间的所有内容对齐后、它仍然无法正常工作? 您能否同时向我发送工作项目和故障项目、以便我也可以在此处进行比较并帮助进行调试?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我仍然无法解决此问题。 它们是这两者的项目文件。 V3正常工作、但 V4不工作。

    谢谢、

    e2e.ti.com/.../6175.EMIF_5F00_HCG_5F00_V4.zipe2e.ti.com/.../0572.EMIF_5F00_good_5F00_HCG_5F00_V3.zip

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

    您好、Yi、

    首先、我对延迟返回表示歉意、但我认为我找到了问题的根源。

    在您发布的项目中、V4项目将 EMIF_CLK (VCLK3)初始化为40MHz、这会导致写入 SDTIMR 寄存器的计算值出现显著差异。 当我在 Halcogen V4.0.7中打开工作项目时、EMIF_CLK 被设定为80MHz、这将导致同样的值被写入 SDTIMR、除了写入 T_WR 的值太大而不是 T_WR 字段导致它溢出到一个保留位(位19)。 如果将代码(14或0x0E)中定义的 T_WR 的可用位考虑在内、则实际上会向 T_WR 写入值6。

    我怀疑您是否在 V4项目(40MHz EMIF_CLK)或使用 V4打开的 Good V3项目(80MHz)中更新了 T_WR =75ns、并重新生成代码、它应该起作用。 另请注意、EMIF 长期可靠性的最大频率为60MHz、因此以80MHz 运行的项目可能在工作台环境中工作、在最高或最低温度规格和/或指定的最大或最小电压下可能会出现问题。

    下面的屏幕截图显示了如何更新 EMIF SDRAM 配置以匹配正在工作的项目。

    如果 EMIF_CLK = 40MHz、SDTIMR 初始化将如下所示:

    emifREG->SDTIMR =(uint32)((uint32) 5U << 27U)|
    (uint32)((uint32) 1U <<24U)|
    (uint32)((uint32) 0U <<23U)|
    (uint32)((uint32) 1U <<20U)|
    (uint32)((uint32) 0U << 19U)|
    (uint32)((uint32) 6U << 16U)|
    (uint32)((uint32) 3U << 12U)|
    (uint32)((uint32) 5U << 8U)|
    (uint32)((uint32) 0U << 7U)|
    (uint32)((uint32) 1U << 4U)|
    (uint32)((uint32) 0U << 3U); 

    如果 EMIF_CLK = 40MHz、SDTIMR 寄存器将按如下方式进行初始化:

    emifREG->SDTIMR =(uint32)((uint32) 2U << 27U)|
    (uint32)((uint32) 0U << 24U)|
    (uint32)((uint32) 0U <<23U)|
    (uint32)((uint32) 0U << 20U)|
    (uint32)((uint32) 0U << 19U)|
    (uint32)((uint32) 3U << 16U)|
    (uint32)((uint32) 1U <<12U)|
    (uint32)((uint32) 2U <<8U)|
    (uint32)((uint32) 0U << 7U)|
    (uint32)((uint32) 0U << 4U)|
    (uint32)((uint32) 0U << 3U); 

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

    你好、Chuck、

    感谢您介绍 EMIF_CLK。 我试图改变你的建议,但  它仍然不能发挥作用。 我的项目可能有其他错误。   如果您在 RM48HDK 上尝试、请在此处发布您的项目、每个人都可以将其用作参考。  

    谢谢、

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

    您好、Yi、

    我正在做一些额外的调查并查看一些较旧的帖子、并注意到一个帖子表明默认情况下不启用 EMIF CLK、您必须在"Special Muxing Options"下的 PINMUX 选项卡上选中此选项。 请参阅下面的屏幕截图。 当我将 V.3项目导入最新的 Halcogen 4.0.7时、不会选中此选项、因此不会启用 EMIF_CLK。

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

    我尝试此修复、它比以前更好。 我可以看到 SDRAM 值随代码的变化而变化。 但它会将所有存储器位置更改为相同的值。 在我的代码中、我仅更新256个字节。 我认为我们非常接近解决这个问题。 如果您有任何想法、请告诉我。

    谢谢、