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

EVM5515的Nor Flash型号PC28F128P30T85换成MT28GU256AAA2EGC后,驱动参数怎么修改?

开发平台为EVM5515,由于PC28F128P30T85已经停产,且价格很高,120RMB/PCS。

PC28F128P30T85和MT28GU256AAA2EGC是Pin to Pin兼容的,容量分别是128MB和256MB。

如果将PC28F128P30T85换成MT28GU256AAA2EGC后,驱动参数怎么修改?

EVM5515开发板的例程CSL_EMIF_NOR_CpuTransfer文件如下

csl_nor.c

CSL_NOR_CpuTransfer.c

CSL_NOR_Test.h

函数CSL_norCpuTransferTest()中用到了几个关键的宏

PC28F128P30T85_ASYNCCFG_DEFAULT

PC28F128P30T85_ASYNCWAITCFG_DEFAULT

PC28F128P30T85_NORCFG_POLLED

它们在CSL_NOR_Test.h中定义。

我现在换成MT28GU256AAA2EGC后,该怎么修改呢?

Tony Tang:

还可以用SPI flash。

Shide Lu:

回复 Tony Tang:

用SPI flash启动速度太慢了,无法满足产品要求。之前发帖说过这个问题。提高SPI flash速度到最高,启动时间还要4~5秒。

Shine:

这几个宏不是必须要改的,只是一个名称,需要到csl_nor.h里的PC28F128P30T85 参数定义都要改成MT28GU256AAA2EGC的参数

Shide Lu:

回复 Shine:

这个当然明白。我就是不知道怎么改这些参数。PC28xx和MT28xx都是intel的,Pin2Pin兼容,只是后者容量增大了一倍。
但换上之后,CSL_EMIF_NOR_CpuTransfer例程无法正确识别,输出信息为“No Device Found”。

Tony Tang:

回复 Shide Lu:

先对比一下两份手册,device id 地址是一样的 :

看了一下代码,应该跟配置没有关系。是不是硬件没焊好。

status = NOR_readId(hNor); if(CSL_SOK != status) { printf("READ ID: Bad Status\n"); } if((0xFF == hNor->deviceID[1]) || (0xFFFF == hNor->deviceID[1])) { printf("No Device Found\n"); }

CSL_Status NOR_readId(CSL_NorHandle hNor){ CSL_Status status;

status = CSL_SOK;

/* Read NOR ID */ if(CSL_NOR_INTEL_STD_CMDSET & hNor->commandSet) { *(CSL_VUint16*)hNor->CSnBASE = 0x90; } else if (CSL_NOR_AMD_STD_CMDSET & hNor->commandSet) { if(CSL_NOR_8_BIT == hNor->norWidth) { *(CSL_VUint16*)(hNor->CSnBASE+0xAAA) = 0xAA; *(CSL_VUint16*)(hNor->CSnBASE+0x555) = 0x55; *(CSL_VUint16*)(hNor->CSnBASE+0xAAA) = 0x90; } else if(CSL_NOR_16_BIT == hNor->norWidth) { *(CSL_VUint16*)(hNor->CSnBASE+0x555) = 0xAA; *(CSL_VUint16*)(hNor->CSnBASE+0x2AA) = 0x55; *(CSL_VUint16*)(hNor->CSnBASE+0x555) = 0x90; } } __asm(" NOP");/*For "A write followed by A read" pre-fetch reordering*/ __asm(" NOP"); __asm(" NOP"); if(CSL_NOR_INTEL_STD_CMDSET & hNor->commandSet) { hNor->deviceID[0] = (*(CSL_VUint16*)(hNor->CSnBASE+0x00));/*man id*/ hNor->deviceID[1] = (*(CSL_VUint16*)(hNor->CSnBASE+0x01));/*dev id*/ hNor->deviceID[2] = (*(CSL_VUint16*)(hNor->CSnBASE+0x05));/*rcr*/ } else if (CSL_NOR_AMD_STD_CMDSET & hNor->commandSet) { if(CSL_NOR_8_BIT == hNor->norWidth) { hNor->deviceID[0] = (*(CSL_VUint16*)(hNor->CSnBASE+0x00));/*man id*/ hNor->deviceID[1] = (*(CSL_VUint16*)(hNor->CSnBASE+0x02));/*dev id-1*/ hNor->deviceID[2] = (*(CSL_VUint16*)(hNor->CSnBASE+0x1C));/*dev id-2*/ hNor->deviceID[3] = (*(CSL_VUint16*)(hNor->CSnBASE+0x1E));/*dev id-3*/ } else if(CSL_NOR_16_BIT == hNor->norWidth) { hNor->deviceID[0] = (*(CSL_VUint16*)(hNor->CSnBASE+0x00));/*man id*/ hNor->deviceID[1] = (*(CSL_VUint16*)(hNor->CSnBASE+0x01));/*dev id-1*/ hNor->deviceID[2] = (*(CSL_VUint16*)(hNor->CSnBASE+0x0E));/*dev id-2*/ hNor->deviceID[3] = (*(CSL_VUint16*)(hNor->CSnBASE+0x0F));/*dev id-3*/ }

/*Reset to exit auto-select mode for AMD*/ *(CSL_VUint16*)(hNor->CSnBASE+0x0) = 0xF0; }

return status;}

你也可以跟踪看一下读回来的deviceID0~3值到底是多少?

Shide Lu:

回复 Tony Tang:

好的,我试试

赞(0)
未经允许不得转载:TI中文支持网 » EVM5515的Nor Flash型号PC28F128P30T85换成MT28GU256AAA2EGC后,驱动参数怎么修改?
分享到: 更多 (0)