完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
开发板用的是f030c8t6,w25q16读出来的是EF14,为w25q16的flash,但是写数据之后读出来全是0,请问各位大神是什么原因,我的代码如下
//spi读写函数--模式0 //_data:待发送的数据,如果是接收模式,发送的数据则应该是0xff //返回值:接收到的数据。如果是发送模式,返回值可以丢弃 u8 SPI1_ReadWriteByte(u8 _data) { u8 i; for(i=0;i<8;i++) { if(_data 0x80) //高位在前 { MOSI_1; } else { MOSI_0; } SCK_1; _data=_data<<1; delay_us(2); if(GPIOA ->IDR 0x01<<6) //判断收到的数据 { _data=_data | 0X01; } SCK_0; delay_us(2); } return _data; } //返回值如下: //0XEF13,表示芯片型号为W25Q80 //0XEF14,表示芯片型号为W25Q16 //0XEF15,表示芯片型号为W25Q32 //0XEF16,表示芯片型号为W25Q64 uint16_t SPI_Flash_ReadID(void) { uint32_t Temp = 0; GPIOA ->ODR =~(0x01<<4); SPI1_ReadWriteByte(W25X_ManufactDeviceID);//发送读取ID命令 SPI1_ReadWriteByte(0x00); SPI1_ReadWriteByte(0x00); SPI1_ReadWriteByte(0x00); Temp|=SPI1_ReadWriteByte(0xFF)<<8; Temp|=SPI1_ReadWriteByte(0xFF); GPIOA ->ODR |=0x01<<4; return Temp; } //读取SPI FLASH //在指定地址开始读取指定长度的数据 //pBuffer:数据存储区 //ReadAddr:开始读取的地址(24bit) //NumByteToRead:要读取的字节数(最大65535) void SPI_Flash_Read(uint8_t* pBuffer,uint32_t ReadAddr,uint16_t NumByteToRead) { uint16_t i; GPIOA ->ODR =~(0x01<<4); //使能器件 SPI1_ReadWriteByte(W25X_ReadData); //发送读取命令 SPI1_ReadWriteByte((uint8_t)((ReadAddr)>>16)); //发送24bit地址 SPI1_ReadWriteByte((uint8_t)((ReadAddr)>>8)); SPI1_ReadWriteByte((uint8_t)ReadAddr); for(i=0;iODR |=0x01<<4; } //SPI在一页内写入少于256个字节的数据 //在指定地址开始写入最大256字节的数据 //pBuffer:数据存储区 //WriteAddr:开始写入的地址(24bit) //NumByteToWrite:要写入的字节数(最大256),该数不应该超过该页的剩余字节数!!! //函数使用的限定WriteAddr/256==(WriteAddr+NumByteToWrite-1)/256 //在用这个函数前已经确认了待写入区域全为0xff void SPI_Flash_Write_Page(uint8_t* pBuffer,uint32_t WriteAddr,uint16_t NumByteToWrite) { uint16_t i; SPI_FLASH_Write_Enable(); //SET WEL GPIOA ->ODR =~(0x01<<4); //使能器件 SPI1_ReadWriteByte(W25X_PageProgram); //发送写页命令 SPI1_ReadWriteByte((uint8_t)((WriteAddr)>>16)); //发送24bit地址 SPI1_ReadWriteByte((uint8_t)((WriteAddr)>>8)); SPI1_ReadWriteByte((uint8_t)WriteAddr); for(i=0;iODR |=0x01<<4; //取消片选 SPI_Flash_Wait_Busy(); //等待写入结束 } |
|
相关推荐
1个回答
|
|
是显示函数的问题
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1649 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1566 浏览 1 评论
994 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
693 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1613 浏览 2 评论
1871浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
656浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
526浏览 3评论
543浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
515浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 13:43 , Processed in 0.827752 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号