S29GL128P Norflash驱动读写分析

2014-2-25

S29GL128P是在嵌入式系统中经常可以见到的一款Norflash芯片,存储结构为128(sectors)X128(Kbytes)=16Mbytes,支持CFI接口,有幸在项目中用到,就简单讨论下其操作原理。

一、硬件连接

S29GL128P与STM32F407之间采用FSMC总线连接,具有独立的16M寻址空间,0x64000000-0x64FFFFFF,16bit访问。由于FSMC总线采用的是AHB3通过SYSCLK 1分频得到的,高达168MHz,做硬件的时候还担心数据总线和地址总线布线等长的问题,现在看来完全不用,时序可以通过调整地址建立时间、保持时间等参数进行调节,但出于调试方便,数据线和时钟线要尽量分别做等长处理。另外,STM32F407FSMC总线可以挂载4bank的norflash,本设计中将NorFlash挂载到Bank2上,将网卡芯片挂载到Bank3上,4个Bank具有独立的控制以及时间设置寄存器,不用担心总线冲突。

二、初始化

首先要把FSMC总线初始化到复用状态,设置该Bank在总线上的建立保持以及数据访问模式等参数,这些时间参数可以参考S29GL128P手册中相应参数进行设置。

三、NorFlash 芯片ID读取,其实芯片手册是最好的参考,只是通过简单的解锁进入ID读取模式、读取ID、退出寄存器读取模式就可以了,为了方便用户开发,手册中甚至直接给出了程序。

如果你成功的把Flash ID读出来,那么就说明Norflash已经调通了。

四、NorFlash状态检测

S29GL128P在编程过程中,不仅可以输出Read信号,还可以使DQ某些信号线状态输出变化,例如DQ6在编程时翻转,DQ2在擦除状态一直翻转,DQ5和DQ1可以输出编程时是否发生错误和超时等。

五、块擦除、片擦除

NorFlash的机制是经过解锁可以进入寄存器区,由其命令集可以看出,对于片擦除,需要的操作如下,解锁写入0x80,然后解锁写入0x10,就开始执行片擦除算法,块擦除也是类似的,就是在写0x30命令的同时要写入要擦除的地址。

NOR_WRITE(ADDR_SHIFT(0x0555),0x00AA);

NOR_WRITE(ADDR_SHIFT(0x02AA),0x0055);

NOR_WRITE(ADDR_SHIFT(0x0555),0x0080);

NOR_WRITE(ADDR_SHIFT(0x0555),0x00AA);

NOR_WRITE(ADDR_SHIFT(0x02AA),0x0055);

NOR_WRITE(ADDR_SHIFT(0x0555),0x0010);

这里注意到在读写数据时候都对地址进行了处理:

#define ADDR_SHIFT(A)          (NOR_FLASH_ADDR + (2 * (A)))

