STM32.SPI(25Q16)
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)相关推荐
- STM32F10x_SPI(硬件接口 + 软件模拟)读写Flash(25Q16)
推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang 我的网站:h ...
- STM32实战(1):搭建模板工程
" 从今天起我会更新一个STM32实战系列教程,以STM32F103RCT6核心板为例由浅至深的向大家介绍嵌入式软件开发的学习过程,计划是先从最基础的搭建工程开始,到裸机开发,再到各种中间件 ...
- 零基础入门STM32编程(三)
前情回顾 通过前面两篇文章的学习,我们已经对STM32有了一定的了解,知道了STM32单片机的基本分类和不同产品间的特点等知识,今天起围绕STM32F103xx继续深入浅出地学习单片机编程. 一.总线 ...
- STM32项目(六)—— 中文电子捡货标签
STM32项目(六)-- 中文电子捡货标签 宗旨:技术的分享是有限的,分享的精神是无限的. 传统物流行业仓储拣货采用纸单作业,拣货完成后再进行验货.出货,容易造成拣货错误.拣货速度与效率低.新员工培训 ...
- STM32项目(四)——暗室网关
STM32项目(四)--暗室网关 宗旨:技术的学习是有限的,分享的精神是无限的. 需求: 采集环境箱温度,采集20个通道的电流值,点灯节拍控制:(上位机服务器端复杂) 温度采集模块:(STM32 + ...
- STM32项目(一) —— 展示车座椅
STM32项目(一) -- 展示车座椅 宗旨:技术的分享是有限的,分享的精神是无限的. 功能:模拟人开车时,ACR和ABL的变化. 主控制器:STM32(CAN,串口,网口,输入,输出) 上位机:Li ...
- stm32新建工程(详细)
原文地址:http://blog.csdn.net/lbl1234 下载固件函数库 stm32标准外设库是stm32全系列芯片的外设驱动,有了它可以大大加速我们开发stm32. 首先从st公司 ...
- 单片机STM32入门——(1)程序结构
单片机之STM32入门--(1)程序结构 引言 1.初识单片机 1.1初始配置 1.2程序下载 2.GPIO的使用 2.1资源下载 2.2初始化源代码 3.程序结构 3.1文件的建立 3.2程序结构源 ...
- STM32 CubeIDE(九)串口通讯
STM32 CubeIDE(九)串口通讯 串口通讯 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,大部分电子设备都支持该通讯方式,电子工程师在 ...
最新文章
- Aliyun 挂载硬盘
- 清华、北邮等高校研究人员实现具有 160 个目标的基于 SSVEP 的免校准 BCI 系统...
- 如何模拟将CPU、IO打满?
- NOIP2007 树网的核 [BZOJ2282][Sdoi2011]消防
- 可执行文件组成及内存映射
- php单例型(singleton pattern)
- eureka动态扩容_SpringCloud- 第二篇 Eureka快速上手
- LeetCode刷题(40)--Search a 2D Matrix
- phpfpm内存越来越高_DDR5内存规范发布
- springmvc+mybatis多数据源配置,AOP注解动态切换数据源
- linux进程fd数量,linux – 文件描述符的数量:/ proc / sys / fs / file-nr和/ proc / $pid / fd之间有什么不同?...
- linux 安装org2pg_Ora2Pg的安装和使用
- EMNLPICLR 多模态学习前沿分享
- Python深度学习(什么是深度学习)----学习笔记(一)
- 移动联通基站定位查询
- Java政府类网站源码_国产java类cms
- 卡西欧函数计算机广告词,卡西欧函数计算器,终身学习如有神助!
- 这就是你日日夜夜想要的docker!!!---------Docker常规操作--端口映射、数据卷管理 以及容器互联
- django之 报错(1146, “Table ‘demo2.web‘ doesn‘t exist“)
- 水深6到9米有鱼吗_我国四大家鱼之一,营养价值高,为何很少有人养殖?|青鱼|养殖|草鱼|罗非鱼|淡水鱼|黑鱼...
热门文章
- IJCAI阿里论文 | JUMP: 一种点击和停留时长的协同预估器...
- 浪潮成立Inspur DevOps Lab:以应用开发和平台服务打造开发者生态
- selenium定位不到元素的原因。
- python沙箱逃逸小结
- PHP程序员最常犯的11个MySQL错误
- 运输层--TCP协议(2)
- 【unity3d study ---- 麦子学院】---------- unity3d常用组件及分析 ---------- 组件的生命周期...
- TimesTen更改CacheGroup管理用户ORACLE结束和TT结束password【TimesTen操作和维修基地】...
- 总结-eclipse
- 如何不起协议,R1ping通R3