C语言操作S29GL256S11指令详细说明

阅读: 评论:0

C语言操作S29GL256S11指令详细说明

C语言操作S29GL256S11指令详细说明

笔者使用的是MEIF接口对FLASH接口进行操作,EMIF初始化和系统初始化与本文无关,故不再详细介绍,本文只列举对S29GL256S11的操作。其实SPI操作与EMIF操作类似,只是调用的接口不一样而已。

        指令和地址关系如图:

 

1.FLASH擦除操作

   全片擦除的指令顺序(最好在指令间延迟一会儿):

        1.地址0x555写入0xAA

        2.地址0x2AA写入0x55

        3.地址0x555写入0x80

        4.地址0x555写入0xAA

        5.地址0x2AA写入0x55

        6.地址0x555写入0x10

        7.等待擦除信号完成,我就没有去判断DQ引脚状态,直接读出地址数据是否为0XFF,有点不严谨,应该加一个超时检测,不然如果出问题会一直卡死在这儿,但是只是测试使用。

//整片擦除
void Nor_Flash_Erase()
{EMIF_WRITE(0x555,0xAA);platform_delay_us(10);EMIF_WRITE(0x2AA,0x55);platform_delay_us(10);EMIF_WRITE(0x555,0x80);platform_delay_us(10);EMIF_WRITE(0x555,0xAA);platform_delay_us(10);EMIF_WRITE(0x2AA,0x55);platform_delay_us(10);EMIF_WRITE(0x555,0x10);platform_delay_us(10);while((EMIF_READ(0x0) != 0xFFFF)&&(EMIF_READ(0x1000) != 0xFFFF));
}

2.写入操作(因为我在使用的时候是对FLASH空间进行验证,所以采取了整片FLASH写入操作)

        1.地址0x555写入0xAA

        2.地址0x2AA写入0x55

        3.地址0x555写入0xA0

        4.地址是需要写入的地址 写入待写入的数据

        5.最后的检测应该是判断写入状态,我也没有去判断DQ引脚,直接读出写入数据是否完成,也没有加超时检测。

//整片写入
void Nor_Flash_Write()
{int i = 0;for(i=0;i<0xFFFFFF;i++){EMIF_WRITE(0x555,0xAA);platform_delay_us(10);EMIF_WRITE(0x2AA,0x55);platform_delay_us(10);EMIF_WRITE(0x555,0xA0);platform_delay_us(10);EMIF_WRITE(i,0x1234);while( EMIF_READ(i) != 0x1234);}
}

3.读出操作(因为我在使用的时候是对FLASH空间进行验证,所以采取了整片FLASH读出操作并校验,校验在实际使用可以删除)

        1.读出操作的时候,直接读出地址就好了

//整篇读出
void Nor_Flash_Read()
{int i = 0;int data =0;for(i=0;i<0x1000000;i++){data = EMIF_READ(i);if(data != 0x1234){printf("Error Found! %drn",i);}}}

本文发布于:2024-01-30 15:55:37,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170660134021150.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:FPGA
标签:详细说明   指令   语言   操作
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23