[其他ST产品] 使用STM32F103ZET6驱动NAND FLASH

[复制链接]
988|7
 楼主| t60yz 发表于 2023-5-28 02:01 | 显示全部楼层 |阅读模式
使用STM32F103ZET6驱动NAND FLASH(K9F1G08U0E)

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

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



213346472456479c6f.png

先看此图:

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。



评论

项目需要SD NAND存储芯片吗,可以送样测试,13537608950  发表于 2024-3-7 17:50
 楼主| t60yz 发表于 2023-5-28 02:07 | 显示全部楼层
说下地址传输格式的问题
99548647246d9bd89e.png

此芯片是传输四个字节一共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 | 显示全部楼层
在程序中表示:
470976472472d41cda.png
478836472473705395.png
 楼主| t60yz 发表于 2023-5-28 02:09 | 显示全部楼层
还是以块3页5举例,5+(3+(0*1024))*64 = 197,这里ROW_ADDRESS就是197就是0xc5
9586964724747bab21.png
 楼主| t60yz 发表于 2023-5-28 02:09 | 显示全部楼层
带进去3rd就是0xc5,4th就是0x00

功能命令操作码
463976472476a5e1da.png
 楼主| t60yz 发表于 2023-5-28 02:10 | 显示全部楼层
举一个例子READ ID
81644647247821a852.png
7975964724786c7410.png
 楼主| 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位的数据里面包含了商家厂家和芯片的内部信息等。

21707647248021b9bb.png
得出这些信息

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

时间2022/5/6--学习复习使用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

189

主题

1191

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部