1.首先认识下W25Q16DVSIG,

  • SOP8
  • SPI FLASH
  • 16MBIT  2MB(4096个字节)

(里面能够放字库,图片,也能够程序掉电不丢失数据放里面)

例程解说:

1.用到SPI库;conf.h里打开头文件

2.2M串行FLASH  W25Q16初始化

SPI_FLASH_Init();

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);  //注意挂载的时钟线

注意片选,SPI也能够多片工作的。(这里用了一片)

切记:port要一个个定义

②读器件ID(此处不能出错)

    /* Get SPI Flash Device ID */DeviceID = SPI_FLASH_ReadDeviceID();

u32 SPI_FLASH_ReadDeviceID(void)
{u32 Temp = 0;/* Select the FLASH: Chip Select low */SPI_FLASH_CS_LOW();   //片选拉低。选中该设备/* Send "RDID " instruction */SPI_FLASH_SendByte(W25X_DeviceID);//先发送一个器ID,告诉它我们要读你的器件ID了(这是一个命令) 0XABSPI_FLASH_SendByte(Dummy_Byte);     //发送3个字节的空地址,25X16的地址是24位的,最后再发一个字节的话。就返回了一个字节的DEVICEID!

SPI_FLASH_SendByte(Dummy_Byte); SPI_FLASH_SendByte(Dummy_Byte);

/* Read a byte from the FLASH */Temp =SPI_FLASH_SendByte(Dummy_Byte); /* Deselect the FLASH: Chip Select high */SPI_FLASH_CS_HIGH(); returnTemp; }

看如图:

0xAB 相应 ID7-ID0

③读取FLASHID

    /* Get SPI Flash ID */FlashID = SPI_FLASH_ReadID();

函数例如以下:

/*******************************************************************************
* Function Name  : SPI_FLASH_ReadID
* Description    : Reads FLASH identification.
* Input          : None
* Output         : None
* Return         : FLASH identification
*******************************************************************************/
u32 SPI_FLASH_ReadID(void)
{u32 Temp = 0, Temp0 = 0, Temp1 = 0, Temp2 = 0;/* Select the FLASH: Chip Select low */SPI_FLASH_CS_LOW();/* Send "RDID " instruction */SPI_FLASH_SendByte(W25X_JedecDeviceID);   //发送9F过去,将返回一个字节的ID(M7-M0)然后再返回来连个字节的deviceID (ID15-ID8/ID7-ID0)/* Read a byte from the FLASH */Temp0 = SPI_FLASH_SendByte(Dummy_Byte);    //读取M7-M0/* Read a byte from the FLASH */Temp1 = SPI_FLASH_SendByte(Dummy_Byte);    //读取ID15-ID8/* Read a byte from the FLASH */Temp2 = SPI_FLASH_SendByte(Dummy_Byte);   //读取ID7-ID0
/* Deselect the FLASH: Chip Select high */ SPI_FLASH_CS_HIGH(); Temp = (Temp0 << 16) | (Temp1 << 8) | Temp2; return Temp; }   //数据组合

ID:

对于 Manufacturer  和  Memory Type  相应的数据时依据不同的型号而不同的(如图)

华邦公司不同型号表:

对于25Q16

仅仅是器件地址不一样,他们都是华邦公司的嘛

