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

C6713读写flash

你好,

我需要在flash里面存储数据,但目前无法正确写flash,flash挂在CE1。DSP core时钟是200M,EMIF工作在40M,能正确读写SDRAM,CE1配置如下,配置的保持时间,建立时间和读写脉冲宽度均满足flash芯片的要求。请问可能是什么原因?

        EMIF_FMKS(CECTL, WRSETUP, OF(4))      |
        EMIF_FMKS(CECTL, WRSTRB, OF(3))       |
        EMIF_FMKS(CECTL, WRHLD, OF(3))        |
        EMIF_FMKS(CECTL, RDSETUP, OF(4))      |
        EMIF_FMKS(CECTL, TA, OF(2))           |
        EMIF_FMKS(CECTL, RDSTRB, OF(3))       |
        EMIF_FMKS(CECTL, MTYPE, ASYNC16)       |
        EMIF_FMKS(CECTL, RDHLD, OF(3)),
void Flash_Writes(Uint32 addr,Uint16 data)
{
    //Uint16 TempData=0;
    *FLASH_555 = FLASH_UL1;
    PLLdelay(1000);
    *FLASH_2AA = FLASH_UL2;
    PLLdelay(1000);
    *FLASH_555 = FLASH_PROGRAM;
    PLLdelay(1000);
    //for(;;)
    //{
    *(Uint16 *)addr = data;
    //TempData = *(Uint16 *)(addr);
    //}
    //TempData = *(Uint16 *)(addr);
    while(*(Uint16 *)addr != data);//卡在此处
}
static void PLLdelay(int Count)
{
    volatile int i = Count;
    while(i–);
}
Shine:

请问可以擦除flash吗?看一下是否能擦成0xFFFF?

user6321166:

回复 Shine:

读取出来的数据是0xffff,通过memory看到的也是0xffff。因为赛普拉斯的flash出厂前已经进行了擦除,所以现在读出来的0xffff不能确定是我自己擦除成功还是失败。从我无法写flash来看,感觉我并没有擦除成功

Shine:

回复 user6321166:

可以先clear再erase来判断是否能擦除成功。您看一下flash手册,一般flash烧写需要经过clear(全部为0)->erase(全部0xffff)->program三个命令。

如果erase成功,program不正确,可以测量一下program时序是否符合flash手册里的program命令要求。另外,试试加长每次program之间的wait时间。

user6321166:

回复 Shine:

我这款flash没有clear功能,该功能包含在erase面里:执行erase之前,芯片自动执行clear把所以数据写成0,然后再执行erase。用示波器监测波形,发现DSP地址线输出的地址与代码中指定的地址不一致,DSP数据线输出的数据与指定的一致。
写入代码如下。flash宽度为16位,EMIF的setup,strobe和hold分别为4,3,3,EMIF时钟为40M,HD12为高,HD8为高。
while(1)
{*(Uint16*)0x9000055e=0xaaaa;*(Uint16*)0x90000aae=0x5555;*(Uint16*)0x9000055e=0xaaaa;delay(1000);//自定义延迟
}
理论上DSP地址线A2输出数据依次为0-0-0,监测到的A2数据为1-1-1;A3理论输出数据依次为1-1-1,监测到的A3数据为1-1-1;A4理论输出数据依次为1-1-1,监测到的A4数据为1-1-1;A5理论输出数据依次为1-1-1,监测到的A5数据为1-0-1。如果你需要看波形图,请给我您的邮箱,这里无法回复图片

Tony Tang:

回复 user6321166:

这里可以插入图片的。 如下图:

是不是地址线接错了?把相关部分的EMIF+flash原理图贴进来。

user6321166:

回复 Tony Tang:

user6321166:

回复 Tony Tang:

黄色为CE信号,蓝色为FLASH地址线A0信号

Tony Tang:

回复 user6321166:

flashcode.c

对比一下代码,好像地址偏移值要右移。

Tony Tang:

回复 user6321166:

方便的话,量一下CS与OE信号,我觉得这个信号不太对,按下图不应该连RAS,更应该是连接CAS,当然这个不影响写,会影响读。

赞(0)
未经允许不得转载:TI中文支持网 » C6713读写flash
分享到: 更多 (0)