OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 43524|回复: 44

有谁用过w25q128芯片?为什么我用原子的W25Q64程序读出id全是0XFFFF

[复制链接]

1

主题

6

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2014-1-18
在线时间
3 小时
发表于 2014-1-18 23:32:41 | 显示全部楼层 |阅读模式
我的管脚接法和原子一样的直接接到SPI2特殊功能引脚上去了!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2021-2-14
在线时间
0 小时
发表于 2021-2-14 18:20:44 | 显示全部楼层
为什么我读出来的id不是EF17而是5217?有遇到相同问题的吗?
回复 支持 7 反对 0

使用道具 举报

4

主题

349

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1046
金钱
1046
注册时间
2017-5-19
在线时间
335 小时
发表于 2017-7-12 11:01:29 | 显示全部楼层
我没有遇到这样的问题,但是我想说有些人只想着获取,而不知道奉献
回复 支持 3 反对 2

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2021-1-11
在线时间
11 小时
发表于 2021-7-27 15:46:27 | 显示全部楼层
qq710524290 发表于 2021-4-3 15:08
我的也是,用0x90指令读来的是5217,用0x9f读来的是522118,你的解决了吗?

可能芯片换了,现在flash芯片型号是NM25
回复 支持 1 反对 0

使用道具 举报

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2018-4-3
在线时间
22 小时
发表于 2019-5-13 23:25:33 | 显示全部楼层


我也是片选线的问题 CS引脚被接到3V3了 指南者开发板 有个跳帽接到了3V3 拔了就好了
回复 支持 1 反对 0

使用道具 举报

7

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2015-4-3
在线时间
6 小时
发表于 2015-11-23 22:32:34 | 显示全部楼层
回复【12楼】gstar0605:
---------------------------------
一样遇到了这个问题,请问你解决了吗
回复 支持 1 反对 0

使用道具 举报

53

主题

608

帖子

0

精华

高级会员

Rank: 4

积分
890
金钱
890
注册时间
2013-3-29
在线时间
18 小时
发表于 2014-1-18 23:49:44 | 显示全部楼层
这,不清楚,帮顶
学电子,学音乐!!
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2014-1-18
在线时间
3 小时
 楼主| 发表于 2014-1-18 23:57:30 | 显示全部楼层
好人!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2014-1-19 12:49:53 | 显示全部楼层
Q128读ID是0XFFFF?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2013-12-23
在线时间
0 小时
发表于 2014-1-21 16:39:06 | 显示全部楼层
这flase芯片好像只能写零,所以要求里面全是1
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2014-1-18
在线时间
3 小时
 楼主| 发表于 2014-1-28 10:18:35 | 显示全部楼层
读出来错的啊!不过我解决了 嘻嘻!
回复 支持 反对

使用道具 举报

26

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2013-3-22
在线时间
0 小时
发表于 2014-4-17 18:51:28 | 显示全部楼层
回复【6楼】yp8282092:
---------------------------------
是什么原因导致读的ID是0XFFFF呢?我现在也在搞W25Q128求个例程参考下可以吗?
回复 支持 反对

使用道具 举报

3

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-4-24
在线时间
0 小时
发表于 2014-7-21 16:40:20 | 显示全部楼层
我同事碰到过,他好像后来写了两条指令,初始化就解决了。
每次写完之后关掉写使能。试试。
No weapon formed against me shall prosper and every tongue that shall rise against thee in judgment thou shalt condemn。
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2014-7-12
在线时间
0 小时
发表于 2014-7-25 16:20:16 | 显示全部楼层
哪个给个例子哇 我也是在搞W25Q128 没弄对呢 谢谢
回复 支持 反对

使用道具 举报

35

主题

227

帖子

3

精华

高级会员

Rank: 4

积分
956
金钱
956
注册时间
2014-3-5
在线时间
35 小时
发表于 2014-9-1 22:14:10 | 显示全部楼层
回复【6楼】yp8282092:
---------------------------------
求大师解释,我用的原子W25Q16程序读Q64一开始是0,后来防止虚焊以及把其他挂载的SPI器件去除了,读出来是ffff。。。也没法正常读写,现在觉得是程序通用性问题,请指点!
把看到的有意义的例子进行扩充,并将其切实的运用到自己的设计中。 应用确实不容易,水平是在不断的实践中完善和发展的。
回复 支持 反对

使用道具 举报

27

主题

259

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
387
金钱
387
注册时间
2014-8-19
在线时间
0 小时
发表于 2014-9-17 16:48:02 | 显示全部楼层
回复【10楼】爱博不专:
---------------------------------
顶一下
回复 支持 反对

使用道具 举报

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2015-7-23
在线时间
3 小时
发表于 2015-8-7 10:01:11 | 显示全部楼层
回复【6楼】yp8282092:
---------------------------怎么解决的啊 我的也是ffff 大神
回复 支持 反对

使用道具 举报

7

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2015-4-3
在线时间
6 小时
发表于 2015-11-23 22:32:18 | 显示全部楼层
回复【10楼】爱博不专:
---------------------------------
一样遇到了这个问题,请问你解决了吗
回复 支持 反对

