专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
有谁用过w25q128芯片?为什么我用原子的W25Q64程序读出id全是0XFFFF
2019-07-21 01:31
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
3757
24
1416
我的管脚接法和原子一样的直接接到SPI2特殊功能引脚上去了!
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
24条回答
大师VS叫兽
2019-07-23 15:24
关于W25Q64读写问题解决了一半,能读写了。但是不能擦除,求原子哥帮忙看看。
1、看主函数(还是原子哥的原代码改的)
const u8 TEXT_Buffer[]={"WarShipSTM32 SPI TEST"}; //首先这是主函数里面定义需要写入的字符串
#define SIZE sizeof(TEXT_Buffer) //这是字符串的长度
u8 datatemp[SIZE];//读取数据缓存区,长度跟需要写入的数据长度相等
u32 FLASH_SIZE; //这里定义了一个FLASH大小的变量
while(W25QXX_ReadID()!=W25Q64)//这一句把原来的W25Q128改成W25Q64
FLASH_SIZE=128*1024*1024; //这是例程里面的参数(问题就在这里)改成64*512*1024;就好了
//原本我以为W25Q128改成W25Q64就只需要64*1024*1024;后来发现改了
//还是不能读,后来改成64*512*1024就好了,可以写入,可以读。但是写入一次后
//就不能写入第二次了,只能读出数据。必须要进行扇区或者全盘清除才能再次写入数 据,W25Q128是16M位的FLASH,应该是128*1024*1024位。换成字节是除以8等于16*1024*1024字节
W25QXX_Write((u8*)TEXT_Buffer,FLASH_SIZE-100,SIZE);//这个函数中间的FLASH_SIZE-100应该是字节,而不是位,应为一个字母都是1个字节,而写入也是以字节为单位的。(总的来说就是写入的地址超范围了)。。。。
但是我改了以后芯片擦除函数不能用,擦不掉。(郁闷)。还有就是不知道4K扇区擦除函数怎么用,全盘擦除可能比较慢,想用扇区擦除。(求教)
2、对应的库里面也要稍作修改
//u16 W25QXX_TYPE=W25Q128; //W25Q128(原来的128屏蔽)
u16 W25QXX_TYPE=W25Q64; //W25Q64(换成现在自己手工外搭的Q64)
再没有其他的了。现在项目里面需要用到W25Q64,摸了好久。求大神指点指点
加载中...
查看其它24个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
1、看主函数(还是原子哥的原代码改的)
const u8 TEXT_Buffer[]={"WarShipSTM32 SPI TEST"}; //首先这是主函数里面定义需要写入的字符串
#define SIZE sizeof(TEXT_Buffer) //这是字符串的长度
u8 datatemp[SIZE];//读取数据缓存区,长度跟需要写入的数据长度相等
u32 FLASH_SIZE; //这里定义了一个FLASH大小的变量
while(W25QXX_ReadID()!=W25Q64)//这一句把原来的W25Q128改成W25Q64
FLASH_SIZE=128*1024*1024; //这是例程里面的参数(问题就在这里)改成64*512*1024;就好了
//原本我以为W25Q128改成W25Q64就只需要64*1024*1024;后来发现改了
//还是不能读,后来改成64*512*1024就好了,可以写入,可以读。但是写入一次后
//就不能写入第二次了,只能读出数据。必须要进行扇区或者全盘清除才能再次写入数 据,W25Q128是16M位的FLASH,应该是128*1024*1024位。换成字节是除以8等于16*1024*1024字节
W25QXX_Write((u8*)TEXT_Buffer,FLASH_SIZE-100,SIZE);//这个函数中间的FLASH_SIZE-100应该是字节,而不是位,应为一个字母都是1个字节,而写入也是以字节为单位的。(总的来说就是写入的地址超范围了)。。。。
但是我改了以后芯片擦除函数不能用,擦不掉。(郁闷)。还有就是不知道4K扇区擦除函数怎么用,全盘擦除可能比较慢,想用扇区擦除。(求教)
2、对应的库里面也要稍作修改
//u16 W25QXX_TYPE=W25Q128; //W25Q128(原来的128屏蔽)
u16 W25QXX_TYPE=W25Q64; //W25Q64(换成现在自己手工外搭的Q64)
再没有其他的了。现在项目里面需要用到W25Q64,摸了好久。求大神指点指点
一周热门 更多>