教程资料

链接:https://pan.baidu.com/s/142JRSPisQO2Cu6VZ2Y5YrQ 密码:eom0

今天测试开发板的W25Q16(16Mbit--Flash)写一篇文章备忘一下

先说一下容量的单位

计算机存储单位一般用B,KB、MB、GB、TB、PB、EB、ZB、YB、BB来表示,它们之间的关系是:

位 bit (比特)(Binary Digits):存放一位二进制数,即 0 或 1,最小的存储单位。    字节 byte:8个二进制位为一个字节(B),最常用的单位。

1KB(Kilobyte 千字节) = 2^10 B = 1024 B;

1MB(Megabyte 兆字节) = 2^10 KB = 1024 KB = 2^20 B;

1GB(Gigabyte 吉字节) = 2^10 MB = 1024 MB = 2^30 B;

1TB(Trillionbyte 太字节) = 2^10 GB = 1024 GB = 2^40 B;

1PB(Petabyte 拍字节) = 2^10 TB = 1024 TB = 2^50 B;

1EB(Exabyte 艾字节) = 2^10 PB = 1024 PB = 2^60 B;

1ZB(Zettabyte 泽字节) = 2^10 EB = 1024 EB = 2^70 B;

1YB(YottaByte 尧字节) = 2^10 ZB = 1024 ZB = 2^80 B;

1BB(Brontobyte ) = 2^10 YB = 1024 YB = 2^90 B;

1NB(NonaByte ) = 2^10 BB = 1024 BB = 2^100 B;

1DB(DoggaByte) = 2^10 NB = 1024 NB = 2^110 B

所以16Mbit = 16*1024KB= 16384KB

16384KB = 16384*1024 bit = 16777216 bit

1字节=8位(bit)

也就是说W25Q16最多可以存储16777216 /8 = 2097152个字节的数据

可以先看一下数据手册

https://wenku.baidu.com/view/7b361c5cba1aa8114531d936.html

http://www.51hei.com/bbs/dpj-41029-1.html

芯片呢对2097152个字节进行了分配

每256个字节自己作为一页   所以就有  2097152/ 256 = 8192页

然后呢又对8192页进行了分配

每16页作为一个扇区     所以就有  8192/ 16 = 512个扇区

还有就是 让每 256页作为一个块

所以 就有 8192 / 256 = 32 个块

每次写数据之前需要先擦除

芯片规定最小擦除的单位是扇区,所以最小需要擦除16页,也就是16*256 = 4096个字节,也可以说最小擦除的空间是4KB, 4096 / 1024 = 4KB

当然也可以使用块擦除,那么每次擦除一个块,也就是256页  ,就是  256*256 = 65536个字节..  就是64KB   65536 / 1024 = 64KB

最后呢还有一个全片擦除指令,就是说写一个指令就可以擦除整个空间

看资料上还有

这个..............不确定...也可以擦除128页???还是说W25Q80是可以擦除128页....最后写程序试一试就知道了....

然后呢就是一些指令...测试完所有的功能再写

附上自己的程序,,,,,,史上最简单

/**
* @brief  SPI函数
* @param  value--发送的数据
* @param  None
* @param  None
* @retval None
* @example
**/
unsigned char SPIWriteRead(unsigned char value)
{unsigned char i=0,temp=0;SPI_CLK = 0;//进入之前其实是高电平if(SPI_MISO)temp|=0x80;//接收数据for(i=0;i<8;i++){SPI_MOSI=value&(0x80>>i);//准备数据SPI_CLK=1;SPI_CLK = 0;if(i<7)if(SPI_MISO)temp|=0x80>>(i+1);//接收数据
    }return temp;
}

测试

        SPI_CS=0;SPIWriteRead(W25X_PowerON_ID);SPIWriteRead(0xff);SPIWriteRead(0xff);SPIWriteRead(0xff);aa=SPIWriteRead(0xff);SPI_CS=1;printf("%X\r\n",(int)aa);DelayMs(1000);SPI_CS=0;SPIWriteRead(W25X_JEDEC_ID);aa=SPIWriteRead(0xff);bb=SPIWriteRead(0xff);cc=SPIWriteRead(0xff);SPI_CS=1;DelayMs(1000);printf("%X%X%X\r\n",(int)aa,(int)bb,(int)cc);DelayMs(1000);

#ifndef W25QXX_H_
#define W25QXX_H_#ifndef W25QXX_C_
#define W25QXX_C_ extern
#else
#define W25QXX_C_
#endif//以自己买的型号为准
#define  FLASH_ID              0xC84015   //GD25Q16CSIG  DeviceID 0x14
// #define  FLASH_ID              0xEF3015   //W25X16
// #define  FLASH_ID              0xEF4015     //W25Q16
// #define  FLASH_ID              0XEF4018   //W25Q128
// #define  FLASH_ID              0XEF4017   //W25Q64#define W25X_ReadStatus       0x05      //读状态寄存器
#define W25X_WriteStatus      0x01      //写状态寄存器
#define W25X_ReadDATA8        0x03      //普读_数据
#define W25X_FastRead         0x0B      //快读_数据
#define W25X_DualOutput       0x3B      //快读_双输出
#define W25X_Writepage        0x02      //写_数据_0~255个字节
#define W25X_S_Erase          0x20      //扇区擦除4KB
#define W25X_B_Erase          0xD8      //块区擦除64KB
#define W25X_C_Erase          0xC7      //整片格式化
#define W25X_PowerDown        0xB9      //待机
#define W25X_PowerON_ID       0xAB      //开机或是读ID
#define W25X_JEDEC_ID         0x9F      //十六位的JEDEC_ID
#define W25X_WriteEnable      0x06      //写允许
#define W25X_WriteDisable     0x04      //写禁止sbit SPI_CS    = P1^0;    // 片选
sbit SPI_MISO  = P1^1;    // 数据输入引脚
sbit SPI_MOSI  = P1^2;    // 数据输出引脚
sbit SPI_CLK   = P1^3;    // 时钟#endif