使用道具 举报

0

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2016-12-22
在线时间
15 小时
发表于 2017-1-6 20:53:27 | 显示全部楼层
yp8282092 发表于 2014-1-28 10:18
读出来错的啊!不过我解决了 嘻嘻!

请问是如何解决的.....被这个问题困扰....
回复 支持 反对

使用道具 举报

0

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2016-12-22
在线时间
15 小时
发表于 2017-1-6 20:57:01 | 显示全部楼层

不是用原子哥的程序,但是程序在开发板上的EN25Q64用得了,然而换到自己板子上,只是换了FLASH_CS,换成了W25Q64(地址改成了EF14),就用不了了......

/* ¶¨òåFLASH ê1óÃμÄIO¿ú */
#define FLASH_CS_SET GPIO_SetBits(GPIOB, GPIO_Pin_12)
#define FLASH_CS_CLR GPIO_ResetBits(GPIOB, GPIO_Pin_12)
/*#define FLASH_CS_CLR {GPIO_ResetBits(GPIOG, GPIO_Pin_13);\
GPIO_SetBits(GPIOG, GPIO_Pin_14);GPIO_SetBits(GPIOB, GPIO_Pin_12);}*/

/* ¶¨òå¸÷¸öFLASHμÄID */
#define EN25Q80         0X1C13        
#define EN25Q16         0X1C14
#define EN25Q32         0X1C15
//#define EN25Q64         0X1C16
#define EN25Q64         0Xc816
#define W25Q64                 0XEF16


u16 FLASH_ReadID(void)
{
        u16 ID = 0;
       
        FLASH_CS_CLR;                                                                    //′ò¿aƬѡ
       
        SPI2_WriteReadData(0x90);                                                        //·¢Ëí¶áè¡IDÃüáî            
        SPI2_WriteReadData(0x00);             
        SPI2_WriteReadData(0x00);             
        SPI2_WriteReadData(0x00);

        ID |= SPI2_WriteReadData(0xFF) << 8;         //&#182;áè&#161;16&#206;&#187;ID
        ID |= SPI2_WriteReadData(0xFF);
                 
        FLASH_CS_SET;                                                                                                         //1&#216;±&#213;&#198;&#172;&#209;&#161;   
        return ID;       
}

void CheckFlash(void)
{
        u16 FID;
        FID = FLASH_ReadID();
        while(FID != EN25Q64)                                                                                                                                                                                       
  {
                USART_SendData(USART1,(u8)(FID>>8));
                while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET){}
                USART_SendData(USART1,(u8)(FID));
                while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET){}
                FID = FLASH_ReadID();
  }
}
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2014-3-31
在线时间
23 小时
发表于 2017-3-3 14:54: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,摸了好久。求大神指点指点
回复 支持 反对

使用道具 举报

11

主题

85

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2016-3-16
在线时间
15 小时
发表于 2017-3-22 18:28:39 | 显示全部楼层

我现在把用户RFID的卡号和密码全部事先存入W25Q128中,当有卡进入RC522的天线区域内时读取卡号和事先存储的所有卡号进行对比,
现在我不太明白怎么样寻找flash中和读到的卡号一样的卡号
回复 支持 反对

使用道具 举报

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2017-4-6
在线时间
8 小时
发表于 2017-5-21 23:25:57 | 显示全部楼层
yp8282092 发表于 2014-1-28 10:18
读出来错的啊!不过我解决了&nbsp;嘻嘻!

你的是怎么解决的啊     我也遇到相似的问题了  时序都对   ID就是0xff
回复 支持 反对

使用道具 举报

29

主题

73

帖子

0

精华

高级会员

Rank: 4

积分
511
金钱
511
注册时间
2015-10-11
在线时间
102 小时
发表于 2017-7-12 08:52:31 | 显示全部楼层
大师VS叫兽 发表于 2017-3-3 14:54
关于W25Q64读写问题解决了一半,能读写了。但是不能擦除,求原子哥帮忙看看。

