SPI FLASH 状态寄存器一直忙碌,该怎么处理
发布时间:2010-06-14 17:45:40 文章来源:www.iduyao.cn 采编人员:星星草
SPI FLASH 状态寄存器一直忙碌
LPC2132外接W25X16 无论怎么样读写擦除还是向状态寄存器里写数据。都是忙碌状态。
先贴程序
void SPI_init() //初始化
{
PINSEL0 = (PINSEL0&(~(0xff<<8))|0x55<<8);
S0SPCCR = 0x52;
S0SPCR = (0<<3)|(1<<4)|(1<<5)|(0<<6)|(0<<7);
}
void Send_Byte(uint8 out) //发送单字节
{
S0SPDR = out;
while(!(S0SPSR & 0x80))
;
}
uint8 Get_Byte()//接收单字节
{
Send_Byte(0xff);
while(!(S0SPSR & 0x80))
;
return(S0SPDR);
}
void CS_High() //取消片选
{
IOSET0 |= 0x01<<29;
}
void CS_Low() //选中片选
{
IOCLR0 |= 0x01<<29;
}
unsigned char Read_Status_Register() //读状态寄存器
{
uint8 byte = 0;
// char s[5] = {0};
CS_Low(); /* enable device */
Send_Byte(0x05); /* send RDSR command */
byte = Get_Byte(); /* receive byte */
CS_High(); /* disable device */
return byte;
}
void Write_Status_Register(uint8 sr) //写状态寄存器
{
CS_Low();
Send_Byte(0x01);
Send_Byte(sr);
CS_High();
}
void Wait_Busy() //判忙
{
while ((Read_Status_Register()& 0x01) == 0x01) /* wait until not busy */
;
//UARTSend("free\r\n",6);
}
------解决方案--------------------
W25X** C语句
华邦的串口16M/8位FLASH
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
在驱动开发中出现 'struct' type redefinition 应该怎么办?? 大神们告诉小弟一下...
下面是我写的代码:
#pragma once
//**********...
-
大神们帮我看一下,我的代码错在什么地方? 加载成功,卸载就蓝屏了....
/*
*******************************************************...
-
sigma8653很罕见的问题
SOS!
sigma8653板子插上卡,上电后可以识别SD卡,然后软重启(reboot)就无法识别了!
奇怪的时,继续软重启一次又可...
-
Cancel自旋锁 起了什么作用?
发现IoCancelIrp 函数中
获取了Cancel自旋锁
设置了Irp->Cancel
调用了OnCancelIo函数
但是进入了On...
-
windows下 pnp设备的即插即用功能是怎么实现的?
看到 windows内核情景分析里说
加载驱动有三种方式 前两种是静态 分别是引导...
-
取消当前 IRP 执行的过程是怎样的?
#pragma code_seg("PAGE")
NTSTATUS MyWdmRead(PDEVICE_OBJECT DeviceObject,PIRP Irp)
{
...
-
vs2008中,link2001错误的问题,代码如下
vs2008中,link2001错误的问题,代码如下
#include <ntddk.h>
VOID OnUnload(IN PDRIVER_OBJ...
-
什么是内核缓冲区,用户缓冲区
比如网卡的内核缓冲区,那这个缓冲区是在pc内存还是在网卡的芯片上呢?
------解决方案---------------...
-
如果在一个函数中有提升IRQL的语句 是不是整个函数都不能放在分页内存中 ?
如果我在一个函数前使用了 #pragma code_seg("PAGE") ...
-
请教Linux下dm9000网卡驱动程序问题
应用程序网络编程是基于socket接口的,好像完全屏蔽了底层,不能像字符设备那样应用程序可以调用...