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.

[参考译文] RM48L952:EMIF 至异步 FRAM 铁电存储器、读取和写入异常

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1030719/rm48l952-emif-to-asynchronous-fram-ferroelectric-memory-read-and-write-exception

器件型号:RM48L952
主题中讨论的其他器件:TMDSRM48HDKHALCOGEN

客户使用的是 TI EVM TMDSRM48HDK。 EMIF 与一个板载 SDRAM 和三个异步 fram 存储器连接、并在存储器窗口中观察到 SDRAM 的读写操作正常、但异步访问不正确。  

以下是特定配置:

程序代码如下:

在 test_buffer1()中进行读写,并且在存储监视器窗口中看不到正确的更改。 然后使用示波器监控 CE、We 引脚的写入过程、最后发现我们的引脚异常。 下图:

在写入周期中、W我们 的引脚会重复更改、客户希望知道这是写入失败的原因还是异步存储配置存在其他问题。

此致、

樱桃周

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

    您好、Cherry、

    这是硬件错误。 请使用器件勘误表中的变通办法:EMIF#4写入配置为“正常”的外部异步存储器会导致额外的 WE 脉冲

    解决方法:必须使用 CPU 的 MPU 将外部异步存储器配置为"器件"类型或"严格排序"类型。

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

    您好 QJ、

    一旦客户以这种方式进行配置、仍然无法正常工作、如下图所示:

    然后、客户参考论坛中的另一个响应:需要以下语句来初始化 MPU。 不再有一个写入、我们会反复翻转。

    _mpuDisable_();
    _mpuInit_();
    _mpuEnable_();

    但是、写入仍不成功、客户猜测以下可能的原因是:

    (1)异步初始化配置不正确、由 halcogen 自动生成。 如下所示、通过使用 halcogen 的客户 SDRAM 操作生成的代码无法成功读取或写入、在参考论坛中之前的初始代码后、SDRAM 的读取和写入没有问题。

    void emif_ASYNC1Init(void)
    {
    /* USER CODE BEGIN (4) */
    /* USER CODE END */
    emifREG->CE2CFG = 0x00000000U;
    emifREG->CE2CFG = (uint32)((uint32)0U << 31U)|
    (uint32)((uint32)0U << 30U)|
    (uint32)((uint32)2U << 26U)|
    (uint32)((uint32)6U << 20U)|
    (uint32)((uint32)1U << 17U)|
    (uint32)((uint32)1U << 13U)|
    (uint32)((uint32)8U << 7U)|
    (uint32)((uint32)1U << 4U)|
    (uint32)((uint32)1U << 2U)|
    (uint32)((uint32)emif_16_bit_port);
    
    emifREG->AWCC = (emifREG->AWCC & 0xC0FF0000U)|
    (uint32)((uint32)emif_pin_high << 29U)|
    (uint32)((uint32)emif_pin_low << 28U)|
    (uint32)((uint32)emif_wait_pin0 << 16U)|
    (uint32)((uint32)0U);
    
    emifREG->PMCR = (emifREG->PMCR & 0xFFFFFF00U)|
    (uint32)((uint32)0U << 2U)|
    (uint32)((uint32)emif_4_words << 1U)|
    (uint32)((uint32)0U);
    /* USER CODE BEGIN (5) */
    /* USER CODE END */
    }

    (2)引脚未接线。 如下图所示、客户想知道、如果 EMIF_nDQM[1:0]必须连接到 FRAM 吗? 根据框架侧应用手册、如果使用16位数据模式、两个字节使能引脚可直接接地。

    此致、

    樱桃周

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="496057" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1030719/rm48l952-emif-to-asynchronous-fram-ferroelectric-memory-read-and-write-exception/3812524 #3812524"](1)异步初始化配置不正确,该配置由 halcogen 自动生成。 如下所示、使用 halcogen 的客户 SDRAM 操作生成的代码无法成功读取或写入、在参考论坛中的前一个初始代码后、SDRAM 的读取和写入没有问题。

    应正确对 EMIF 异步时序参数进行编程。 这些参数是根据 FRAM 规格中的时序参数确定的。

    [引用 userid="496057" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1030719/rm48l952-emif-to-asynchronous-fram-ferroelectric-memory-read-and-write-exception/3812524 #3812524"]引脚未连接。

    还可以。  

    您是否遵循图17-8中的信号映射?

    EMIF_ADDR[x、0]-- FRAM_ADDR[x+1、1]

    EMIF_BA[1]-- FRAM_ADDR[0]