1、看主函数(还是原子哥 ...

这个你是怎么理解的后来,我也碰见了这样的问题啊,明明W25Q128是16M字节的,但是这里应该是超范围了吧,但是怎么就是可以运行呢
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2018-8-15
在线时间
6 小时
发表于 2018-8-15 04:32:42 | 显示全部楼层
同样的问题,含泪顶帖求助!

在正点精英版上面试验是完全正常(W25Q128),照样搬到我自己的板子上面去(W25Q64,一样的接法),就FFFF了

论坛里面搜出好几个帖子,都只有同样的问题,却木有答案

天快亮了,我得去哭一会儿先。。。
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2018-8-15
在线时间
6 小时
发表于 2018-8-16 02:08:00 | 显示全部楼层
搞定。是我自己的片选线搞错了
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2018-4-3
在线时间
22 小时
发表于 2019-5-13 23:25:06 | 显示全部楼层

我也是片选线的问题 CS引脚被接到3V3了 指南者开发板 有个跳帽接到了3V3 拔了就好了
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2019-8-13
在线时间
24 小时
发表于 2019-8-14 16:10:08 | 显示全部楼层
遇到过,貌似片选脚没有设置对,
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2019-6-5
在线时间
1 小时
发表于 2019-8-19 08:56:21 | 显示全部楼层
遇到这种问题先检查片选CS,有两种情况,1.是否是先拉低电平再进行读写操作,2.是否插错引脚
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-11-28
在线时间
1 小时
发表于 2019-11-28 23:45:15 | 显示全部楼层
这个是片选的问题。初始化后片选管脚先拉高。后面就不会出线这个问题
回复 支持 反对

使用道具 举报

4

主题

10

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
231
金钱
231
注册时间
2018-1-5
在线时间
56 小时
发表于 2020-8-4 22:58:03 | 显示全部楼层
kingsun 发表于 2014-7-21 16:40
我同事碰到过,他好像后来写了两条指令,初始化就解决了。
每次写完之后关掉写使能。试试。

请问具体时怎么解决的
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2021-1-18
在线时间
2 小时
发表于 2021-2-19 00:06:28 | 显示全部楼层
ilovely 发表于 2021-2-14 18:20
为什么我读出来的id不是EF17而是5217?有遇到相同问题的吗?

同样也是5217,试了JEDEC ID读取24位ID的方式,获取到的也不是EF4018,而是522118
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2021-1-15
在线时间
4 小时
发表于 2021-2-21 19:40:03 | 显示全部楼层
我也是同样的问题,JEDEC ID is 0x522118, Manufacturer Device ID is 0xFF
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2021-3-24
在线时间
0 小时
发表于 2021-3-24 22:16:00 | 显示全部楼层
若谷 发表于 2019-5-13 23:25
我也是片选线的问题 CS引脚被接到3V3了 指南者开发板 有个跳帽接到了3V3 拔了就好了

哇,谢谢兄弟,这个问题困扰好久了,原来板子上有个跳帽没拔
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2021-4-3
在线时间
8 小时
发表于 2021-4-3 15:08:28 | 显示全部楼层
ilovely 发表于 2021-2-14 18:20
为什么我读出来的id不是EF17而是5217?有遇到相同问题的吗?

我的也是,用0x90指令读来的是5217,用0x9f读来的是522118,你的解决了吗?
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2021-4-3
在线时间
8 小时
发表于 2021-4-3 15:09:27 | 显示全部楼层
于晏 发表于 2021-2-19 00:06
同样也是5217,试了JEDEC ID读取24位ID的方式,获取到的也不是EF4018,而是522118

我的也是,那位大佬知道怎么解决啊
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2021-1-10
在线时间
6 小时
发表于 2021-4-29 08:05:32 | 显示全部楼层
ilovely 发表于 2021-2-14 18:20
为什么我读出来的id不是EF17而是5217?有遇到相同问题的吗?

我的也是
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2021-3-28
在线时间
6 小时
发表于 2021-5-30 20:07:33 | 显示全部楼层
巧了 我的也是

同样也是5217,试了JEDEC ID读取24位ID的方式,获取到的也不是EF4018,而是522118
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2021-3-28
在线时间
6 小时
发表于 2021-5-31 15:01:32 | 显示全部楼层
you呦 发表于 2021-2-21 19:40
我也是同样的问题,JEDEC ID is 0x522118, Manufacturer Device ID is 0xFF

兄弟你的问题解决了吗 ?求助呀
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2021-3-28
在线时间
6 小时
发表于 2021-5-31 15:01:55 | 显示全部楼层
于晏 发表于 2021-2-19 00:06
同样也是5217,试了JEDEC ID读取24位ID的方式,获取到的也不是EF4018,而是522118

兄弟你的问题解决了吗 ?求助呀
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2015-9-4
在线时间
11 小时
发表于 2021-7-13 16:54:13 | 显示全部楼层
ilovely 发表于 2021-2-14 18:20
为什么我读出来的id不是EF17而是5217?有遇到相同问题的吗?

我读出来也是5217,请问你解决了么?
陆正孝
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2021-8-1
在线时间
1 小时
发表于 2021-8-1 22:52:48 | 显示全部楼层
cunzhang521 发表于 2015-11-23 22:32
回复【12楼】gstar0605:
---------------------------------
一样遇到了这个问题,请问你解决了吗

我也遇到了一样问题,请问您解决了吗
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2022-2-20
在线时间
4 小时
发表于 2022-3-1 19:59:09 | 显示全部楼层
我也遇到了这个问题,检查一下CS高低电平是不是有问题(可以交换一下),我用这个办法解决了。
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2022-3-2
在线时间
2 小时
发表于 2022-3-17 10:25:59 | 显示全部楼层
ilovely 发表于 2021-2-14 18:20
为什么我读出来的id不是EF17而是5217?有遇到相同问题的吗?

我也是 你弄好了么 这个卡了一天了
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2020-6-16
在线时间
1 小时
发表于 2022-3-25 11:03:42 | 显示全部楼层
ilovely 发表于 2021-2-14 18:20
为什么我读出来的id不是EF17而是5217?有遇到相同问题的吗?

兄弟,我也是,请问解决了嘛
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 20:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表