OpenEdv-开源电子网

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

W25Q16无法写的是怎么回事

[复制链接]

18

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2016-12-24
在线时间
29 小时
发表于 2016-12-28 20:07:09 | 显示全部楼层 |阅读模式
5金钱
在学习使用W25Q16芯片的时候,发现一个很奇怪的问题,只要使用了写使能命令,BUSY就无法复位,不知道是怎么回事,求帮助!!
2016-12-28 19-58-01.jpg
就是卡在了高亮的那个地方,用于擦除整个芯片,擦除的代码如下 2016-12-28 20-01-34.jpg 2016-12-28 20-01-58.jpg 2016-12-28 20-02-37.jpg
我对了一下基本上和战舰的代码差不多,用战舰的代码可以正常使用,但这个却不行,读字节倒是一点问题也没有,问题就出在Flash_Write_Enable()和WaitForBusy()上,只要是使用了写使能就发现状态寄存器中的BUSY位死活变不回0了,检查了N遍不知道为什么?




最佳答案

查看完整内容[请看2#楼]

好吧,我已经解决了,问题出在F_CS_L和F_CS_H上,这两个的宏定义是#define F_CS_H GPIOA->ODR|=1>>2; #define F_CS_L GPIOA->ODR&=0xFFFB;而后我改成了GPIO_ResetBits(GPIOA,GPIO_Pin_2)和GPIO_SetBits(GPIOA,GPIO_Pin_2)就可以 了,请问这是为什么呢,谁知道?效果都一样的啊??????会不会我忽略了什么?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

18

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2016-12-24
在线时间
29 小时
 楼主| 发表于 2016-12-28 20:07:10 | 显示全部楼层
好吧,我已经解决了,问题出在F_CS_L和F_CS_H上,这两个的宏定义是#define F_CS_H GPIOA->ODR|=1>>2; #define F_CS_L GPIOA->ODR&=0xFFFB;而后我改成了GPIO_ResetBits(GPIOA,GPIO_Pin_2)和GPIO_SetBits(GPIOA,GPIO_Pin_2)就可以 了,请问这是为什么呢,谁知道?效果都一样的啊??????会不会我忽略了什么?
回复

使用道具 举报

18

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2016-12-24
在线时间
29 小时
 楼主| 发表于 2016-12-28 20:08:32 | 显示全部楼层
求助!!都快疯了!!!
回复

使用道具 举报

18

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2016-12-24
在线时间
29 小时
 楼主| 发表于 2016-12-28 21:36:51 | 显示全部楼层
好吧,#define F_CS_H GPIOA->ODR|=1>>2这里错了,应该是#define F_CS_H GPIOA->ODR|=1<<2,这才是置高!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-29 05:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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