看到写入的地址乘以一个2,是什么原因呢?以0x0555地址为例,其实指向的是一个字节数据,而不是一个半字的数据,而该flash是按16bit读写的,本意是想把0x0555这个半字的地址写入到正确的位置上,就必须对地址移位,分别写入高位和低位。而在写数据时,如果定义的就是一个uint16_t *型的地址指针,那么就可以直接对Flash进行读写了。(具体可参考http://blog.csdn.net/daniellee_ustb/article/details/7453273)

六、Flash读写

NorFlash是随机读命令写的器件,但必须每次读写都是两个字节,方法也很简单,这里测试了连续读写,没有测试页内编程方式。

附访问命令表

S29GL128P Norflash驱动读写分析相关推荐

  1. S29GL128P norflash 读写擦除问题

    最近用stm32调试S29GL128P norflash,遇到一些细节问题,和大家分享一下,希望大家能少走弯路. 因为这个项目是半路接手,已经有产品了,我的任务就是在此基础上升级改bug.之前的程序写 ...

  2. 驱动专题:第五章MTD及Flash驱动 4.Norflash驱动

    嵌入式Linux--nor flash (1):硬件介绍 声明:本文章是学完韦东山老师的教学视频后看过一些文章后所写,在看文章时我会将一些可能重要的知识点复制下来,所以可能会抄到您文章中的一些内容,如 ...

  3. 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】PowerPC + Linux2.6.25平台下的I2C驱动架构分析

    PowerPC + Linux2.6.25平台下的I2C驱动架构分析 Sailor_forever  sailing_9806#163.com (本原创文章发表于Sailor_forever 的个人b ...

  4. 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】PowerPC + Linux2.6.25平台下的SPI驱动架构分析

    PowerPC + Linux2.6.25平台下的SPI驱动架构分析 Sailor_forever  sailing_9806#163.com (本原创文章发表于Sailor_forever 的个人b ...

  5. Linux USB驱动框架分析 【转】

    转自:http://blog.chinaunix.net/uid-11848011-id-96188.html 初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结 ...

  6. linux i2c adapter 增加设备_LINUX设备驱动模型分析之四 设备模块相关(DEVICE)接口分析...

    本系列前几篇文章链接如下: <LINUX设备驱动模型分析之一 总体概念说明> <LINUX设备驱动模型分析之二 总线(BUS)接口分析> <LINUX设备驱动模型分析之三 ...

  7. Linux PCI驱动框架分析:(Peripheral Component Interconnect,外部设备互联)

    <DPDK 20.05 | rte_pci_bus思维导图 | 第一版> <linux系统下:IO端口,内存,PCI总线 的 读写(I/O)操作> <Linux指令:ls ...

  8. linux下IIC驱动开发分析

    1.  IIC规范 IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.IIC总线产生于在80年代,最初为音频和 ...

  9. 通过虚拟驱动vivi分析摄像头驱动

    Linux摄像头驱动学习之:(二)通过虚拟驱动vivi分析摄像头驱动 一.通过指令 "strace -o xawtv.log xawtv" 得到以下调用信息: // 1~7都是在v ...

最新文章

  1. 【文档】七、Mysql Binlog不同事件类型的事件内容
  2. python连接sqlite加密_C#连接加密的Sqlite数据库的方法
  3. 5、学MySQL前必须要了解的数据库专业术语
  4. AWS SDK for Java 2.0 使用的基础入门
  5. 开源资产管理系统_开源cmdb来啦 通用CMDB 开源资产管理系统
  6. wxWidgets:wxPropertySheetDialog类用法
  7. elasticsearch系列五:搜索详解(查询建议介绍、Suggester 介绍)
  8. 修改6S Fortran77 代码,建立查找表
  9. 剖析IE浏览器子系统的性能权重
  10. NetCore服务虚拟化01(集群组件Sodao.Core.Grpc)
  11. 【CodeForces - 827A】String Reconstruction(并查集合并区间,思维)
  12. vue-cli 脚手架项目简介(一) - package.json
  13. 传统到敏捷的转型中,谁更适合做Scrum Master?
  14. Ctrl+F5和F5区别
  15. scrapy.response
  16. 最新.NET 5.0 C#6 MVC6 WCF5 NoSQL Azure开发120课视频
  17. [日常] 最近的一些破事w...
  18. 公布中秋福利中奖名单
  19. 计算机编程情话,程序员的土味情话~(表白代码第二波)
  20. 【51单片机】外部中断

热门文章

  1. 2021银川高考成绩查询,2021银川市地区高考成绩排名查询,银川市高考各高中成绩喜报榜单...
  2. 遇到问题---kubectl delete deployments报错Error from server (NotFound): the server could not find the reque
  3. Java学习笔记分享之Spring Cloud Netflix篇(上)
  4. freerdp 解压安装_Linux下安装FreeRDP,连接windows远程桌面的好软件
  5. 西北乱跑娃 --- python excel表合并
  6. 互联网时代中医药产业复兴的科技创新
  7. SQL Server安全(2/11):身份验证(Authentication)
  8. js调用vlc_web网页中使用vlc插件播放相机rtsp流视频
  9. Drafting and Revision: Laplacian Pyramid Network for Fast High-Quality Artistic Style Transfer--T Li
  10. matlab 射频滤波器,第12章射频(MATLAB仿真在现代通信中的应用).ppt