打印
[其他ST产品]

使用STM32F103ZET6驱动NAND FLASH

[复制链接]
472|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
t60yz|  楼主 | 2023-5-28 02:01 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
使用STM32F103ZET6驱动NAND FLASH(K9F1G08U0E)

经过2天的学习从不了解NAND FLASH,到驱动NAND FLASH完成一些简单的写,擦除,读取状态,复位等操作。

方法:使用正点原子的ST32F103ZET6和NAND FLASH(K9F1G08U0E)相连接





先看此图:

1.此芯片位宽位8,I/O口从0-7分别连接到FSMC_D0-FSMC_D7(PD14,PD15,PD0,PD1,PE7,PE8,PE9,PE10)

2.CLE是命令锁存使能-就是引脚在搞电平传输的是命令,ALE地址锁存使能-高电平,传输的是地址。CLE连接PD12,ALE连接PD13(这二条线也是FSMC的地址线A17和A16)

3.WE是写使能(低电平有效写入数据)PD5-FSMC_NWE,RE是读使能(低电平有效读取数据)PD4-FSMC_NOE,CE是片选此芯片(低电平有效选择NAND芯片)PD7-FSMC_NE1,WP是写保护(此芯片本身上拉就是没有写保护,当WP接地后芯片被保护无法写入数据)PD6,R/B(是准备就绪/正在工作状态,输出低电平表示忙,高表示就绪)PG6-FSMC_INT2。



使用特权

评论回复
沙发
t60yz|  楼主 | 2023-5-28 02:07 | 只看该作者
说下地址传输格式的问题


此芯片是传输四个字节一共32位,其中A10到A0表示页内偏移(此芯片一页有2K字节,偏移表示从字节0开始计数)但是此字节很少用因为芯片的读/写以页为单位,芯片的擦除以块为单位。

举例:假如我写2048字节到块1页3上,和块1页5上,这时我想擦除块1页3,其实也把块1页5擦除了。擦除是以块为单位

A17-12表示页地址(1个block(块)有64页)

A27-A18表示块地址(表示0-1013块也就是一个Zone)

一页2K,一个块有64页(64*2=128k=0.125M),一个Zone有1024个块1024*0.125=128M,由于此芯片有1G,所以有1024/128=8个Zone。

举例想访问块3页5上偏移100字节的,1st-0x64就是100字节,2nd0x00,3rd有A19-A12但是是页地址和块地址混合。0xc5-1100 0101,11就是A19到A18就是块3,00 0101就是A17-A12表示页5

使用特权

评论回复
板凳
t60yz|  楼主 | 2023-5-28 02:08 | 只看该作者
在程序中表示:

使用特权

评论回复
地板
t60yz|  楼主 | 2023-5-28 02:09 | 只看该作者
还是以块3页5举例,5+(3+(0*1024))*64 = 197,这里ROW_ADDRESS就是197就是0xc5

使用特权

评论回复
5
t60yz|  楼主 | 2023-5-28 02:09 | 只看该作者
带进去3rd就是0xc5,4th就是0x00

功能命令操作码

使用特权

评论回复
6
t60yz|  楼主 | 2023-5-28 02:10 | 只看该作者
举一个例子READ ID

使用特权

评论回复
7
t60yz|  楼主 | 2023-5-28 02:12 | 只看该作者
此NAND FLASH挂在BANK2上,我上面连的线也是连到BANK2上的,所以起始地址是0x7000 0000,BANK3起始是0X8000 0000。我查阅资料发现0x7000 0000到0x8000 0000不全是我们能用的空间,在BANK2上。

CMD_AREA表示高电平下进行引脚命令传输-0x90

然后ADDR_AREA拉高表示传输地址0x00

最后用32位的指针指向起始地址,强张取出一个32位的数据里面包含了商家厂家和芯片的内部信息等。


得出这些信息

未完--还有关于FSMC时序的问题和读写擦除命令和使用

时间2022/5/6--学习复习使用。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

170

主题

1009

帖子

0

粉丝