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.

[参考译文] TMS570LC4357:EMIF 的外部 SDRAM 问题

Guru**** 2460850 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/649809/tms570lc4357-external-sdram-issue-with-emif

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

我正在使用由 Halcogen 4.07生成的 EMIF 代码来访问 SDRAM。

我使用以下代码写入存储器位置并从存储器位置回读。  只需使用下面的代码即可正常工作。 我可以读回写入存储器位置的内容。  

unsigned short * SDRAM =(unsigned short *) 0x8000000;//请参阅 BLoader 存储器映射以获取 RAM

unsigned short 回读[3]中的地址引用;

*(SDRAM + 0)=(unsigned short) 0xA5A5;
*(SDRAM + 1)=(unsigned short) 0xc5b5;
*(SDRAM + 2)=(unsigned short) 0xc5c5;

*(readback + 0);*(readback + 0)
readback [1]=*(SDRAM + 1);
readback [2]=*(SDRAM + 2); 

但是、当我将上述代码更改为下面的代码时、我无法从存储器位置回读。 我从存储器位置的回读将为"0xA500"、"0xB500"和"0xC500"。 此外、如果我在调试窗口中使用内存浏览器查看内存位置、我只会在 这两种情况下看到"0xA500"、"0xB500"和"0xC500"。 是否有人知道会发生什么? 我的目的是使用循环来填充每个字节并逐一读回它、以确保我可以完全访问 SDRAM。  任何帮助都将得到满足! 谢谢。   

unsigned short * SDRAM =(unsigned short *) 0x8000000;//请参阅 BLoader 存储器映射以获取 RAM

unsigned short readback 中的地址引用[3];

unsigned short newTempVar;

newTempVar = 0;

*(SDRAM + 0)=(unsigned short) 0xA5A5;
*(SDRAM + 1)=(unsigned short) 5b5;
*(unsigned c5 + 0xb5)

readback [0]=*(SDRAM + 0);
readback [1]=*(SDRAM + 1);
readback [2]=*(SDRAM + 2); 

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

    我已向我们的一位 EMIF 专家进行了沟通、以便他们能够解决您看到的结果。 他们应尽快联系。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Swapnil、您好!

    代码和项目设置中是否有其他更改? 例如、缓存已启用等 明天我将做一次测试、然后回来。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您的回复。 所有设置都相同。 只需注释掉 newTempVar。 我将使用 Hercules 示例中的指南针对我的 SDRAM 进行 EMIF SDRAM 设置、并进行适当的设置。

    这是我的 SDRAM 的数据表。   http://www.issi.com/WW/pdf/42-45S16400J.pdf 

    如果 您需要检查、我将使用 IS45S16400J-7BLA2版本(-7)进行计时。

    除此之外、我将附加我用于此测试的项目。  

    e2e.ti.com/.../2705.SDRAM_5F00_20171214.zip

    感谢您的回答!

    Swapnil  

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

    Swapnil、您好!

    我对您修改的代码进行了测试、SDRAM 中三个位置的值是正确的。 这是我的测试屏幕、测试重复了100次、num_errors 为0。 您是否更改了 EMIF 设置?

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

    您好!

    我没有更改我的代码。 最后、它不起作用。 如果我通过三行指向我要写入存储器的内容、这就是我在存储器浏览器上每行之后看到的内容。

    在第一行之后、  

    0x80000000   A500

    0x800002   0000

    0x800004   0000

    在第二行之后、

    0x80000000   0000

    0x800002   B500

    0x800004   0000

    在第三行之后、  

    0x80000000   0000

    0x800002   0000

    0x80000004   C500

    然后、当我执行回读时、它会导致错误。 您知道什么会导致这种情况吗?

    谢谢  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在 TI TMS570LC43x HDK 上使用您的项目再次进行了测试、效果良好。 我无法重新产生问题。

    在第一个帖子中、您说过您毫无问题地读回该值、并且在更改代码后遇到了问题。 2个项目之间有何差异?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    感谢你的帮助。 您是否能够上传用于在 HDK 上进行测试的代码?

    两个代码之间的差异只是将0分配给临时变量(在任何地方都不使用)。
    但是、即使我们这么做、查看内存位置也始终与我之前的帖子中描述的相同。

    在 SDRAM 的数据表中、CAS 延迟= 2时、CLK 频率为133MHz。 该频率是否必须与 CPU 的 VLCK3频率相匹配? 我们的 VLCK3频率设置为75MHz。 这会导致问题吗?

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

    我使用了您发布的项目。
    您可以使用 EMIF 的任何有效频率(<100MHz、在数据表中定义)。 请探测电路板上的 EMIF 信号。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您的回复。 我们在 HDK 上尝试了该代码、它工作正常。

    我们注意到的一件事是、在 HDK 引脚 D10、D11和 D13的原理图上、标记为 ETMDATA[15]/EMIF_nDQM[0]、ETMDATA[14]/EMIF_nDQM[0]和 ETMDATA[12]/EMIF_BA[0]

    我们的定制板基于此配置连接到 SDRAM。 但根据 TPS570LC43xx 的 TRM 和数据表、它应该是 E10、E11和 E13。 它们在 TRM、数据表和 HALCOGen 上被标记为 ETMDATA[15]/EMIF_nDQM[0]、ETMDATA[14]/EMIF_nDQM[0]和 ETMDATA[12]/EMIF_BA[0]。  

    HDK 电路原理图中是否存在错误?  

    我将查看中的以下原理图版本  

    谢谢、  

    邮政编码 761. 2015年8月20日 401.

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

    Swapnil、您好!

    它们应为 E10、E11和 E13。 请使用数据表中的焊球分配。 这是 HDK 上使用的 EMIF 信号:

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

    我们发生错误、并假设 D10、D11和 D13与 E10、E11和 E13相同、因为它们在 HDK 的原理图上具有相同的标签。

    是否有办法仍然将 EMIF 驱动器与这些引脚配合使用? 任何帮助都将得到满足!

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

    如果不修改 PCB、它将无法正常工作。