STM32.SPI(25Q16)相关推荐

  1. STM32F10x_SPI(硬件接口 + 软件模拟)读写Flash(25Q16)

    推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang 我的网站:h ...

  2. STM32实战(1):搭建模板工程

    " 从今天起我会更新一个STM32实战系列教程,以STM32F103RCT6核心板为例由浅至深的向大家介绍嵌入式软件开发的学习过程,计划是先从最基础的搭建工程开始,到裸机开发,再到各种中间件 ...

  3. 零基础入门STM32编程(三)

    前情回顾 通过前面两篇文章的学习,我们已经对STM32有了一定的了解,知道了STM32单片机的基本分类和不同产品间的特点等知识,今天起围绕STM32F103xx继续深入浅出地学习单片机编程. 一.总线 ...

  4. STM32项目(六)—— 中文电子捡货标签

    STM32项目(六)-- 中文电子捡货标签 宗旨:技术的分享是有限的,分享的精神是无限的. 传统物流行业仓储拣货采用纸单作业,拣货完成后再进行验货.出货,容易造成拣货错误.拣货速度与效率低.新员工培训 ...

  5. STM32项目(四)——暗室网关

    STM32项目(四)--暗室网关 宗旨:技术的学习是有限的,分享的精神是无限的. 需求: 采集环境箱温度,采集20个通道的电流值,点灯节拍控制:(上位机服务器端复杂) 温度采集模块:(STM32 + ...

  6. STM32项目(一) —— 展示车座椅

    STM32项目(一) -- 展示车座椅 宗旨:技术的分享是有限的,分享的精神是无限的. 功能:模拟人开车时,ACR和ABL的变化. 主控制器:STM32(CAN,串口,网口,输入,输出) 上位机:Li ...

  7. stm32新建工程(详细)

    原文地址:http://blog.csdn.net/lbl1234 下载固件函数库 stm32标准外设库是stm32全系列芯片的外设驱动,有了它可以大大加速我们开发stm32.     首先从st公司 ...

  8. 单片机STM32入门——(1)程序结构

    单片机之STM32入门--(1)程序结构 引言 1.初识单片机 1.1初始配置 1.2程序下载 2.GPIO的使用 2.1资源下载 2.2初始化源代码 3.程序结构 3.1文件的建立 3.2程序结构源 ...

  9. STM32 CubeIDE(九)串口通讯

    STM32 CubeIDE(九)串口通讯 串口通讯 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,大部分电子设备都支持该通讯方式,电子工程师在 ...

最新文章

  1. Aliyun 挂载硬盘
  2. 清华、北邮等高校研究人员实现具有 160 个目标的基于 SSVEP 的免校准 BCI 系统...
  3. 如何模拟将CPU、IO打满?
  4. NOIP2007 树网的核 [BZOJ2282][Sdoi2011]消防
  5. 可执行文件组成及内存映射
  6. php单例型(singleton pattern)
  7. eureka动态扩容_SpringCloud- 第二篇 Eureka快速上手
  8. LeetCode刷题(40)--Search a 2D Matrix
  9. phpfpm内存越来越高_DDR5内存规范发布
  10. springmvc+mybatis多数据源配置,AOP注解动态切换数据源
  11. linux进程fd数量,linux – 文件描述符的数量:/ proc / sys / fs / file-nr和/ proc / $pid / fd之间有什么不同?...
  12. linux 安装org2pg_Ora2Pg的安装和使用
  13. EMNLPICLR 多模态学习前沿分享
  14. Python深度学习(什么是深度学习)----学习笔记(一)
  15. 移动联通基站定位查询
  16. Java政府类网站源码_国产java类cms
  17. 卡西欧函数计算机广告词,卡西欧函数计算器,终身学习如有神助!
  18. 这就是你日日夜夜想要的docker!!!---------Docker常规操作--端口映射、数据卷管理 以及容器互联
  19. django之 报错(1146, “Table ‘demo2.web‘ doesn‘t exist“)
  20. 水深6到9米有鱼吗_我国四大家鱼之一,营养价值高,为何很少有人养殖?|青鱼|养殖|草鱼|罗非鱼|淡水鱼|黑鱼...

热门文章

  1. IJCAI阿里论文 | JUMP: 一种点击和停留时长的协同预估器...
  2. 浪潮成立Inspur DevOps Lab:以应用开发和平台服务打造开发者生态
  3. selenium定位不到元素的原因。
  4. python沙箱逃逸小结
  5. PHP程序员最常犯的11个MySQL错误
  6. 运输层--TCP协议(2)
  7. 【unity3d study ---- 麦子学院】---------- unity3d常用组件及分析 ---------- 组件的生命周期...
  8. TimesTen更改CacheGroup管理用户ORACLE结束和TT结束password【TimesTen操作和维修基地】...
  9. 总结-eclipse
  10. 如何不起协议,R1ping通R3