找回密码
 立即注册
查看: 384|回复: 5

STC-MCU 读写 25NO1GVZE1G

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-07-05 09:00:21

1

主题

1

回帖

23

积分

新手上路

积分
23
发表于 2024-6-21 11:12:02 | 显示全部楼层 |阅读模式


STC-MCU读写25NO1GVZE1G
平时读写W25Q128\64\32\16\8的代码并不适合25NO1GVZE1G,

STCMCU与25N01G

STCMCU与25N01G

1G(128M)flash

1G(128M)flash



回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-03 00:02:01
已绑定手机

19

主题

3191

回帖

4876

积分

论坛元老

积分
4876
发表于 2024-6-21 13:40:08 来自手机 | 显示全部楼层
可以看下数据手册和其他nor flash有什么不同
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:392
  • 最近打卡:2025-05-02 23:40:52

0

主题

336

回帖

1494

积分

金牌会员

积分
1494
发表于 2024-6-21 21:53:48 | 显示全部楼层
W25N01GVZE1G是3V 1G-BIT SERIAL SLC NAND FLASH MEMORY,而W25Q128\64\32\16\8是3V SERIAL FLASH MEMORY,差别大了去了,好好去看pdf吧
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-07-05 09:00:21

1

主题

1

回帖

23

积分

新手上路

积分
23
发表于 2024-6-29 11:48:46 | 显示全部楼层
3.jpg
1、25N01读ID
    1719632152389.jpg
    1719632173840.jpg

2、25n01内存结构、寄存器
1719632227295.jpg
1719632241913.jpg

3、25n01 时序、指令表
1719632286996.jpg
1719632308368.jpg
1719632316342.jpg

4、读写代码逻辑参考
  1. /* 5.4 页读取
  2. 基本操作概述:
  3. 1)先发送0x13指令,将指定物理地址的数据读到内部缓冲区;
  4.         先发送0x13,再发送0x00,发送页地址PA的高8位,最后发送页地址PA的低8位。
  5.         发完结束,等待完成即可。
  6. 2)再发送0x03指令,将缓冲区的数据读到用户的Buff中;
  7.         先发送0x03,发送列地址CA的高8位,然后发送列地址CA的低8位,最后发送0x00。
  8.         发完结束,等待完成即可。
  9. 3)读取完毕之后,检查状态寄存器的ECC校验位,判断是否读取正确。
  10. 下面是我的可用代码: */
  11. /* uint16_t blocks, 128KB block addr(1024 blocks)
  12. uint16_t pages, page addr(64 page)               
  13. uint8_t *Buff bype address(0-2047 byte) */
  14. uint8_t W25N01_PageRead(uint16_t blocks, uint16_t pages, uint8_t *Buff)
  15. {
  16.         uint16_t PA = (blocks << 6) + (pages & 0x3F);
  17.        
  18.         SPI_FLASH_CS_LOW();
  19.         SpiReadWriteByte(0x13);
  20.         SpiReadWriteByte(0x00);
  21.         SpiReadWriteByte((uint8_t)(PA>>8));
  22.         SpiReadWriteByte((uint8_t)(PA&0xFF));
  23.         SPI_FLASH_CS_HIGH();
  24.        
  25.         HAL_Delay(1);
  26.        
  27.         SPI_FLASH_CS_LOW();
  28.         SpiReadWriteByte(0x03);
  29.         SpiReadWriteByte(0x00);
  30.         SpiReadWriteByte(0x00);
  31.         SpiReadWriteByte(0x00);
  32.         SpiFlashReceive(Buff, 2048);
  33.         SPI_FLASH_CS_HIGH();
  34.        
  35.         if( (W25N01_ReadReg(FLASH_STATUS_REG3_ADDR) & 0x30) >= 0x20)
  36.                 return W25N01XX_FAIL;
  37.        
  38.         return W25N01XX_OK;
  39. }
  40. /* 5.5 页写入
  41. 1)Buff写缓冲区
  42.         必须先发送0x06写使能命令
  43.         再发送0x02命令,发送2个 0x00,然后传输2048字节数据
  44. 2)缓冲区写物理地址
  45.         先发送0x10,发送0x00,
  46.         然后发送页地址PA的高8位,最后发送页地址PA的低8位,结束,
  47.         等待传输完成
  48. 下面是我的可用代码: */
  49. uint8_t W25N01_PageWrite(uint16_t blocks, uint16_t pages, uint8_t *Buff)
  50. {
  51.         uint16_t PA = (blocks << 6) + (pages & 0x3F);
  52.        
  53.         W25N01_WriteEnable();
  54.         HAL_Delay(1);
  55.        
  56.         SPI_FLASH_CS_LOW();
  57.         SpiReadWriteByte(0x02);
  58.         SpiReadWriteByte(0x00);
  59.         SpiReadWriteByte(0x00);
  60.         SpiFlashTrans(Buff, 2048);
  61.         SPI_FLASH_CS_HIGH();
  62.        
  63.         HAL_Delay(1);
  64.        
  65.         SPI_FLASH_CS_LOW();
  66.         SpiReadWriteByte(0x10);
  67.         SpiReadWriteByte(0x00);
  68.         SpiReadWriteByte((uint8_t)(PA>>8));
  69.         SpiReadWriteByte((uint8_t)(PA&0xFF));
  70.         SPI_FLASH_CS_HIGH();
  71.        
  72.         W25N01_WaitBusy();
  73.        
  74.         if( (W25N01_ReadReg(FLASH_STATUS_REG3_ADDR) & FLASH_SR_WRITE_FAIL)
  75.                 == FLASH_SR_WRITE_FAIL)
  76.                 return W25N01XX_FAIL;
  77.        
  78.         return W25N01XX_OK;
  79. }
复制代码


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2024-12-05 23:05:49

0

主题

10

回帖

98

积分

注册会员

积分
98
发表于 2024-10-21 23:28:19 | 显示全部楼层
你好兄弟,我在学习这个FLASH,能把你的工程文件贴上来吗?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-10-22 00:15:18 | 显示全部楼层
理论上这个FLASH芯片需要做坏块管理,按块擦除时根据状态返回值来判断坏块,并做块地址记录。
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-3 15:03 , Processed in 0.131366 second(s), 84 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表