STM32.SPI(25Q16)
来源:互联网 发布:java在线运行 编辑:程序博客网 时间:2024/05/16 01:15
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也可以多片工作的;(这里用了一片)
切记:端口要一个个定义
②读器件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了(这是一个命令) 0XAB SPI_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(); return Temp;}
看如图:
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
只是器件地址不一样,他们都是华邦公司的嘛
0 0
- STM32.SPI(25Q16)
- STM32.SPI(25Q16)
- STM32.SPI(25Q16)
- STM32 SPI
- STM32 SPI
- STM32 SPI——(2)NSS
- STM32--SPI协议(串行外围设备接口)
- STM32F10x_SPI(硬件接口 + 软件模拟)读写Flash(25Q16)
- STM32F10x_SPI(硬件接口 + 软件模拟)读写Flash(25Q16)
- STM32F10x_SPI(硬件接口 + 软件模拟)读写Flash(25Q16)
- STM32之SPI
- stm32 SPI 收发数据
- STM32 SPI总线
- STM32之间SPI通信
- STM32 SPI学习笔记!
- stm32的spi
- STM32 SPI Flash DFU
- STM32的SPI时钟
- CRC16 算法及c实现
- android开源项目
- 【Android】Android中AlertDialog用法大全
- C Primer Plus(第五版)学习(三)
- 以boost::function和boost:bind取代虚函数
- STM32.SPI(25Q16)
- 理解 pkg-config 工具
- Kafka 安装与入门
- 究竟需要使用检查型Exception还是非检查型Exception(RuntimeException)
- uva--10340+递归
- 详解Eclipse断点(1)
- andorid自定义ViewPager之——子ViewPager滑到边缘后直接滑动父ViewPager
- 第十九课 模板方法设计模式和包机制
- ObjectARX学习笔记(三十三)----如何设置打断实体AcDbCurve