[其他ST产品] 【NUCLEO试用】三:NUCLEO-L552ZE-Q 驱动nand flash

[复制链接]
1869|28
 楼主| 数码小叶 发表于 2020-5-28 21:45 | 显示全部楼层 |阅读模式
本帖最后由 数码小叶 于 2020-5-28 21:47 编辑

上一篇吐槽贴发完过了很久了【NUCLEO试用】二:NUCLEO-L552ZE-Q 各种槛 (出处: 中国电子网技术论坛),后来慢慢的把坑填完了,只是帖子没发,为了完整性,还是得补上,上一篇就说,原本是要驱动nand flash的,结果卡壳了。经过这次体验,发现STM32的FMC接口真的是很方便,省去了很多配置以及不需要跟底层驱动时序打交道了。

"NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年, 东芝公司发表了NAND flash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。"Nand flash内存是flash内存的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。Nand-flash存储器具有容量较大,改写速度快等优点,适用于大量数据的存储 "

FMC接口,全称“
Flexible memory controller”,大多数大于64脚的封装中,基本都配备了这个。这个扩展接口很强,参考手册里介绍的很详细,就不写了
Snipaste_2020-05-27_15-22-48.jpg


这次只是用到了其中的nand flash。
打开cubeMX,直接选择NUCLEO-L552ZE-Q ,这样可以省去很多配置,串口什么的也可以直接使用了。


Snipaste_2020-05-27_15-27-01.jpg

其他的设置就不写了,主要是FMC相关的,这里选择8位还是16位,根据自己的需求来,后面调用不同的HAL库操作函数。

Snipaste_2020-05-27_15-30-54.jpg


Snipaste_2020-05-27_15-35-15.jpg

里面要配置的参数很多,这些参数从哪来呢,就得看使用的nand flash芯片资料了。我测试的是K9F1G080U0E
微信图片_20200527145927.jpg

微信图片_20200527145919.jpg

微信图片_20200527145930.jpg

吐槽一句,这种接线方式有点不可靠,刚开始一直不稳定,后来用热熔胶固定后就稳定了,主要是条件限制,应该用短线焊接起来的。再来寻找需要填的参数,分别来自STM32L552xx and STM32L562xx advanced Arm®-based 32-bit MCUs Reference manual和K9F1G08U0E datasheet

Snipaste_2020-05-27_15-49-25.jpg

Snipaste_2020-05-27_16-25-13.jpg


Snipaste_2020-05-27_16-27-04.jpg

Snipaste_2020-05-27_16-28-04.jpg

Snipaste_2020-05-27_16-28-10.jpg

Snipaste_2020-03-31_14-09-30.jpg


最后配置如下
Snipaste_2020-05-27_16-38-20.jpg

从模块资料例程里,复制过来测试代码,读取芯片ID
  1.   HAL_NAND_Read_ID(&hnand1, &NAND_ID);

  2.   printf("Nand Flash ID = 0x%02X,0x%02X,0x%02X,0x%02X  ",NAND_ID.Maker_Id, NAND_ID.Device_Id,NAND_ID.Third_Id, NAND_ID.Fourth_Id );
  3.   if ((NAND_ID.Maker_Id == 0xEC) && (NAND_ID.Device_Id == 0xF1)
  4.         && (NAND_ID.Third_Id == 0x80) && (NAND_ID.Fourth_Id == 0x15))
  5.   {
  6.         printf("Type = K9F1G08U0A\r\n");
  7.   }
  8.   else if ((NAND_ID.Maker_Id == 0xEC) && (NAND_ID.Device_Id == 0xF1)
  9.         && (NAND_ID.Third_Id == 0x00) && (NAND_ID.Fourth_Id == 0x95))
  10.   {
  11.         printf("Type = K9F1G08U0B\r\n");     
  12.   }
  13.   else if ((NAND_ID.Maker_Id == 0xAD) && (NAND_ID.Device_Id == 0xF1)
  14.         && (NAND_ID.Third_Id == 0x80) && (NAND_ID.Fourth_Id == 0x1D))
  15.   {
  16.         printf("Type = HY27UF081G2A\r\n");      
  17.   }
  18.   else
  19.   {
  20.         printf("Type = Unknow\r\n");
  21.   }

第一次没成功,后面ok
Snipaste_2020-03-31_09-55-31.jpg
但是读出的好像不对啊,不是E么,对比数据手册
Snipaste_2020-05-27_16-49-48.jpg
没有问题,程序中定义错了

再来测试下读写
  1.   HAL_NAND_Write_Page(&hnand1, &WriteReadAddr, TxBuffer, 1);
  2.   printf("\r\n\r\nWritten number: \r\n");
  3.   for(i = 0; i < 13; i++)
  4. {
  5.     printf("0x%02X,",TxBuffer[i]);
  6.     HAL_Delay(2);
  7.   }
  8.   HAL_Delay(100);

  9.   HAL_NAND_Read_Page(&hnand1, &WriteReadAddr, RxBuffer, 1);
  10.   printf("\r\n\r\nRead number: \r\n");
  11.   for(i = 0; i < 13; i++)
  12.   {
  13.     printf("0x%02X,",RxBuffer[i]);
  14.     HAL_Delay(2);
  15.   }        

Snipaste_2020-03-31_10-00-36.jpg


串口打印,ok


mmuuss586 发表于 2020-5-29 10:09 | 显示全部楼层
yklstudent 发表于 2020-5-29 20:32 | 显示全部楼层
厉害了我的楼主
yklstudent 发表于 2020-5-29 20:32 | 显示全部楼层
楼主可以试试移植跑个micrium的ucfs文件系统
gygp 发表于 2020-6-3 19:59 | 显示全部楼层
基于STM32L5 微控制器  
chenci2013 发表于 2020-6-3 20:00 | 显示全部楼层
如何使用NUCLEO-F401RE
biechedan 发表于 2020-6-3 20:00 | 显示全部楼层
谢谢楼主的资料了。   
wangdezhi 发表于 2020-6-3 20:00 | 显示全部楼层
有完整的工程文件吗   
isseed 发表于 2020-6-3 20:01 | 显示全部楼层
给力,谢谢楼主。   
xietingfeng 发表于 2020-6-3 20:01 | 显示全部楼层
NUCLEO-L552ZE看着不错呢。   
suzhanhua 发表于 2020-6-3 20:01 | 显示全部楼层
在性能、功耗和安全性之间实现新的最优平衡  
mituzu 发表于 2020-6-3 20:02 | 显示全部楼层
NUCLEO_L552ZE     
hellosdc 发表于 2020-6-3 20:02 | 显示全部楼层
读写NOR和NAND需要技术的。  
uiint 发表于 2020-6-3 20:02 | 显示全部楼层
      
isseed 发表于 2020-6-3 20:02 | 显示全部楼层
STM32的FMC接口不错呢。   
wangdezhi 发表于 2020-6-3 20:02 | 显示全部楼层
不知道性能怎么样了   
xietingfeng 发表于 2020-6-3 20:02 | 显示全部楼层
外设也没有办法呢。      
biechedan 发表于 2020-6-3 20:02 | 显示全部楼层
跟着楼主学习学习吧。   
suzhanhua 发表于 2020-6-3 20:02 | 显示全部楼层
功耗可以到多少呢?   
chenci2013 发表于 2020-6-3 20:02 | 显示全部楼层
这个价格怎么样呢     
您需要登录后才可以回帖 登录 | 注册

本版积分规则

105

主题

2560

帖子

19

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