转载于:https://www.cnblogs.com/yangfengwu/p/8806984.html

51单片机开发板(W25Q16学习)相关推荐

  1. 巫妖王51单片机开发板配套视频课程-朱有鹏-专题视频课程

    巫妖王51单片机开发板配套视频课程-8368人已学习 课程介绍         本课程是巫妖王51单片机开发板的配套视频课程,本课程的目标是用少的时间带大家初级入门51单片机.配合巫妖王51单片机开发 ...

  2. 51单片机开发板资料270G | 免费下载

    目录 <手把手教你学51单片机> <郭天祥51单片机TX-1C 51-视频教程征服你> <单片机视频教程(汇编)> <给力者51单片机视频教程> < ...

  3. 基于普中51单片机开发板的温控风扇

    自学单片机也不算很久,刚好遇上了这一门的课程设计,查找了好多的资料发现都不算合适,合适的又要收费,那么最后呢才找到了一个有关我使用的开发板的温控风扇程序,也就是普中单片机开发板,该程序来自--黑51论 ...

  4. 学习笔记(01):巫妖王51单片机开发板配套视频课程-LED闪烁和流水灯效果

    立即学习:https://edu.csdn.net/course/play/6735/133119?utm_source=blogtoedu 2020-5-14 keil LED 闪烁,流水灯

  5. 学习笔记(01):巫妖王51单片机开发板配套视频课程-查询方式矩阵按键

    立即学习:https://edu.csdn.net/course/play/6735/133126 是独立按键还是矩阵按键

  6. 再搞75块单片机开发板!

    大家好,我是张巧龙,还记得当初自己用51开发板点亮了第一颗LED灯吗? 51单片机,yyds!不多说,直接抽奖送75块! 兴趣爱好 如果你对一件事失去了兴趣,我觉得你把这件事坚持做下去的概率很低. 反 ...

  7. DIY自制STC单片机开发板

    提示:本文属于技术的交流,如有抄袭请联系删除. 文章目录 开始之前 一.单片机硬件选择以及原理图绘制 1.MCU 2.LED点阵 3.蜂鸣器 4.光强度.烟雾浓度 5.温湿度 6.超声波 7.MP3 ...

  8. 51单片机支持python么_macOS搭建51单片机开发环境

    1.概述 鉴于好多朋友平常工作电脑为苹果,再配一台 Windows 机器来开发 51 单片机,略显多余.为此,本文详细讲解在 macOS 搭建 51 单片机开发环境. 软硬件需求:macOS 笔记本或 ...

  9. Linux操作系统搭建51单片机开发环境(国产桌面操作系统deepin)

    1.概述 操作系统作为计算机系统的掌上明珠,一直是我们国家极力想要掌握的核心技术之一.随着这几年国际关系动荡,地缘政治风云突变的缘故,开发和应用国产操作系统热情空前高涨.尤其基于 Linux 的国产操 ...

最新文章

  1. React Router 使用教程
  2. EXCEL中显示年月日时分秒
  3. 简单的openssh自动升级脚本
  4. JavaScript 监听手机端的touch滑动事件(滑动手势)
  5. 动态规划——0-1背包问题
  6. Kerberos 下运行spark 报错 Requested user hdfs is not whitelisted and has id 995,which is below the minimu
  7. bzoj 3528: [Zjoi2014]星系调查
  8. 一个简单的 javascript 中的正则表达式例子
  9. C语言连接MySql数据库(CodeBlocks)
  10. python数字图像处理(8):对比度与亮度调整
  11. python正则表达式面试题,带有utf8问题的python正则表达式
  12. 什么是平面设计?详细讲解平面设计
  13. 机器学习二分类模型评价指标详述
  14. mapbox 导航_散步、骑行线路随时可查!拱墅19条绿道实名确认,还有“魔鬼导航员”带你走……...
  15. python因子分析_python中的因子分析简介
  16. jupyter notebook 更改工作环境和浏览器
  17. python 等差数列list_python 等差数列末项计算方式
  18. ###好好###知识抽取总结DeepIE方案
  19. CSS简介代码实现表格(table)只有横线没有竖线的效果,一个简约卡片化精美的数据表格(类似Bootstrap表格)
  20. Ubuntu桌面系统卡住

热门文章

  1. PHP 每小时抽奖,php分时间段的抽奖程序代码
  2. vue搜索好友_Vue实现类似通讯录功能(中)
  3. c++ websocket客户端_阿里面经WebSocket实时通信
  4. java 微信jssdk签名_JAVA生成微信JSSDK接口签名
  5. 【maven插件】maven-resources-plugin 启用 Filter 时,需要过滤的文件和不需要过滤的文件混在一起该怎么办?
  6. 【thymeleaf】分页代码
  7. vue中img标签onerror事件
  8. hibernate3 hbm2java_hibernate3下hbm2ddl和hbm2java的配置
  9. linux 64 内存管理,[内存管理]linux X86_64处理器的内存布局图
  10. 为什么jsp写script代码报错_JSP 报错:ReferenceError: $ is not defined