TI中文支持网
TI专业的中文技术问题搜集分享网站

RM48L952: EMIF接异步FRAM铁电存储器,读写异常

Part Number:RM48L952Other Parts Discussed in Thread:TMDSRM48HDK, HALCOGEN

在本应用中使用的是TI开发板TMDSRM48HDK。emif接了一个板载的sdram以及三个异步fram存储器,通过存储窗口观察sdram读写正常,但是异步访问不对,现在将配置和程序贴在下面

程序代码如下

在test_buffer1()中进行读写操作,在存储监测窗口看不到正确变化,用示波器监测写过程的ce 、we脚,发现we脚有异常。在一个写周期内,we脚反复变化,不知道这是什么原因,是不是造成写不进去的根源,希望能得到解答。或者是不是在异步存储配置方面有别的问题。

Susan Yang:

我们会在确认后给您回复

,

yang yang:

好的,麻烦您

,

Cherry Zhou:

我们认为这是 HW 错误。 请您参考器件勘误表中的以下办法: EMIF#4 写入配置为 " 正常 " 的外部异步存储器,这会导致额外的 WE 脉冲。

解决方法:必须使用 CPU 的 MPU 将外部异步内存配置为“设备”类型或“强排序”类型。希望以上解决方法对您有所帮助。

,

yang yang:

我那么配置了,还是没有变化

论坛上有朋友说需要使用下面的语句初始化mpu,这时候不再出现一次写操作,we反复翻转的情况。

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

但是目前仍然没有写成功,目前猜测可能原因(1)ASYNC初始化配置不对,这是halcogen自动生成的。如下所示,因为我的sdram操作使用halcogen生成的代码也是不能读写成功,后来再论坛上找了一个初始代码之后,sdram读写就没有问题了。(2)引脚接线不对,按照下面图中所示接的,EMIF_nDQM[1:0]是必须接到fram的吗,对于fram端应用手册上说如果使用16bit数据方式,这两个byte enable引脚可以直接接地。期待您的回复,谢谢。

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 */}

,

Cherry Zhou:

(1)ASYNC初始化配置不对,是halcogen自动生成的。如下图,您使用halcogen进行sdram操作生成的代码无法读写成功,参考论坛之前的初始代码,sdram读写没有问题。

EMIF 异步时序参数应正确编程。这些参数是根据 FRAM spec中的时序参数确定的。

(2)

yang yang 说:引脚接线不对

请问您是否遵循图 17-8 ?

EMIF_ADDR[x,0] — FRAM_ADDR[x+1, 1]

EMIF_BA[1] — FRAM_ADDR[0]

,

Cherry Zhou:

(1) ASYNC初始化配置不对,是halcogen自动生成的。如图,您使用halcogen进行sdram操作生成的代码无法读写成功,参考论坛之前的初始代码,sdram读写没有问题。

EMIF 异步时序参数应正确编程。这些参数是根据 FRAM spec规范中的时序参数确定的。

yang yang 说:2)引脚接线不对

请问您是否遵循图 17-8?

EMIF_ADDR[x,0] — FRAM_ADDR[x+1, 1]

EMIF_BA[1] — FRAM_ADDR[0]

,

yang yang:

地址和数据线都是按照图里说的接的。EMIF_nDQM[1:0]是必须接到fram的吗,对于fram端应用手册上说如果使用16bit数据方式,这两个byte enable引脚可以直接接地。我现在是没有接EMIF_nDQM[1:0], 两个BE[1:0]引脚接地,这样应该没问题吧

,

yang yang:

排除了芯片固有bug之后,上面的配置都是可以的,现在问题解决了,因为我接线的一个细节疏忽,感谢给予帮助的各位。

,

Cherry Zhou:

感谢您使用TI产品,如有其他问题请随时联系我们。

赞(0)
未经允许不得转载:TI中文支持网 » RM48L952: EMIF接异步FRAM铁电存储器,读写异常
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1