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.

[参考译文] TMS570LS1114:EMIF SDRAM 读/写访问镜像

Guru**** 2392905 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1075144/tms570ls1114-emif-sdram-read-write-access-mirroring

部件号:TMS570LS1114
“线程:HALCOGEN测试”中讨论的其它部件

尊敬的 TI 专家:

我正在使用从 Hceggen 04.07.01生成的代码初始化并访问定制主板上的外部 SDRAM ISSI IS42S16100H-7TLI。

生成的初始化序列 EMIF_SDRAM_StartupInit 在 system.c 系统初始化功能中调用,该功能在 mapClocks 调用启动 PLL 之前。

我们以71.5 MHz 运行 VCLK3,并使用 ISSI 数据表中的值填充壁龛中的 SDRAM 定时参数。 在平粘中启用 EMIF_Nwe 标志列表集,在特殊的平粘 EMIF_CLK 输出中启用。  

向 SDRAM 的数据字段写入值将为 SDRAM 中的所有数据字段生成相同的值。 例如,如果0xA1A1写入0x8000000,也写入0x80000002,0x80000004等,则将保留0xA1A1。  

如果有任何帮助,我们将不胜感激! 谢谢。  

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

    您好,

    是否可以尝试 PageSize=2 (slement_1024,10列地址)?  

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

    尊敬的王先生:

    我尝试了 Pagesize=2 (slement_1024)。 观察到的镜像行为仍然存在。 此外,ISSI 数据表还将 A0 -A7指定为列地址输入,哪种输入应产生8个列地址,从而产生256个16位元素的页码,对吗?

    此致
    大卫

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

    您好,

    在 sys_startup.c 中将 GREG1[31]设置为1确实有帮助。

    我们通过在 SDRAM 内存空间中分配的写阵列和在堆栈中分配的读阵列来验证 main.c 中的 SDRAM 读写访问。 我们注意到,当我们让代码正常运行而没有断点时,SDRAM 中存在内存差距,其中的值写入不正确。 当我们使用调试器单独逐步完成每个写入指令时,没有内存间隙,所有单元格都被正确写入。

    __attribute__(((section(".farbss"))) volatile uint16_t SDRAM_FAR [100]={0}; // SDRAM 中的测试数组

    在 main()中:

    对于(uint16_t i = 0i < 100I++)
      {
        SDRAM_FAN[I]= I
      }
      UINT16_t SDRAM_READ[100]={0}
      对于(uint16_t i = 0i < 100I++)
      {
        SDRAM_READ[i]= SDRAM_FAR [i]
      }

    有什么建议?

    此致
    大卫

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

    您好,

    在 SDRAM 写入访问之间出现延迟时,不会出现内存差距问题。

    __attribute__(((section(".farbss"))) volatile uint16_t SDRAM_FAR [100]={0};// SDRAM 中的测试数组

    在 main()中:

    对于(uint16_t i = 0;i < 100;I++) 
    
    SDRAM_FAN[I]= I; 
    对于(uint8_t 延迟=0;延迟< 5U;延迟++)//正确写入的最小延迟 
    {
    } 
    } 
    


    阅读不需要延迟。 我们使用180 MHz 的系统时钟和90 MHz 的 EMIF 时钟。 有什么建议可以解决这个问题,或者导致这个问题的原因是什么?

    此致
    大卫

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

    大卫,你好。

    某些 SDRAM 定时参数似乎未正确编程。 较低的 VCLK 速度是否有帮助?

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

    王先生你好,

    感谢你的回复。 时间问题也是我们怀疑的问题根源。

    增加 VCLK3分隔线实际上会使问题恶化。 比如,记忆差距越来越大。 此外,我们还使用 f_CPU = f_EMIF = 90 MHz 进行了测试,但问题仍然存在。

    下面是一些数据集:

    F_CPU = 180 MHz,F_EMIF = 90 MHz      F_CPU = 180 MHz,F_EMIF = 60MHz   F_CPU = 90 MHz,F_EMIF = 90Mhz
                                        

    勘误表设备#B064在这里n`t 相关,因为我们使用的是设备版本 C,它已从版本 B 修正为版本 C,对吗?

    非常感谢您的帮助!

    此致,
    大卫